From 562cdf4dcadf31cae703640fda8da367753a0a35 Mon Sep 17 00:00:00 2001 From: GerdtR Date: Mon, 14 Oct 2013 23:04:34 +0000 Subject: [PATCH] Given the flow of dialogue and move windows icons different stack. The dialog window now draws the icon in its own buffer. git-svn-id: svn://kolibrios.org@4027 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/system/icon_new/@icon.asm | 26 ++++++++++++++------------ programs/system/icon_new/DlgAdd.inc | 22 ++++++---------------- programs/system/icon_new/bgredraw.inc | 12 ------------ 3 files changed, 20 insertions(+), 40 deletions(-) diff --git a/programs/system/icon_new/@icon.asm b/programs/system/icon_new/@icon.asm index e1185d235d..34441a258e 100644 --- a/programs/system/icon_new/@icon.asm +++ b/programs/system/icon_new/@icon.asm @@ -124,9 +124,9 @@ START: ; start of execution @@: ;###################################################################### - call FillIconsOffs + call FillIconsOffs ;заполняет MaxNumIcon,IconsOffs - mcall 40,0100000b + mcall 40,0100000b ;нужны только события мыши, перерисовка иконок будет в другом потоке mov eax,[icon_count] mov bl,ICONS_DRAW_COUNTH @@ -138,7 +138,7 @@ START: ; start of execution and eax,0FFh mov [sbIcons.max_area],eax - mcall 51,1,BGRedrawThread,stack_bredraw + mcall 51,1,BGRedrawThread,stack_bredraw ;запускаем поток перерисовки иконок stdcall [OpenDialog_Init],OpenDialog_data messages: @@ -339,7 +339,7 @@ MovingIcon: ;qweqwe: mov [MovingActiv],1 - mcall 51,1,MovingWnd,stack_dlg ;CreateThread MovingWnd,stack_dlg + mcall 51,1,MovingWnd,stack_mov ;CreateThread MovingWnd,stack_dlg .WaitLB: mcall 37,2 ;GetMouseKey test al,001b @@ -1149,7 +1149,6 @@ IconNoDraw dd -1 ;-1 bFixIcons dd 1 bNotSave dd 0 -bIcoBuff dd 0 ;1, если IconArea занят LButtonActiv dd 0 RButtonActiv dd 0 @@ -1367,8 +1366,9 @@ I_END: IconArea rb 4*ICON_SIZE*ICON_SIZE ;\ +sc system_colors - +align 4 ScreenX rw 1 ScreenY rw 1 @@ -1383,10 +1383,11 @@ AddY rd 1 SelIcon rd 1 DlgSelIcon rd 1 slotDlgAdd rd 1 +DlgBufImg rb IMG_SIZE*IMG_SIZE*3 + + -sc system_colors -align 4 bufStdIco rb 40 IconsOffs rd 100 PIcoDB rd 1 @@ -1424,12 +1425,13 @@ align 4 temp_dir_pach rb 1024 fname_Info rb 1024 ;------------------------------------------------------------------------------- - rb 1024 + rb 512 +stack_mov: + rb 512 stack_dlg: -align 4 - rb 1024 + rb 512 stack_bredraw: - rb 1024 + rb 512 stack_area: ;------------------------------------------------------------------------------ ENDMEM: \ No newline at end of file diff --git a/programs/system/icon_new/DlgAdd.inc b/programs/system/icon_new/DlgAdd.inc index ada57d76df..9e45071e18 100644 --- a/programs/system/icon_new/DlgAdd.inc +++ b/programs/system/icon_new/DlgAdd.inc @@ -474,15 +474,6 @@ local IcoX:DWORD,\ IcoY:DWORD,\ iIcon:DWORD - @@: ;ждём, когда освободится буффер - cmp [bIcoBuff],1 - jne @f - mcall 5,1 - jmp @b - @@: - - mov [bIcoBuff],1 ;блокируем IconArea - mov ecx,[sbIcons.position] xor eax,eax m2m dword[iIcon],0 @@ -510,7 +501,7 @@ local IcoX:DWORD,\ .DrawIcoStolb: push ecx - mov edi,IconArea + mov edi,DlgBufImg mov edx,IMG_SIZE .DrawLine: @@ -538,7 +529,7 @@ local IcoX:DWORD,\ mov edx,[IcoX] shl edx,16 mov dx,word[IcoY] - mcall 7,IconArea, + mcall 7,DlgBufImg, inc [iIcon] mov eax,[iIcon] @@ -557,7 +548,7 @@ local IcoX:DWORD,\ .endDrawIcon: mov ecx,IMG_SIZE*IMG_SIZE - mov edi,IconArea + mov edi,DlgBufImg mov eax,[sc.work] mov ebx,eax shr ebx,16 @@ -581,7 +572,7 @@ local IcoX:DWORD,\ mov edx,[IcoX] shl edx,16 mov dx,word[IcoY] - mcall 7,IconArea, + mcall 7,DlgBufImg, .Dalee: add dword[IcoY],IMG_SIZE+SPCH @@ -594,7 +585,6 @@ local IcoX:DWORD,\ .endProc: - mov [bIcoBuff],0 ;разблокируем буфер ret endp @@ -641,7 +631,7 @@ proc DrawSelIcon add esi,[raw_pointer] add esi,44 - mov edi,IconArea + mov edi,DlgBufImg mov edx,IMG_SIZE .DrawLine: @@ -664,7 +654,7 @@ proc DrawSelIcon dec edx jnz .DrawLine - mcall 7,IconArea,,<15,15> + mcall 7,DlgBufImg,,<15,15> ret endp \ No newline at end of file diff --git a/programs/system/icon_new/bgredraw.inc b/programs/system/icon_new/bgredraw.inc index af27258543..3bbf0b1610 100644 --- a/programs/system/icon_new/bgredraw.inc +++ b/programs/system/icon_new/bgredraw.inc @@ -3,15 +3,6 @@ BGRedrawThread: mcall 40,010000b BGRTRedrawIcons: - @@: - cmp [bIcoBuff],1 ;для блокировки пререрисовки иконок - jne @f - mcall 5,1 - jmp @b - @@: - - mov [bIcoBuff],1 - mcall 48,5 mov dx,ax shr eax,16 @@ -36,9 +27,6 @@ BGRTRedrawIcons: loop @b .NoDraw: - mov [bIcoBuff],0 - - BGRTmessages: mcall 10 sub eax,5