Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9929 → Rev 9930

/kernel/trunk/kernel.asm
897,10 → 897,17
call boot_log
call reserve_irqs_ports
 
mov [SLOT_BASE + APPDATA.window], window_data
mov [SLOT_BASE + sizeof.APPDATA + APPDATA.window], window_data + sizeof.WDATA
mov [SLOT_BASE + sizeof.APPDATA*2 + APPDATA.window], window_data + sizeof.WDATA*2
mov [window_data + WDATA.thread], SLOT_BASE
mov [window_data + sizeof.WDATA + WDATA.thread], SLOT_BASE + sizeof.APPDATA
mov [window_data + sizeof.WDATA*2 + WDATA.thread], SLOT_BASE + sizeof.APPDATA*2
 
call init_display
mov eax, [def_cursor]
mov [SLOT_BASE + APPDATA.cursor + sizeof.APPDATA], eax
mov [SLOT_BASE + APPDATA.cursor + sizeof.APPDATA*2], eax
mov [window_data + sizeof.WDATA + WDATA.cursor], eax
mov [window_data + sizeof.WDATA*2 + WDATA.cursor], eax
 
; PRINT CPU FREQUENCY
 
1179,6 → 1186,10
 
mov [edx + APPDATA.wnd_number], dh
mov byte [edx + APPDATA.tid], dh
movzx eax, dh
shl eax, BSF sizeof.WDATA
add eax, window_data
mov [edx + APPDATA.window], eax
 
ret
endp
1349,7 → 1360,6
 
mov byte [KEY_COUNT], al ; keyboard buffer
mov byte [BTN_COUNT], al ; button buffer
; mov [MOUSE_X],dword 100*65536+100 ; mouse x/y
 
pop eax
ret
1554,14 → 1564,14
mov ebx, [esp+64+32-8+4]
; add window start x & y
 
mov ecx, [current_slot_idx]
shl ecx, BSF sizeof.WDATA
mov ecx, [current_slot]
mov ecx, [ecx + APPDATA.window]
 
mov eax, [window_data + ecx + WDATA.box.left]
add eax, [window_data + ecx + WDATA.clientbox.left]
mov eax, [ecx + WDATA.box.left]
add eax, [ecx + WDATA.clientbox.left]
shl eax, 16
add eax, [window_data + ecx + WDATA.box.top]
add eax, [window_data + ecx + WDATA.clientbox.top]
add eax, [ecx + WDATA.box.top]
add eax, [ecx + WDATA.clientbox.top]
add ebx, eax
mov ecx, [esp+64+32-12+4]
mov eax, [esp+64+8] ; background color (if given)
1896,6 → 1906,7
; restore default cursor before killing
pusha
mov ecx, [current_slot]
mov ecx, [ecx + APPDATA.window]
call restore_default_cursor_before_killing
popa
@@:
1924,11 → 1935,12
jmp .waitterm
;------------------------------------------------------------------------------
align 4
; ecx - ptr WDATA
restore_default_cursor_before_killing:
pushfd
cli
mov eax, [def_cursor]
mov [ecx + APPDATA.cursor], eax
mov [ecx + WDATA.cursor], eax
 
movzx eax, word [MOUSE_Y]
movzx ebx, word [MOUSE_X]
1936,8 → 1948,8
 
add eax, [_display.win_map]
movzx edx, byte [ebx + eax]
shl edx, BSF sizeof.APPDATA
mov esi, [SLOT_BASE + edx + APPDATA.cursor]
shl edx, BSF sizeof.WDATA
mov esi, [window_data + edx + WDATA.cursor]
 
cmp esi, [current_cursor]
je @f
1994,9 → 2006,9
;------------------------------------------------------------------------------
sysfn_shutdown: ; 18.9 = system shutdown
cmp ecx, SYSTEM_SHUTDOWN
jl exit_for_anyone
jl .exit_for_anyone
cmp ecx, SYSTEM_RESTART
jg exit_for_anyone
jg .exit_for_anyone
mov [BOOT.shutdown_type], cl
 
mov eax, [thread_count]
2004,7 → 2016,7
mov [shutdown_processes], eax
call wakeup_osloop
and dword [esp + SYSCALL_STACK.eax], 0
exit_for_anyone:
.exit_for_anyone:
ret
uglobal
shutdown_processes:
2055,10 → 2067,10
; restore default cursor before killing
pusha
mov ecx, [esp+32]
shl ecx, BSF sizeof.APPDATA
add ecx, SLOT_BASE
shl ecx, BSF sizeof.WDATA
add ecx, window_data
mov eax, [def_cursor]
cmp [ecx + APPDATA.cursor], eax
cmp [ecx + WDATA.cursor], eax
je @f
call restore_default_cursor_before_killing
@@:
2172,8 → 2184,8
mov eax, edx
shl edx, BSF sizeof.WDATA
 
