Page 1 of 2

Вопросики о курсоре

Posted: Sat Mar 16, 2013 2:16 am
by lev
Программка xo1.kex (см. аттач). Должна при каждом клике менять курсор.
Под KlbrInWin - работает как задумано, под Qemu курсор меняется, не при клике, а при клике и последующем сдвиге курсора.
---
xo3.kex - после смены курсора програмно сдвигаю его на 1 пиксель в сторону
в Qemu - курсор меняется, но сдвижки не хочется. В KlbrInWin сдвижка происходит не на пиксель, а аж вылетает за пределы формы.
---
xo4.kex - вариант со сдвижкой и возвратом в ту же координату
в Qemu курсор не меняется, опять требуется hexyfz сдвижка, в KlbrInWin дребезг курсора, видимо успевает несколько раз сменить курсор пока нажата кнопка.
xo2.kex - курсоры с полупрозрачностью
В KlbrInWin отображаются нормально, в Qemu мусор. В хелпе написано - "файл курсора должен быть в формате .cur, стандартном для MS Windows", на прозрачность ограничений не накладывается.
Вопросы - кто виноват и что делать работает ли xo1.kex как положено не в эмуляторах, а на реальной системе (сам проверить не могу). Если работает, то есть ли эмулятор в котором тоже работает, чтобы перейти на него с Qemu.
То же самое, касаемо полупрозрачных курсоров из xo2.kex.
Не знаю, соотносятся ли мои вопросы с предыдущими курсорными темами, если надо, то объедините

Re: Вопросики о курсоре

Posted: Sat Mar 16, 2013 9:54 am
by Serge
Полупрозрачность будет только на аппаратных курсорах и то смотря как биты в драйвере выставлены.

Re: Вопросики о курсоре

Posted: Sat Mar 16, 2013 11:42 am
by 0CodErr
курсор меняется, не при клике, а при клике и последующем сдвиге курсора.
У меня такая же проблема в fNav. В той теме я писал, что он у меня меняется не сразу, а только если подвигать мышью, поэтому приходится делать это программно.

С прозрачными курсорами тоже проблема.
Spoiler:В VirtualBox работает правильно:
Image

На реальной системе без драйвера — тоже правильно:
Image

А вот с драйвером — не совсем:
Image

Baby Painter #2

Posted: Tue Oct 01, 2013 1:22 am
by Leency
EDIT by yogev_ezra: Обсуждение курсора перенесено по просьбе lev из темы Baby Painter.
lev wrote:Угу, я этому даже темку посвящал - Вопросики о курсоре.
Точно, видел. Почему бы пока что не использовать такой подход:
0CodErr wrote:У меня такая же проблема в fNav. В той теме я писал, что он у меня меняется не сразу, а только если подвигать мышью, поэтому приходится делать это программно.

Re: Baby Painter

Posted: Tue Oct 01, 2013 1:46 am
by lev
Двигал - не понравилось. Лучше починки дождусь.

Re: Baby Painter

Posted: Tue Oct 01, 2013 2:05 am
by Mario_r4
lev wrote:Двигал - не понравилось. Лучше починки дождусь.
Вот так вот и остальные "Ладно, я тут забегу через полгода-год может у вас что тогда поменяется."

Re: Baby Painter

Posted: Tue Oct 01, 2013 2:31 am
by lev
Зачем костыль в программе? В 37.5 должна быть принудительная перерисовка курсора.
Допустим я подозреваю, что в svn\kolibri\kernel\trunk\video\cursors.inc - proc set_cursor или в kernel.asm - app_set_cursor: должно быть воткнуто что-то вроде:
mov [redrawmouse_unconditional], 1
call __sys_draw_pointer
Но я с ядром дела не имел, портить проверять не полезу. А ядерщику имхо несложно поправить, или наоборот опровергнуть меня и указать, что подобной правкой мы затронем 100500 других функций, не учтём over 9000 ситуаций и править надо совсем в другом месте и совершенно не то и т.п.
Я подожду.

Re: Baby Painter

Posted: Tue Oct 01, 2013 3:26 am
by Mario_r4
lev wrote:Но я с ядром дела не имел, портить проверять не полезу. А ядерщику имхо несложно поправить, или наоборот опровергнуть меня и указать, что подобной правкой мы затронем 100500 других функций, не учтём over 9000 ситуаций и править надо совсем в другом месте и совершенно не то и т.п.
Я подожду.
Ну, жди. У ядерщиков есть и другие более насущные вопросы, и ты не поверишь у них существует даже IRL насущные вопросы. :lol:

Re: Baby Painter

Posted: Tue Oct 01, 2013 4:30 am
by lev
Leency wrote:"Ладно, я тут забегу через полгода-год может у вас что тогда поменяется."
:D

Re: Baby Painter

Posted: Tue Oct 01, 2013 10:01 am
by Leency
Mario_r4
То, что нет времени самая левая отмазка :) Помог бы человеку, хоть советом.

Re: Baby Painter

Posted: Tue Oct 01, 2013 10:21 am
by Mario_r4
Leency wrote:Mario_r4
То, что нет времени самая левая отмазка :) Помог бы человеку, хоть советом.
Для меня что помогать советом, что самому код смотреть одинаково. Лень тут совершенно не при чем - у меня действительно недостаток времени наблюдается.

Re: Baby Painter

Posted: Tue Oct 01, 2013 11:06 am
by Leency
lev
В таком случае, нужно просто брать и править код. Вначале протестировать у себя на машине, перед заливкой в транк. Если вылезут старые ошибки - это прекрасно, их можно будет исправить. Вылезут новые, тоже можно будет исправить, а ели что откатить изменения.
Вообще исправление багов - это всегда два шага вперёд, один назад. Так что не бойся, фиксь транк, фиксь его полностью.

Re: Baby Painter

Posted: Tue Oct 01, 2013 11:40 am
by Serge
lev
Немного хитрее. Курсор всегда отрисовывается потоком ядра.

Code: Select all

        mov     [redrawmouse_unconditional], 1
        call    wakeup_osloop

Re: Вопросики о курсоре

Posted: Tue Nov 05, 2013 11:41 pm
by lev
Попытка правки фукции 37.5
Не нашел wakeup_osloop, поэтому воспользовался первым методом из собственного поста.
Тестировать можно на файликах из данной темы и на BabyPainter

Re: Вопросики о курсоре

Posted: Wed Nov 06, 2013 12:46 am
by Leency
BabyPainter пофикшен. Может мне кажется, иконки не стали больше моргать при перетаскивании?