forked from KolibriOS/kolibrios
revert to static single-color background if memory allocation failed
git-svn-id: svn://kolibrios.org@1107 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
89da5cd137
commit
db82eb41f1
@ -398,7 +398,7 @@ MouseTickCounter rd 1
|
|||||||
|
|
||||||
img_background rd 1
|
img_background rd 1
|
||||||
mem_BACKGROUND rd 1
|
mem_BACKGROUND rd 1
|
||||||
wraw_bacground_select rb 1
|
static_background_data rd 1
|
||||||
|
|
||||||
cache_ide0:
|
cache_ide0:
|
||||||
cache_ide0_pointer rd 1
|
cache_ide0_pointer rd 1
|
||||||
|
@ -549,9 +549,8 @@ high_code:
|
|||||||
mov [BgrDrawMode],eax
|
mov [BgrDrawMode],eax
|
||||||
mov [BgrDataWidth],eax
|
mov [BgrDataWidth],eax
|
||||||
mov [BgrDataHeight],eax
|
mov [BgrDataHeight],eax
|
||||||
mov [mem_BACKGROUND],4095
|
mov [mem_BACKGROUND], 4
|
||||||
stdcall kernel_alloc, [mem_BACKGROUND]
|
mov [img_background], static_background_data
|
||||||
mov [img_background], eax
|
|
||||||
|
|
||||||
mov [SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
|
mov [SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
|
||||||
|
|
||||||
@ -2280,7 +2279,11 @@ sys_background:
|
|||||||
|
|
||||||
pushad
|
pushad
|
||||||
; return memory for old background
|
; return memory for old background
|
||||||
stdcall kernel_free, [img_background]
|
mov eax, [img_background]
|
||||||
|
cmp eax, static_background_data
|
||||||
|
jz @f
|
||||||
|
stdcall kernel_free, eax
|
||||||
|
@@:
|
||||||
; calculate RAW size
|
; calculate RAW size
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
inc eax
|
inc eax
|
||||||
@ -2299,9 +2302,18 @@ sys_background:
|
|||||||
; get memory for new background
|
; get memory for new background
|
||||||
stdcall kernel_alloc, eax
|
stdcall kernel_alloc, eax
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .exit_mem
|
jz .memfailed
|
||||||
mov [img_background], eax
|
mov [img_background], eax
|
||||||
.exit_mem:
|
jmp .exit
|
||||||
|
.memfailed:
|
||||||
|
; revert to static monotone data
|
||||||
|
mov [img_background], static_background_data
|
||||||
|
xor eax, eax
|
||||||
|
inc eax
|
||||||
|
mov [BgrDataWidth], eax
|
||||||
|
mov [BgrDataHeight], eax
|
||||||
|
mov [mem_BACKGROUND], 4
|
||||||
|
.exit:
|
||||||
popad
|
popad
|
||||||
mov [bgrlock], 0
|
mov [bgrlock], 0
|
||||||
|
|
||||||
@ -2313,20 +2325,25 @@ nosb1:
|
|||||||
cmp ebx,2 ; SET PIXEL
|
cmp ebx,2 ; SET PIXEL
|
||||||
jnz nosb2
|
jnz nosb2
|
||||||
|
|
||||||
|
mov eax, [img_background]
|
||||||
|
test ecx, ecx
|
||||||
|
jz @f
|
||||||
|
cmp eax, static_background_data
|
||||||
|
jz .ret
|
||||||
|
@@:
|
||||||
mov ebx, [mem_BACKGROUND]
|
mov ebx, [mem_BACKGROUND]
|
||||||
add ebx, 4095
|
add ebx, 4095
|
||||||
and ebx, -4096
|
and ebx, -4096
|
||||||
sub ebx, 4
|
sub ebx, 4
|
||||||
cmp ecx, ebx
|
cmp ecx, ebx
|
||||||
ja @F
|
ja .ret
|
||||||
|
|
||||||
mov eax,[img_background]
|
|
||||||
mov ebx,[eax+ecx]
|
mov ebx,[eax+ecx]
|
||||||
and ebx,0xFF000000 ;255*256*256*256
|
and ebx,0xFF000000 ;255*256*256*256
|
||||||
and edx,0x00FFFFFF ;255*256*256+255*256+255
|
and edx,0x00FFFFFF ;255*256*256+255*256+255
|
||||||
add edx,ebx
|
add edx,ebx
|
||||||
mov [eax+ecx],edx
|
mov [eax+ecx],edx
|
||||||
@@:
|
.ret:
|
||||||
ret
|
ret
|
||||||
nosb2:
|
nosb2:
|
||||||
|
|
||||||
@ -2356,6 +2373,13 @@ draw_background_temp:
|
|||||||
|
|
||||||
cmp ebx,5 ; BLOCK MOVE TO BGR
|
cmp ebx,5 ; BLOCK MOVE TO BGR
|
||||||
jnz nosb5
|
jnz nosb5
|
||||||
|
cmp [img_background], static_background_data
|
||||||
|
jnz @f
|
||||||
|
test edx, edx
|
||||||
|
jnz .fin
|
||||||
|
cmp esi, 4
|
||||||
|
ja .fin
|
||||||
|
@@:
|
||||||
; bughere
|
; bughere
|
||||||
mov eax, ecx
|
mov eax, ecx
|
||||||
mov ebx, edx
|
mov ebx, edx
|
||||||
@ -2377,6 +2401,8 @@ draw_background_temp:
|
|||||||
@@:
|
@@:
|
||||||
mov eax, [CURRENT_TASK]
|
mov eax, [CURRENT_TASK]
|
||||||
mov [bgrlockpid], eax
|
mov [bgrlockpid], eax
|
||||||
|
cmp [img_background], static_background_data
|
||||||
|
jz .nomem
|
||||||
stdcall user_alloc, [mem_BACKGROUND]
|
stdcall user_alloc, [mem_BACKGROUND]
|
||||||
mov [esp+32], eax
|
mov [esp+32], eax
|
||||||
test eax, eax
|
test eax, eax
|
||||||
@ -2477,19 +2503,24 @@ nogb1:
|
|||||||
cmp eax,2 ; PIXEL
|
cmp eax,2 ; PIXEL
|
||||||
jnz nogb2
|
jnz nogb2
|
||||||
|
|
||||||
|
mov eax, [img_background]
|
||||||
|
test ebx, ebx
|
||||||
|
jz @f
|
||||||
|
cmp eax, static_background_data
|
||||||
|
jz .ret
|
||||||
|
@@:
|
||||||
mov ecx, [mem_BACKGROUND]
|
mov ecx, [mem_BACKGROUND]
|
||||||
add ecx, 4095
|
add ecx, 4095
|
||||||
and ecx, -4096
|
and ecx, -4096
|
||||||
sub ecx, 4
|
sub ecx, 4
|
||||||
cmp ebx, ecx
|
cmp ebx, ecx
|
||||||
ja @F
|
ja .ret
|
||||||
|
|
||||||
mov eax,[img_background]
|
|
||||||
mov eax,[ebx+eax]
|
mov eax,[ebx+eax]
|
||||||
|
|
||||||
and eax, 0xFFFFFF
|
and eax, 0xFFFFFF
|
||||||
mov [esp+36],eax
|
mov [esp+36],eax
|
||||||
@@:
|
.ret:
|
||||||
ret
|
ret
|
||||||
nogb2:
|
nogb2:
|
||||||
|
|
||||||
@ -3641,14 +3672,6 @@ redrawscreen:
|
|||||||
|
|
||||||
calculatebackground: ; background
|
calculatebackground: ; background
|
||||||
|
|
||||||
; all black
|
|
||||||
|
|
||||||
mov edi, [img_background] ;IMG_BACKGROUND ; set background to black
|
|
||||||
xor eax, eax
|
|
||||||
mov ecx, 1023 ;0x0fff00 / 4
|
|
||||||
cld
|
|
||||||
rep stosd
|
|
||||||
|
|
||||||
mov edi,display_data ; set os to use all pixels
|
mov edi,display_data ; set os to use all pixels
|
||||||
mov eax,0x01010101
|
mov eax,0x01010101
|
||||||
mov ecx,1280*1024 / 4
|
mov ecx,1280*1024 / 4
|
||||||
|
Loading…
Reference in New Issue
Block a user