cmp [edx*(sizeof.APPDATA/sizeof.WDATA) + SLOT_BASE + APPDATA.state], TSTATE_FREE
je .fail
test [window_data + edx + WDATA.fl_wstate], WSTATE_USED
jz .fail
 
cmp ecx, 1
jnz .set_zmod
2204,7 → 2216,7
call window._.redraw_top_wnd
 
shl esi, BSF sizeof.WDATA
mov [esi + window_data + WDATA.fl_redraw], 1
mov [esi + window_data + WDATA.fl_redraw], WSTATE_REDRAW
 
 
mov eax, 1
2640,16 → 2652,16
cmp ebx, 2
jnz .srl1
 
mov edx, [current_slot_idx] ; return whole screen draw area for this app
shl edx, BSF sizeof.WDATA
mov [draw_data + edx + RECT.left], 0
mov [draw_data + edx + RECT.top], 0
mov edx, [current_slot] ; return whole screen draw area for this app
mov edx, [edx + APPDATA.window]
mov [edx + WDATA.draw_data.left], 0
mov [edx + WDATA.draw_data.top], 0
mov eax, [_display.width]
dec eax
mov [draw_data + edx + RECT.right], eax
mov [edx + WDATA.draw_data.right], eax
mov eax, [_display.height]
dec eax
mov [draw_data + edx + RECT.bottom], eax
mov [edx + WDATA.draw_data.bottom], eax
 
.srl1:
ret
2863,14 → 2875,14
;--------------------------------------
align 4
backgr:
mov eax, [draw_data + sizeof.WDATA + RECT.left]
mov eax, [background_window + WDATA.draw_data.left]
shl eax, 16
add eax, [draw_data + sizeof.WDATA + RECT.right]
add eax, [background_window + WDATA.draw_data.right]
mov [BG_Rect_X_left_right], eax ; [left]*65536 + [right]
 
mov eax, [draw_data + sizeof.WDATA + RECT.top]
mov eax, [background_window + WDATA.draw_data.top]
shl eax, 16
add eax, [draw_data + sizeof.WDATA + RECT.bottom]
add eax, [background_window + WDATA.draw_data.bottom]
mov [BG_Rect_Y_top_bottom], eax ; [top]*65536 + [bottom]
 
call drawbackground
2884,37 → 2896,43
;--------------------------------------
align 4
set_bgr_event:
add edi, sizeof.APPDATA
add edi, sizeof.WDATA
mov eax, [BG_Rect_X_left_right]
mov edx, [BG_Rect_Y_top_bottom]
cmp [SLOT_BASE + edi + APPDATA.draw_bgr_x], 0
cmp [window_data + edi + WDATA.draw_bgr_x], 0
jz .set
.join:
cmp word [SLOT_BASE + edi + APPDATA.draw_bgr_x], ax
cmp word [window_data + edi + WDATA.draw_bgr_x], ax
jae @f
mov word [SLOT_BASE + edi + APPDATA.draw_bgr_x], ax
mov word [window_data + edi + WDATA.draw_bgr_x], ax
@@:
shr eax, 16
cmp word [SLOT_BASE + edi + APPDATA.draw_bgr_x + 2], ax
cmp word [window_data + edi + WDATA.draw_bgr_x + 2], ax
jbe @f
mov word [SLOT_BASE + edi + APPDATA.draw_bgr_x + 2], ax
mov word [window_data + edi + WDATA.draw_bgr_x + 2], ax
@@:
cmp word [SLOT_BASE + edi + APPDATA.draw_bgr_y], dx
cmp word [window_data + edi + WDATA.draw_bgr_y], dx
jae @f
mov word [SLOT_BASE + edi + APPDATA.draw_bgr_y], dx
mov word [window_data + edi + WDATA.draw_bgr_y], dx
@@:
shr edx, 16
cmp word [SLOT_BASE + edi + APPDATA.draw_bgr_y+2], dx
cmp word [window_data + edi + WDATA.draw_bgr_y+2], dx
jbe @f
mov word [SLOT_BASE + edi + APPDATA.draw_bgr_y+2], dx
mov word [window_data + edi + WDATA.draw_bgr_y+2], dx
@@:
jmp .common
.set:
mov [SLOT_BASE + edi + APPDATA.draw_bgr_x], eax
mov [SLOT_BASE + edi + APPDATA.draw_bgr_y], edx
mov [window_data + edi + WDATA.draw_bgr_x], eax
mov [window_data + edi + WDATA.draw_bgr_y], edx
.common:
or [SLOT_BASE + edi + APPDATA.occurred_events], EVENT_BACKGROUND
loop set_bgr_event
mov eax, [window_data + edi + WDATA.thread]
test eax, eax
jz @f
or [eax + APPDATA.occurred_events], EVENT_BACKGROUND
@@:
sub ecx, 1
jnz set_bgr_event
;loop set_bgr_event
pop edi ecx
;--------- set event 5 stop -----------
dec [REDRAW_BACKGROUND] ; got new update request?
2921,10 → 2939,10
jnz backgr
 
xor eax, eax
mov [draw_data + sizeof.WDATA + RECT.left], eax
mov [draw_data + sizeof.WDATA + RECT.top], eax
mov [draw_data + sizeof.WDATA + RECT.right], eax
mov [draw_data + sizeof.WDATA + RECT.bottom], eax
mov [background_window + WDATA.draw_data.left], eax
mov [background_window + WDATA.draw_data.top], eax
mov [background_window + WDATA.draw_data.right], eax
mov [background_window + WDATA.draw_data.bottom], eax
;--------------------------------------
align 4
nobackgr:
2986,8 → 3004,8
.terminate:
pushad
mov ecx, eax
shl ecx, BSF sizeof.APPDATA
add ecx, SLOT_BASE
shl ecx, BSF sizeof.WDATA
add ecx, window_data
call restore_default_cursor_before_killing
popad
 
3079,39 → 3097,38
jz .az
 
mov dl, 0
lea eax, [edi + draw_data - window_data]
mov ebx, [draw_limits.left]
cmp ebx, [eax + RECT.left]
cmp ebx, [edi + WDATA.draw_data.left]
jae @f
 
mov [eax + RECT.left], ebx
mov [edi + WDATA.draw_data.left], ebx
mov dl, 1
;--------------------------------------
align 4
@@:
mov ebx, [draw_limits.top]
cmp ebx, [eax + RECT.top]
cmp ebx, [edi + WDATA.draw_data.top]
jae @f
 
mov [eax + RECT.top], ebx
mov [edi + WDATA.draw_data.top], ebx
mov dl, 1
;--------------------------------------
align 4
@@:
mov ebx, [draw_limits.right]
cmp ebx, [eax + RECT.right]
cmp ebx, [edi + WDATA.draw_data.right]
jbe @f
 
mov [eax + RECT.right], ebx
mov [edi + WDATA.draw_data.right], ebx
mov dl, 1
;--------------------------------------
align 4
@@:
mov ebx, [draw_limits.bottom]
cmp ebx, [eax + RECT.bottom]
cmp ebx, [edi + WDATA.draw_data.bottom]
jbe @f
 
mov [eax + RECT.bottom], ebx
mov [edi + WDATA.draw_data.bottom], ebx
mov dl, 1
;--------------------------------------
align 4
3123,19 → 3140,16
align 4
.az:
mov eax, edi
add eax, draw_data-window_data
 
mov ebx, [draw_limits.left] ; set limits
mov [eax + RECT.left], ebx
mov [eax + WDATA.draw_data.left], ebx
mov ebx, [draw_limits.top]
mov [eax + RECT.top], ebx
mov [eax + WDATA.draw_data.top], ebx
mov ebx, [draw_limits.right]
mov [eax + RECT.right], ebx
mov [eax + WDATA.draw_data.right], ebx
mov ebx, [draw_limits.bottom]
mov [eax + RECT.bottom], ebx
mov [eax + WDATA.draw_data.bottom], ebx
 
sub eax, draw_data-window_data
 
cmp dword [esp], 1
jne nobgrd
inc [REDRAW_BACKGROUND]
3203,7 → 3217,7
.found:
pop ebp edi eax
 
mov [eax + WDATA.fl_redraw], byte 1 ; mark as redraw
mov [eax + WDATA.fl_redraw], WSTATE_REDRAW ; mark as redraw
;--------------------------------------
align 4
ricino:
3224,7 → 3238,7
mov ecx, [_display.win_map_size]
shr ecx, 2
rep stosd
mov byte[window_data + sizeof.WDATA + WDATA.z_modif], ZPOS_DESKTOP
mov byte[background_window + WDATA.z_modif], ZPOS_DESKTOP
mov [REDRAW_BACKGROUND], 0
ret
;-----------------------------------------------------------------------------