Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4443 → Rev 4444

/kernel/trunk/video/blitter.inc
206,7 → 206,13
push edi
push esi
push ebx
sub esp, 72
virtual at sizeof.BLITTER
.position dd ? ; (x shl 16) + y
; ???
.extra_var1 dd ?
.local_vars_size = $
end virtual
sub esp, .local_vars_size
 
mov eax, [TASK_BASE]
mov ebx, [eax-twdw + WDATA.box.width]
246,9 → 252,9
 
 
mov eax, [ecx+32]
mov [esp+56], eax
mov [esp+BLITTER.bitmap], eax
mov eax, [ecx+36]
mov [esp+60], eax
mov [esp+BLITTER.stride], eax
 
mov ecx, esp
call blit_clip
268,6 → 274,11
mov cx, bp
add ecx, [esp+BLITTER.h]
 
mov eax, ebx
shl eax, 16
mov ax, bp
mov [esp+.position], eax
 
mov edi, ebp
 
; imul edi, [_display.pitch]
300,47 → 311,37
lea edi, [edi+ebx*4]
 
mov ebx, [CURRENT_TASK]
; check for hardware cursor
cmp [_display.select_cursor], select_cursor
je .core_32.software_cursor
cmp [_display.select_cursor], 0
jne .core_32.hardware_cursor
;--------------------------------------
.core_32.software_cursor:
align 4
.outer32:
xor ecx, ecx
 
align 4
.inner32:
cmp [ebp+ecx], bl
cmp [ebp], bl
jne .skip
;--------------------------------------
push eax
mov eax, [esi+ecx*4]
mov eax, [esi]
 
; check for hardware cursor
cmp [_display.select_cursor], select_cursor
je @f
cmp [_display.select_cursor], 0
jne .no_mouseunder
;--------------------------------------
align 4
@@:
push ecx
mov ecx, [esp+.position]
 
mov ecx, [esp+4]
ror ecx, 16
sub ecx, edx
rol ecx, 16
sub ecx, [esp+BLITTER.h + 8]
 
; check mouse area for putpixel
call [_display.check_mouse]
pop ecx
;--------------------------------------
align 4
.no_mouseunder:
; store to real LFB
mov [LFB_BASE+edi+ecx*4], eax
pop eax
mov [LFB_BASE+edi], eax
;--------------------------------------
align 4
.skip:
inc ecx
add esi, 4
add edi, 4
inc ebp
add [esp+.position], 1 shl 16
dec edx
jnz .inner32
 
349,14 → 350,48
add ebp, [_display.width]
 
mov edx, [esp+BLITTER.w]
mov eax, edx
inc [esp+.position]
sub ebp, edx
shl eax, 2
sub esi, eax
sub edi, eax
shl eax, 16-2
sub [esp+.position], eax
dec [esp+BLITTER.h]
jnz .outer32
jmp .done
.core_32.hardware_cursor:
align 4
.hw.outer32:
xor ecx, ecx
 
align 4
.hw.inner32:
cmp [ebp+ecx], bl
jne .hw.skip
mov eax, [esi+ecx*4]
mov [LFB_BASE+edi+ecx*4], eax
 
align 4
.hw.skip:
inc ecx
dec edx
jnz .hw.inner32
 
add esi, [esp+BLITTER.stride]
add edi, [_display.pitch]
add ebp, [_display.width]
 
mov edx, [esp+BLITTER.w]
dec [esp+BLITTER.h]
jnz .hw.outer32
 
.done:
; call [draw_pointer]
; call __sys_draw_pointer
.L57:
add esp, 72
add esp, .local_vars_size
pop ebx
pop esi
pop edi
370,7 → 405,7
 
align 4
.outer24:
mov [esp+64], edi
mov [esp+.extra_var1], edi
xor ecx, ecx
 
align 4
413,7 → 448,7
;--------------------------------------
align 4
.skip_1:
mov edi, [esp+64]
mov edi, [esp+.extra_var1]
inc ecx
dec edx
jnz .inner24