Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пн дек 17, 2018 7:00 am

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




Начать новую тему  Ответить на тему  [ 21 сообщение ]  На страницу Пред. 1 2
Автор Сообщение
СообщениеДобавлено: Пн сен 24, 2018 3:28 pm 
Не в сети

Зарегистрирован: Сб апр 22, 2017 6:11 pm
Сообщения: 219
Pathoswithin писал(а):
Какая мотивация? В идеале, что баг большой, страшный, и если его не победить, то он нас всех сожрёт. У нас тут куча мелких багов, на которые всем насрать. Да, и мне тоже; себя мотивировать так же непросто.

По ходу дела эти баги нас всех заклюют, а не сожрут! :) И слева нас рать, и справа нас рать, Колибри рано ещё помирать.


Вернуться к началу
СообщениеДобавлено: Вт сен 25, 2018 5:23 pm 
Не в сети

Зарегистрирован: Сб апр 22, 2017 6:11 pm
Сообщения: 219
theonlymirage писал(а):
Багов с подобным механизмом много (имею в виду особый механизм обработки мыши в заголовке и кнопок заголовка), например:
Запускаем калькулятор. Ставим его окно рядом с доком, но желательно не вплотную. Нажимаем по заголовку окна калькулятора правой кнопкой мыши, чтобы окно сжалось в заголовок. Нажимаем кнопку свернуть в заголовке окна калькулятора. Наводим курсор мыши на док, док появляется. Отводим мышь обратно на то место, где был калькулятор: док исчезает, а сжатое в заголовок окно калькулятора появляется на экране (напомню, мы его свернули и явно не раскрывали). Теперь развернуть окно калькулятора почти никак нельзя, только перезапускать.
С Tinypad в этом случае ещё хуже. Зато у EOLite всё ок, он принудительно разворачивает своё окно.



Видео по описанному багу с зависанием системы при выключении/перезагрузке системы (последнее воспроизводится редко, точная суть явления зависания не выяснена).


Вернуться к началу
СообщениеДобавлено: Вт сен 25, 2018 5:44 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
theonlymirage писал(а):
theonlymirage писал(а):
Багов с подобным механизмом много (имею в виду особый механизм обработки мыши в заголовке и кнопок заголовка), например:
Запускаем калькулятор. Ставим его окно рядом с доком, но желательно не вплотную. Нажимаем по заголовку окна калькулятора правой кнопкой мыши, чтобы окно сжалось в заголовок. Нажимаем кнопку свернуть в заголовке окна калькулятора. Наводим курсор мыши на док, док появляется. Отводим мышь обратно на то место, где был калькулятор: док исчезает, а сжатое в заголовок окно калькулятора появляется на экране (напомню, мы его свернули и явно не раскрывали). Теперь развернуть окно калькулятора почти никак нельзя, только перезапускать.
С Tinypad в этом случае ещё хуже. Зато у EOLite всё ок, он принудительно разворачивает своё окно.

Видео по описанному багу с зависанием системы при выключении/перезагрузке системы (последнее воспроизводится редко, точная суть явления зависания не выяснена).

Это действие каким-то образом меняет HEIGHT и CLIENT_HEIGHT у окон.


Вложения:
bug.png
bug.png [ 69.94 КБ | 334 просмотра ]

_________________
Через тернии к звездам
Вернуться к началу
СообщениеДобавлено: Вт сен 25, 2018 5:52 pm 
Не в сети

Зарегистрирован: Сб апр 22, 2017 6:11 pm
Сообщения: 219
То, что меняет размер это ожидаемо. Я ошибался, когда считал, что окно нужно подносить к доку и потом курсор обратно вести на область окна. Не нужно. Просто откройте любое окно, сверните его, наведите курсор на док и верните мышь поверх рабочего стола. Свёрнутое окно появится само.
Так воспроизвести баг значительно проще!

Возможно, в этом участке кода и меняется размер нашего активного окошка (но судя по коду, здесь изменение своего окна):
Код:
wnd_hide:
    cmp     byte[win.state], 0
    je      main_loop
 
    mov     byte[nwin.close], 1
 
    mcall   18, 3, [win.psid]
 
    mov     byte[win.state], 0
    mov     byte[win.button_index], -1
 
    cmp     byte[dock_items.ashow],1
    je     .do_no_hide
 
    mov     eax, [win.width_hdn]
    mov     [win.width], eax
 
    mov     eax, [win.x_hdn]
    mov     [win.x], eax
 
    mov     eax, [win.height_hdn]
    mov     [win.height], eax
 
    mov     eax, [win.y_hdn]
    mov     [win.y], eax
 
    mcall   67, [win.x], [win.y], [win.width], [win.height]
 

Ведь доку нужно на время стать активным, а потом вернуть как было. И видимо, он не думает, что мы могли свернуть последнее активное окно перед его стартом. Он при старте сохраняет его свёрнутым, а потом восстанавливает таким.
Почему после сворачивания активного окна, оно всё ещё остаётся активным? И как это завешивает систему при выключении?


Вернуться к началу
СообщениеДобавлено: Вт сен 25, 2018 6:19 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1499
Leency писал(а):
Это действие каким-то образом меняет HEIGHT и CLIENT_HEIGHT у окон.
4294967294 = 0xfffffffe = -2
И об этом уже сообщалось.
Вот в этом чате chatlogs/chatlog2014-03-25.html
Вложение:
1.png
1.png [ 8.91 КБ | 319 просмотров ]


Вернуться к началу
СообщениеДобавлено: Ср сен 26, 2018 11:21 am 
Не в сети

Зарегистрирован: Сб апр 22, 2017 6:11 pm
Сообщения: 219
В коде, что я скинул выше, закомментировал строчку:
Код:
;mcall   18, 3, [win.psid]

Баг пропал и не проявляется. Значит здесь мы имеем два бага и похоже оба в системных функциях.

Первый при сворачивании активного окна оставляет поток активным, а второй - функция сделать окно потока активным портит структуру потока (размеры окна, если окно было сжато или свёрнуто).
Вероятно можно сделать кривой fix внутри самого @DOCKY: перед вызовом функции 18 проверить свёрнуто ли сейчас окно потока или нет, если свёрнуто (или сжато в заголовок), то не делать этот вызов.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 21 сообщение ]  На страницу Пред. 1 2

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


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

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


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

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