Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Dec 08, 2019 8:51 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 445 posts ]  Go to page Previous 122 23 24 25 2630 Next
Author Message
PostPosted: Fri Oct 11, 2013 3:48 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
GerdtR wrote:
Один буфер использовал и диалог, и поток перерисовки иконок для разных целей. И иногда они его юзали одновременно.

O_o

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Fri Oct 11, 2013 3:59 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
В тестовой я сделал 2 буфера. Вот только одно но: считаем размер буфера для перерисовки иконки: 68*68*4=18496, для перерисовки значка в диалоге: 32*32*3 = 3072. Ну, вот. Ну для диалога надо не много, но я вообще сэкономил и всё в один буфер. А сейчас соорудил вроде мьютекса(правильно написал? :) ). Ну есть переменная, которая служит флагом занятости буфера и те кому нужен буфер ждут, когда он освободиться. Задержек не видно даже при стресс-тесте (запускал окно, которое постоянно прыгало и заставляло перерисовываться значки, а я тем временем крутил прокрутку и заставлял перерисовываться диалог. Результат - никаких тормозов. Хотя это всё на реальной машине, конечно, но я с трудом убил это прыгающее окно - мельтешило всё).

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Fri Oct 11, 2013 4:30 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
GerdtR
Такой подход изначально порочен. Лучше раздели на отдельные области, много не сэкономишь, зато не будет необъяснимых странных ситуаций в будущем. Не плоди себе и последующим программистам головную боль.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Fri Oct 11, 2013 6:12 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Во время перетаскивания иконок при открытом диалоге свойств на Board появляется "destroy app object". Через некоторое время это привело к вылету:
Spoiler: Show
Attachment:
11.PNG
11.PNG [ 7.8 KiB | Viewed 1748 times ]
В исходнике есть BGRedrawThread. И если одновременно запущено 2 и более потока, то, вероятно, возникнут проблемы. Стек у них будет общий, а там есть такой код:
Code:
    @@: push    ecx,             <----
        cmp     [IconNoDraw],ebx
        je      .nd
        stdcall DrawIcon,ebx,0   <----
      .nd:
        inc     ebx
        pop     ecx              <----
svn4007


Top
   
PostPosted: Fri Oct 11, 2013 6:44 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
Для каждого потока свой стек.
Code:
                rb 1024
stack_dlg:
align 4
                rb 1024
stack_bredraw:
                rb 1024
stack_area:

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Fri Oct 11, 2013 7:03 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
GerdtR wrote:
Для каждого потока свой стек.
Если так, то всё нормально. Просто я кроме
Code:
        mcall   51,1,BGRedrawThread,stack_bredraw
в @icon.asm больше нигде не нашёл создания потока.


Top
   
PostPosted: Fri Oct 11, 2013 8:08 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
GerdtR wrote:
Для каждого потока свой стек.
Code:
        mcall   51,1,DlgAdd,stack_dlg           ;CreateThread DlgAdd,stack_dlg
            
        mcall   51,1,MovingWnd,stack_dlg        ;CreateThread MovingWnd,stack_dlg   


Top
   
PostPosted: Fri Oct 11, 2013 8:45 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
Ой :) Понял, исправлю)

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Fri Oct 11, 2013 9:28 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
GerdtR wrote:
Ой :) Понял, исправлю)

Только вчера смотрел:
Quote:
-Это Эврика, сэр! Приоритетная ситуация номер один!
-Соберите всех в гостиной! Тема совещания "А я вам говорил!"

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Tue Oct 15, 2013 2:10 am 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
Дал каждому потоку свой стек и диалог теперь в своём собственном буфере рисует. Вроде теперь толпы багов должны исчезнуть. И осталось сделать красивую менюшку.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Tue Oct 15, 2013 2:18 am 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
Akyltist wrote:
3. Понимаю что даже в винде так, но там это визуально сопровождается выделением при наведении, здесь же пока не кликнешь не увидишь) Мож не баг, мож фича собственно это уже так, искуственно - мне не мешает:
Image

С этим багом сложно что-то сделать. Можно, конечно, при клике искать не ту иконку, в области какой кликнули, а ту, центр которой ближе к точке клика... вроде даже не сложно, но баг просто менее заметен будет. Не сильно поможет. Пускай будет как есть.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Tue Oct 15, 2013 2:00 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
При вызове меню правой кнопкой мыши с открытым диалогом свойств:
Spoiler: Show
Attachment:
1221.PNG
1221.PNG [ 97.9 KiB | Viewed 1634 times ]
Раньше уже писал про это http://board.kolibrios.org/viewtopic.php?p=52143#p52143, но в этот раз ещё и на иконках что-то появилось. У меня это проявляется не очень часто.
svn4028

@icon.asm:
Quote:
mcall 51,1,RButtonWin,stack_dlg ;CreateThread RButtonWin,stack_dlg

RButton.inc:
Quote:
mcall 51,1,DlgAdd,stack_dlg ;CreateThread DlgAdd,stack_dlg


Top
   
PostPosted: Tue Oct 15, 2013 2:08 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
Опять со стеком прошляпил :(

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Tue Oct 15, 2013 10:23 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
Сделал менюшку как в сишной версии. И стек теперь у каждого свой, за исключением стека для окна при перетаскивании и окна менюшки. Ну одновременно эти два потока никак не запустить.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Tue Oct 15, 2013 10:32 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
Уже близко к идеалу. Хочу только попросить добавить ободок и сделать выделенный элемент более контасным (использовать цвета кнопки), как на скрине.


Attachments:
Screenshot_1.png
Screenshot_1.png [ 13.72 KiB | Viewed 1605 times ]

_________________
Через тернии к звездам
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 445 posts ]  Go to page Previous 122 23 24 25 2630 Next

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:  
cron
Powered by phpBB® Forum Software © phpBB Limited