Board.KolibriOS.org

Official KolibriOS board
It is currently Mon May 20, 2019 12:08 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 21 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Mon Sep 24, 2018 3:28 pm 
Offline

Joined: Sat Apr 22, 2017 6:11 pm
Posts: 222
Pathoswithin wrote:
Какая мотивация? В идеале, что баг большой, страшный, и если его не победить, то он нас всех сожрёт. У нас тут куча мелких багов, на которые всем насрать. Да, и мне тоже; себя мотивировать так же непросто.

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


Top
   
PostPosted: Tue Sep 25, 2018 5:23 pm 
Offline

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



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


Top
   
PostPosted: Tue Sep 25, 2018 5:44 pm 
Offline
Designer
User avatar

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

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

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


Attachments:
bug.png
bug.png [ 69.94 KiB | Viewed 540 times ]

_________________
Через тернии к звездам
Top
   
PostPosted: Tue Sep 25, 2018 5:52 pm 
Offline

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

Возможно, в этом участке кода и меняется размер нашего активного окошка (но судя по коду, здесь изменение своего окна):
Code:
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]
 

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


Top
   
PostPosted: Tue Sep 25, 2018 6:19 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Leency wrote:
Это действие каким-то образом меняет HEIGHT и CLIENT_HEIGHT у окон.
4294967294 = 0xfffffffe = -2
И об этом уже сообщалось.
Вот в этом чате chatlogs/chatlog2014-03-25.html
Attachment:
1.png
1.png [ 8.91 KiB | Viewed 525 times ]


Top
   
PostPosted: Wed Sep 26, 2018 11:21 am 
Offline

Joined: Sat Apr 22, 2017 6:11 pm
Posts: 222
В коде, что я скинул выше, закомментировал строчку:
Code:
;mcall   18, 3, [win.psid]

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 21 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited