Курсоры

Assembler programming questions
  • Разобрался как проверяются боксы и рисунки, там используется 'WinMapAddress' имеющий тот же адрес что и 'display_data'.

    Pavia
    Я бы не стал выносить курсор из ядра, номер процесса нужен только для идентификации точки как курсорной. Если ядро не имеет своих точек на экране, то никаких новых процессов фиксировать не зачем.

    Вопрос: незанятые приложениями точки рабочего стола имеют нулевой идентификатор процесса или ядра?
  • Незанятые приложениями точки экрана заняты ядром - оно там, между прочим, рисует фон, и код отрисовки фона работает только с пикселами процесса 1 (aka OS/IDLE).
    Если увеличить размер данных точки в display_data до двух байт, то и памяти этот буфер будет жрать в два раза больше.
  • А процесс с 0-м номером существует? (По крайней мере используется в WinMapAddress?)
  • Люди, знаете или нет что если демки из папки "3D" закрывать по крестику (соответствующей кнопке), то курсор не исчезает. А вот если закрывать по Alt+F4 (как все и делают, т.к. в окне курсор слишком сильно мерцает), то курсор исчезает с некоторой вероятностью ~50x50.
  • вроде бы замечал такое
  • Alver
    Процесса с номером 0 не существует.
    Leency
    Знаем. Это объясняется тем, что закрытие по крестику - корректное закрытие, поскольку в этом случае система всего лишь сообщает программе, что пользователь приказывает программе закрыться (а программа вольна уточнить у пользователя, действительно ли он этого хочет, что делать с несохранёнными данными, а в принципе может вообще это игнорировать), а при нажатии на Alt+F4 панель безусловно прибивает процесс, не давая ему никаких шансов на очистку - в результате с некоторой вероятностью процесс был в процессе отрисовки, когда курсор выключен, и тогда курсор уже не включается.
    Ушёл к умным, знающим и культурным людям.
  • А если приложения прибивает @Panel, нельзя ли сделать что-бы оно само восстанавливало курсор?
  • Понял откуда иногда выскакивают некоторые артефакты.
    (Например затирание куска сноски 'end' на панели при выборе меню выход, или перекрытие хвоста курсора приложением и т.п.)
    В проце '__sys_disable_mouse' (и возможно не только) при проверки на необходимость стирания курсора проверяется вариант курсора 16x16,
    в то время как на самом деле он 32x32.:roll:

    mistifi(ator
    А если приложения прибивает @Panel, нельзя ли сделать что-бы оно само восстанавливало курсор?
    Половинчатая мера - процесс можно будет убить и другими приложениями.:(
    Чтобы грамотно закрывать процесс необходимо сопоставить ему еще один флаг на состояние курсора, хотябы 1 бит а лучше 2 : 1 - включен/нет а 2 - заморожен/нет( если будет вариант с отрисовкой точек в буфере курсора) :wink:
  • Я ошибся, '__sys_disable_mouse' не проверяет 16x16, но очепятка кажется есть.

    Code: Select all

     
          mov   ebx,[ScreenWidth]
          inc   ebx
          imul  ebx,10
    
    Мне думается надо 'imul ebx, 24'
    Кроме того интересно, так как нет проверки на зашкаливание хвоста курсора за границы экрана, не случаются ли глюки с курсором на максимальном разрешении kolibri?
  • Alver
    Кроме того интересно, так как нет проверки на зашкаливание хвоста курсора за границы экрана, не случаются ли глюки с курсором на максимальном разрешении kolibri?
    Нет.
  • Проверка есть, в функции рисования пиксела.
  • diamond wrote:Alver
    Процесса с номером 0 не существует.
    Leency
    Знаем. Это объясняется тем, что закрытие по крестику - корректное закрытие, поскольку в этом случае система всего лишь сообщает программе, что пользователь приказывает программе закрыться (а программа вольна уточнить у пользователя, действительно ли он этого хочет, что делать с несохранёнными данными, а в принципе может вообще это игнорировать), а при нажатии на Alt+F4 панель безусловно прибивает процесс, не давая ему никаких шансов на очистку - в результате с некоторой вероятностью процесс был в процессе отрисовки, когда курсор выключен, и тогда курсор уже не включается.
    Мне кажется, если сделать так, чтобы нажатие Alt+F4 посылало тот же сигнал, что и нажатие кнопки закрытия, то это поможет.
  • Я рылся в старых доках и случайно наткнулся на одну статью.Читайте вырезку ниже.
    Мужики возможно я ошибаюсь,но мне кажется что мышь мерцает из-за того что в Колибри нет двойной буферизации видео памяти.Если я не прав то оъясните в чем.
    Last edited by Rock_maniak_forever on Mon Feb 09, 2009 6:12 am, edited 3 times in total.
  • Rock_maniak_forever
    Нам достаточно сказать "двойная буферизация", чтобы всё было понятно. Не обязательно приводить никому не нужную цитату и выделять её синим цветом.
    in code we trust
  • Who is online

    Users browsing this forum: No registered users and 13 guests