Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Чт ноя 23, 2017 3:11 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 455 сообщений ]  На страницу Пред. 127 28 29 30 31 След.
Автор Сообщение
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 8:10 am 
А может это плеер не совсем правильно обрабатывает кнопки? Все остальные программы ведь закрываются. Ни у кого больше проблемы с закрытием нет. по крайне мере никто за прошедшее время не написал жалоб.


Вернуться к началу
   
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 8:16 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario
Плеер как раз правильно обрабатывает кнопки. Только это не системные кнопки. И поскольку ты закомментировал код он теперь не получает сообщений при клике в области заголовка.
Запускаю KFM, кликаю на пиктограме в меню и не отпуская кнопки веду курсор вниз. Кликаю на зелёной кнопке "Help" и не отпуская кнопки ведут курсор вверх. И причем здесь заголовок ?


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 8:42 am 
Вообще то он не получает события мыши если удерживать кнопку. А когда отпускается кнопка то события продолжают поступать. Ситуация неоднозначная. Если бы проблема была только в KFM, то я бы не парился. Однако код компонента FileBrowser унаследовал код KFM.


Вернуться к началу
   
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 8:51 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario
Надо проверять область, где нажата кнопка и ставить флаг, если это список. И снимать флаг когда кнопка отпущена.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 8:54 am 
У меня есть мысль. Если новый флаг маски событий, который ты ввел недавно, используется для плеера, то можно учитывать его наличие и игнорировать мою коррекцию.


Вернуться к началу
   
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 8:59 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario
Я сделаю окно со стилем 5. Специально для окон, которые всю работу по перемещению и изменению размеров делают сами.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 9:03 am 
get_event_for_app работает для всех окон. Я не понимаю как ты собираешься это обходить? В моей идее все просто - проверяю установлен ли бит 31, если да то код:
Код:
        push    eax
; If the window is captured and moved by the user, then no mouse events!!!
        mov     al, [mouse.active_sys_window.action]
        and     al, WINDOW_MOVE_AND_RESIZE_FLAGS
        test    al, al
        pop     eax
        jnz     .loop

не будет выполнятся. Всего то делов! Зачем городить огород с новым типом?


Вернуться к началу
   
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 9:18 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario
Плеер сам изменят размер окна, без участия ядра. Но ядро обрабатывает все события в заголовке, причём положение заголовка определяется ядром. Я не могу разместить его сбоку. Если я в плеере кликаю на кнопке в заголовке и двигаю мышь, ядро перемещает окно. Хотя это не требуется. От ядра требуется только активация окна и правильная карта отсечения. Поэтому я хочу сделать новый тип. Чем меньше ядро обрабатывает оконные события тем больше у меня возможностей. Для ядра это стиль "не делать ничего с этим окном"


Последний раз редактировалось Serge Чт мар 01, 2012 9:21 am, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 9:20 am 
Ладно делай как знаешь, но для 31 бита я добавляю исключение в существующую схему. Код уже сделал и сейчас залью в SVN.


Вернуться к началу
   
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 9:22 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario
Потом эту заплатку надо будет убрать.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 9:24 am 
Не раньше чем исправлю box_lib и kfm.

З.Ы. Залил SVN r. 2426.


Вернуться к началу
   
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 9:31 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Я пр исключение для 31 бита.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт мар 01, 2012 9:37 am 
Сейчас схема такая:
- если бит 31 не установлен и приложение само отлавливает что оно находится на вершине оконного стека (проверка на уровне приложения), то при захвате заголовка (для перемещения окна) или захвате нижнего-правого угла (при изменении размеров окна) события мыши для этого окна фильтруются.
- если бит 31 установлен, и события мыши посылаются только если окно находится на вершине оконного стека (проверка на уровне ядра), то при захвате заголовка (для перемещения окна) или захвате нижнего-правого угла (при изменении размеров окна) события мыши для этого окна не фильтруются.

Когда я исправлю box_lib и kfm, то уберу всю логику:
Спойлер: Показать
Код:
        cmp     eax, 5; Mouse 5+1=6
        jne     .no_mouse_check
        push    eax
        mov     eax, [TASK_BASE]
        mov     eax, [eax + TASKDATA.event_mask]
        test    eax, 0x80000000 ; bit 31: active/inactive filter f.40
        jz      @f
        pop     eax
        jmp     .no_mouse_check
@@:
; If the window is captured and moved by the user, then no mouse events!!!
        mov     al, [mouse.active_sys_window.action]
        and     al, WINDOW_MOVE_AND_RESIZE_FLAGS
        test    al, al
        pop     eax
        jnz     .loop
.no_mouse_check:

Хотя если честно, то с такой логикой можно уже ничего не исправлять. :lol:


Вернуться к началу
   
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Пн май 27, 2013 10:32 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Прежде, чем пускаться во все тяжкие с long mode, я решил немного почистить ядро. Для начала перенесу все константные переменные вида
Код:
MOUSE_SCROLL_H      equ (OS_BASE+0x000FB08)
MOUSE_X             equ (OS_BASE+0x000FB0A)
MOUSE_Y             equ (OS_BASE+0x000FB0C)
MOUSE_SCROLL_V      equ (OS_BASE+0x000FB0E)

MOUSE_COLOR_MEM     equ (OS_BASE+0x000FB10)
COLOR_TEMP          equ (OS_BASE+0x000FB30)
BTN_DOWN            equ (OS_BASE+0x000FB40)
MOUSE_DOWN          equ (OS_BASE+0x000FB44)
X_UNDER             equ (OS_BASE+0x000FB4A)
Y_UNDER             equ (OS_BASE+0x000FB4C)
в data32.inc, чтобы одни выглядели так
Код:
MOUSE_PICTURE     rd 1

MOUSE_SCROLL_H    rw 1
MOUSE_X:          rw 1
MOUSE_Y:          rw 1
MOUSE_SCROLL_V    rw 1

X_UNDER           rw 1
Y_UNDER           rw 1
COLOR_TEMP        rd 1
MOUSE_COLOR_MEM   rd 1
а другие так
Код:
SLOT_BASE:      rb 64*1024
DRIVE_DATA:     rb 64*1024
RESERVED_PORTS: rb 64*1024
FLOPPY_BUFF:    rb 16*1024
BUTTON_INFO:    rb 16*1024
BgrAuxTable:    rb 32*1024
skin_data:      rb 32*1024
window_data:    rb 8192
CURRENT_TASK:   rb 8192
draw_data:      rb 4096
WIN_STACK:      rb 0x400
WIN_POS:        rb 0x800
и если у меня хватит терпения, сделаю краткое описание некоторых переменных ядра.

Изучение завалов поставило поставило несколько вопросов
Нужно ли массиву DRIVE_DATA 65536 байт ?
Нужно ли по 32768 байт для хранения скина и для BgrAuxTable ?
Сколько на самом деле памяти требуют
BTN_BUFF equ (OS_BASE+0x000F501)
BPSLine_calc_area equ (OS_BASE+0x02C4000) и
d_width_calc_area equ (OS_BASE+0x02CA000) ?

Нужен ли рестарт ядра, если usb клавиатура больше не эмулируется, да и сам рестарт работает не у всех ?


Последний раз редактировалось Serge Пн май 27, 2013 10:36 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Пн май 27, 2013 10:36 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1232
Good work serge, perhaps you can get some ideas from the work already done by mike.dld in ostin kernel (https://github.com/ostin-project/ostin-kernel)

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 455 сообщений ]  На страницу Пред. 127 28 29 30 31 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB