Removing the "blinking" of redrawing titlebar for skinned window (type III and IV)

git-svn-id: svn://kolibrios.org@2423 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov (Mario79) 2012-02-29 23:03:13 +00:00
parent ca21d76937
commit 570e99f573
3 changed files with 27 additions and 6 deletions

View File

@ -317,22 +317,29 @@ drawwindow_IV:
; shr esi,1 ; shr esi,1
; and esi,0x007f7f7f ; and esi,0x007f7f7f
mov esi, [ebp+SKIN_DATA.colors.outer] mov esi, [ebp+SKIN_DATA.colors.outer]
or esi, 1 shl 25 ; 0x02000000 used for draw_rectangle without top line
ror ebx, 16
add ebx, [_skinh]
sub bx, 1
rol ebx, 16
call draw_rectangle call draw_rectangle
mov ecx, 3 mov ecx, 3
_dw3l: _dw3l:
add eax, 1*65536-1 add eax, 1*65536-1
add ebx, 1*65536-1 add ebx, 0*65536-1
test ax, ax test ax, ax
js no_skin_add_button js no_skin_add_button
test bx, bx test bx, bx
js no_skin_add_button js no_skin_add_button
mov esi, [ebp+SKIN_DATA.colors.frame];[edi+24] mov esi, [ebp+SKIN_DATA.colors.frame];[edi+24]
or esi, 1 shl 25; 0x02000000 used for draw_rectangle without top line
call draw_rectangle call draw_rectangle
dec ecx dec ecx
jnz _dw3l jnz _dw3l
mov esi, [ebp+SKIN_DATA.colors.inner] mov esi, [ebp+SKIN_DATA.colors.inner]
or esi, 1 shl 25; 0x02000000 used for draw_rectangle without top line
add eax, 1*65536-1 add eax, 1*65536-1
add ebx, 1*65536-1 add ebx, 0*65536-1
test ax, ax test ax, ax
js no_skin_add_button js no_skin_add_button
test bx, bx test bx, bx

View File

@ -609,6 +609,9 @@ draw_rectangle: ;//////////////////////////////////////////////////////////////
;> eax = pack[16(left), 16(right)] ;> eax = pack[16(left), 16(right)]
;> ebx = pack[16(top), 16(bottom)] ;> ebx = pack[16(top), 16(bottom)]
;> esi = color ;> esi = color
; ?? RR GG BB ; 0x01000000 negation
; ; 0x02000000 used for draw_rectangle without top line
; ; for example drawwindow_III and drawwindow_IV
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
push eax ebx ecx edi push eax ebx ecx edi
@ -619,14 +622,17 @@ draw_rectangle: ;//////////////////////////////////////////////////////////////
; set line color ; set line color
mov ecx, esi mov ecx, esi
sub esi, 1 shl 25
; draw top border ; draw top border
rol ebx, 16 rol ebx, 16
push ebx push ebx
rol ebx, 16 rol ebx, 16
pop bx pop bx
test ecx, 1 shl 25
jnz @f
sub ecx, 1 shl 25
call [draw_line] call [draw_line]
@@:
; draw bottom border ; draw bottom border
mov ebx, [esp - 2] mov ebx, [esp - 2]
pop bx pop bx
@ -828,22 +834,28 @@ drawwindow_III: ;//////////////////////////////////////////////////////////////
mov esi, [edx + WDATA.cl_frames] mov esi, [edx + WDATA.cl_frames]
shr esi, 1 shr esi, 1
and esi, 0x007f7f7f and esi, 0x007f7f7f
or esi, 1 shl 25; 0x02000000 used for draw_rectangle without top line
ror ebx, 16
add ebx, [_skinh]
sub bx, 1
rol ebx, 16
call draw_rectangle call draw_rectangle
push esi push esi
mov ecx, 3 mov ecx, 3
mov esi, [edx + WDATA.cl_frames] mov esi, [edx + WDATA.cl_frames]
or esi, 1 shl 25; 0x02000000 used for draw_rectangle without top line
.next_frame: .next_frame:
add eax, 1 * 65536 - 1 add eax, 1 * 65536 - 1
add ebx, 1 * 65536 - 1 add ebx, 0 * 65536 - 1
call draw_rectangle call draw_rectangle
dec ecx dec ecx
jnz .next_frame jnz .next_frame
pop esi pop esi
add eax, 1 * 65536 - 1 add eax, 1 * 65536 - 1
add ebx, 1 * 65536 - 1 add ebx, 0 * 65536 - 1
call draw_rectangle call draw_rectangle
; window caption ; window caption

View File

@ -300,6 +300,8 @@ __sys_putpixel:
; eax = x coordinate ; eax = x coordinate
; ebx = y coordinate ; ebx = y coordinate
; ecx = ?? RR GG BB ; 0x01000000 negation ; ecx = ?? RR GG BB ; 0x01000000 negation
; 0x02000000 used for draw_rectangle without top line
; for example drawwindow_III and drawwindow_IV
; edi = 0x00000001 force ; edi = 0x00000001 force
;;; mov [novesachecksum], dword 0 ;;; mov [novesachecksum], dword 0