apps/reshare: RAM optimization, code cleanup, prefixes for debug logs
This commit is contained in:
@@ -30,7 +30,6 @@ include "../../KOSfuncs.inc"
|
|||||||
include "../../encoding.inc"
|
include "../../encoding.inc"
|
||||||
include "../../proc32.inc"
|
include "../../proc32.inc"
|
||||||
include "../../dll.inc"
|
include "../../dll.inc"
|
||||||
include "../../string.inc"
|
|
||||||
include "../../debug-fdo.inc"
|
include "../../debug-fdo.inc"
|
||||||
|
|
||||||
include "../../develop/libraries/libs-dev/libimg/libimg.inc"
|
include "../../develop/libraries/libs-dev/libimg/libimg.inc"
|
||||||
@@ -47,10 +46,11 @@ LIBS:
|
|||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
START:
|
START:
|
||||||
mcall SF_KEYBOARD, SSF_SET_INPUT_MODE, 1
|
|
||||||
|
|
||||||
mcall SF_SYS_MISC, SSF_HEAP_INIT
|
mcall SF_SYS_MISC, SSF_HEAP_INIT
|
||||||
|
|
||||||
|
mcall SF_KEYBOARD, SSF_SET_INPUT_MODE, 1
|
||||||
|
|
||||||
; check if this is second instance of app. if so - run gui, else - run daemon
|
; check if this is second instance of app. if so - run gui, else - run daemon
|
||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, meta_name, 0, SHM_OPEN + SHM_READ
|
mcall SF_SYS_MISC, SSF_MEM_OPEN, meta_name, 0, SHM_OPEN + SHM_READ
|
||||||
test eax, eax
|
test eax, eax
|
||||||
@@ -112,7 +112,7 @@ MODE_GUI:
|
|||||||
mcall , <TAB_STEP * 1 + PAD *11, BTN.Y>, , lb_tab_i18_res
|
mcall , <TAB_STEP * 1 + PAD *11, BTN.Y>, , lb_tab_i18_res
|
||||||
mcall , <TAB_STEP * 2 + PAD * 2, BTN.Y>, , lb_tab_i18w
|
mcall , <TAB_STEP * 2 + PAD * 2, BTN.Y>, , lb_tab_i18w
|
||||||
mcall , <TAB_STEP * 2 + PAD * 2 + 1, BTN.Y>, ,
|
mcall , <TAB_STEP * 2 + PAD * 2 + 1, BTN.Y>, ,
|
||||||
mcall , <TAB_STEP * 2 + PAD *11, BTN.Y>, , lb_tab_i18w_res
|
mcall , <TAB_STEP * 2 + PAD *11, BTN.Y>, , lb_tab_i18_res
|
||||||
mcall , <TAB_STEP * 3 + PAD * 2, BTN.Y>, , lb_tab_cbox
|
mcall , <TAB_STEP * 3 + PAD * 2, BTN.Y>, , lb_tab_cbox
|
||||||
mcall , <TAB_STEP * 3 + PAD * 2 + 1, BTN.Y>, ,
|
mcall , <TAB_STEP * 3 + PAD * 2 + 1, BTN.Y>, ,
|
||||||
mcall , <TAB_STEP * 3 + PAD *11, BTN.Y>, , lb_tab_cbox_res
|
mcall , <TAB_STEP * 3 + PAD *11, BTN.Y>, , lb_tab_cbox_res
|
||||||
@@ -124,7 +124,7 @@ MODE_GUI:
|
|||||||
mcall , <TAB_STEP * 3 + PAD, BTN.W>, , 10 + BTN_HIDE + ACTIVE_CHECKBOX
|
mcall , <TAB_STEP * 3 + PAD, BTN.W>, , 10 + BTN_HIDE + ACTIVE_CHECKBOX
|
||||||
|
|
||||||
; tabs content
|
; tabs content
|
||||||
stdcall draw_tabs
|
call draw_tabs
|
||||||
|
|
||||||
mcall SF_REDRAW, SSF_END_DRAW
|
mcall SF_REDRAW, SSF_END_DRAW
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ MODE_GUI:
|
|||||||
mov [active_tab], 1
|
mov [active_tab], 1
|
||||||
|
|
||||||
.tab_draw:
|
.tab_draw:
|
||||||
stdcall draw_tabs
|
call draw_tabs
|
||||||
|
|
||||||
jmp .event_loop
|
jmp .event_loop
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ MODE_GUI:
|
|||||||
movzx eax, ah
|
movzx eax, ah
|
||||||
sub eax, 10
|
sub eax, 10
|
||||||
mov [active_tab], eax
|
mov [active_tab], eax
|
||||||
stdcall draw_tabs
|
call draw_tabs
|
||||||
|
|
||||||
jmp .event_loop
|
jmp .event_loop
|
||||||
|
|
||||||
@@ -168,7 +168,8 @@ MODE_GUI:
|
|||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
proc draw_tabs stdcall
|
draw_tabs:
|
||||||
|
|
||||||
; draw tabs headers underlines
|
; draw tabs headers underlines
|
||||||
mov esi, [active_tab]
|
mov esi, [active_tab]
|
||||||
xor edi, edi
|
xor edi, edi
|
||||||
@@ -218,7 +219,6 @@ proc draw_tabs stdcall
|
|||||||
.tab_cbox:
|
.tab_cbox:
|
||||||
stdcall draw_tab_cbox
|
stdcall draw_tab_cbox
|
||||||
ret
|
ret
|
||||||
endp
|
|
||||||
|
|
||||||
|
|
||||||
proc draw_tab_icons stdcall uses ebx ecx, _shm_name, _meta_c_off, _meta_w_off
|
proc draw_tab_icons stdcall uses ebx ecx, _shm_name, _meta_c_off, _meta_w_off
|
||||||
@@ -249,6 +249,9 @@ proc draw_tab_icons stdcall uses ebx ecx, _shm_name, _meta_c_off, _meta_w_off
|
|||||||
|
|
||||||
stdcall draw_tab_icons_grid, ebx, ecx, edx
|
stdcall draw_tab_icons_grid, ebx, ecx, edx
|
||||||
|
|
||||||
|
mcall SF_SYS_MISC, SSF_MEM_CLOSE, [_shm_name]
|
||||||
|
mcall SF_SYS_MISC, SSF_MEM_CLOSE, meta_name
|
||||||
|
|
||||||
.done:
|
.done:
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -285,7 +288,7 @@ endl
|
|||||||
jae .end_for_icons
|
jae .end_for_icons
|
||||||
push ecx
|
push ecx
|
||||||
|
|
||||||
; SF_PUT_IMAGE_EXT, _icon_img+icon_size*index, <_icon_w, _icon_w>, <x+x_off, y+RES_Y>, 32, 0, 0
|
; SF_PUT_IMAGE_EXT _icon_img+icon_size*index, <_icon_w, _icon_w>, <x+x_off, y+RES_Y>, 32, 0, 0
|
||||||
mov ebx, [icon_size]
|
mov ebx, [icon_size]
|
||||||
imul ebx, ecx
|
imul ebx, ecx
|
||||||
add ebx, [_icon_img]
|
add ebx, [_icon_img]
|
||||||
@@ -306,7 +309,7 @@ endl
|
|||||||
pop ebp
|
pop ebp
|
||||||
pop edi
|
pop edi
|
||||||
|
|
||||||
; draw number, centered in CELL.W
|
; DrawNumber with no leading zeros, centered in CELL.W
|
||||||
mov edx, [x]
|
mov edx, [x]
|
||||||
add edx, GAP
|
add edx, GAP
|
||||||
shl edx, 16
|
shl edx, 16
|
||||||
@@ -342,6 +345,8 @@ proc draw_tab_cbox stdcall
|
|||||||
<CHBOX_WIDTH, CHBOX_HEIGHT>, \
|
<CHBOX_WIDTH, CHBOX_HEIGHT>, \
|
||||||
<(WIN.W - CHBOX_WIDTH)/2, (WIN.H - RES_Y - CHBOX_HEIGHT)/2 + RES_Y>
|
<(WIN.W - CHBOX_WIDTH)/2, (WIN.H - RES_Y - CHBOX_HEIGHT)/2 + RES_Y>
|
||||||
|
|
||||||
|
mcall SF_SYS_MISC, SSF_MEM_CLOSE, lb_tab_cbox
|
||||||
|
|
||||||
.done:
|
.done:
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -353,7 +358,7 @@ MODE_DAEMON:
|
|||||||
stdcall dll.Load, LIBS
|
stdcall dll.Load, LIBS
|
||||||
|
|
||||||
; load shared resources from files
|
; load shared resources from files
|
||||||
DEBUGF DBG_INFO, "@reshare: loading resources...\n"
|
DEBUGF DBG_INFO, "I: @reshare: loading resources...\n"
|
||||||
|
|
||||||
stdcall load_icons, icons32_path, icons32_image, size32
|
stdcall load_icons, icons32_path, icons32_image, size32
|
||||||
stdcall load_icons, icons18_path, icons18_image, size18
|
stdcall load_icons, icons18_path, icons18_image, size18
|
||||||
@@ -405,14 +410,14 @@ MODE_DAEMON:
|
|||||||
mov dword [edi + META_CBOX_SIZE], CHBOX_IMG_SIZE
|
mov dword [edi + META_CBOX_SIZE], CHBOX_IMG_SIZE
|
||||||
|
|
||||||
.meta_done:
|
.meta_done:
|
||||||
DEBUGF DBG_INFO, "@reshare: starting in daemon mode\n"
|
DEBUGF DBG_INFO, "I: @reshare: starting in daemon mode\n"
|
||||||
|
|
||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, lb_tab_cbox, CHBOX_IMG_SIZE, SHM_CREATE + SHM_WRITE
|
mcall SF_SYS_MISC, SSF_MEM_OPEN, lb_tab_cbox, CHBOX_IMG_SIZE, SHM_CREATE + SHM_WRITE
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .skip_cbox
|
jz .skip_cbox
|
||||||
mov esi, cbox_image
|
mov esi, cbox_image
|
||||||
mov edi, eax
|
mov edi, eax
|
||||||
mov ecx, CHBOX_IMG_SIZE
|
mov ecx, CBOX_IMG_SIZE
|
||||||
cld
|
cld
|
||||||
rep movsb
|
rep movsb
|
||||||
.skip_cbox:
|
.skip_cbox:
|
||||||
@@ -430,11 +435,15 @@ MODE_DAEMON:
|
|||||||
stdcall copy_image_to_shm, lb_tab_i18, size18, icons18_image
|
stdcall copy_image_to_shm, lb_tab_i18, size18, icons18_image
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .skip_i18
|
jz .skip_i18
|
||||||
|
mov [shared_i18], eax
|
||||||
|
|
||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, lb_tab_i18w, [size18], SHM_CREATE + SHM_WRITE
|
mcall SF_SYS_MISC, SSF_MEM_OPEN, lb_tab_i18w, [size18], SHM_CREATE + SHM_WRITE
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .skip_i18
|
jz .skip_i18
|
||||||
mov [shared_i18w], eax
|
mov [shared_i18w], eax
|
||||||
|
|
||||||
|
invoke img.destroy, [icons18_image]
|
||||||
|
mov dword [icons18_image], 0
|
||||||
.skip_i18:
|
.skip_i18:
|
||||||
|
|
||||||
mcall SF_SET_EVENTS_MASK, EVM_BACKGROUND
|
mcall SF_SET_EVENTS_MASK, EVM_BACKGROUND
|
||||||
@@ -445,12 +454,11 @@ MODE_DAEMON:
|
|||||||
pop eax
|
pop eax
|
||||||
cmp eax, [sc.work]
|
cmp eax, [sc.work]
|
||||||
je .wait_event
|
je .wait_event
|
||||||
cmp [icons18_image], 0
|
cmp [shared_i18], 0
|
||||||
jz .wait_event
|
jz .wait_event
|
||||||
cmp [shared_i18w], 0
|
cmp [shared_i18w], 0
|
||||||
jz .wait_event
|
jz .wait_event
|
||||||
mov ebx, [icons18_image]
|
mov esi, [shared_i18]
|
||||||
mov esi, [ebx + Image.Data]
|
|
||||||
mov edi, [shared_i18w]
|
mov edi, [shared_i18w]
|
||||||
mov ecx, [size18]
|
mov ecx, [size18]
|
||||||
shr ecx, 2 ; / 4 to get size in dwords
|
shr ecx, 2 ; / 4 to get size in dwords
|
||||||
@@ -483,33 +491,12 @@ proc load_icons stdcall uses ebx ecx, _path, _img_ptr, _size_ptr
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.fail:
|
.fail:
|
||||||
DEBUGF DBG_ERR, "@reshare: error loading icons from %s\", [_path]
|
DEBUGF DBG_ERR, "E: @reshare: error loading icons from %s\", [_path]
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
||||||
proc copy_image_to_shm stdcall uses ebx ecx edx esi edi, _shm_name, _size_ptr, _image_ptr
|
|
||||||
mov edx, [_size_ptr]
|
|
||||||
mov edx, [edx]
|
|
||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, [_shm_name], edx, SHM_CREATE + SHM_WRITE
|
|
||||||
test eax, eax
|
|
||||||
jz .done
|
|
||||||
mov ebx, [_image_ptr]
|
|
||||||
mov ebx, [ebx]
|
|
||||||
mov esi, [ebx + Image.Data]
|
|
||||||
mov edi, eax
|
|
||||||
mov ecx, [_size_ptr]
|
|
||||||
mov ecx, [ecx]
|
|
||||||
shr ecx, 2 ; / 4 to get size in dwords
|
|
||||||
cld
|
|
||||||
rep movsd
|
|
||||||
|
|
||||||
.done:
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
|
|
||||||
proc replace_2cols stdcall uses edi, imgsrc, imgsize, color_old_1, color_new_1, color_old_2, color_new_2
|
proc replace_2cols stdcall uses edi, imgsrc, imgsize, color_old_1, color_new_1, color_old_2, color_new_2
|
||||||
mov edx, [imgsize]
|
mov edx, [imgsize]
|
||||||
add edx, [imgsrc]
|
add edx, [imgsrc]
|
||||||
@@ -541,9 +528,6 @@ endp
|
|||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
ICON_32_SIZE = 32
|
|
||||||
ICON_18_SIZE = 18
|
|
||||||
|
|
||||||
BORD = 5
|
BORD = 5
|
||||||
PAD = 8
|
PAD = 8
|
||||||
GAP = 12
|
GAP = 12
|
||||||
@@ -589,12 +573,8 @@ lb_tab_cbox db "CHECKBOX", 0
|
|||||||
|
|
||||||
lb_tab_i32_res db "32x32x32bpp", 0
|
lb_tab_i32_res db "32x32x32bpp", 0
|
||||||
lb_tab_i18_res db "18x18x32bpp", 0
|
lb_tab_i18_res db "18x18x32bpp", 0
|
||||||
lb_tab_i18w_res db "18x18x32bpp", 0
|
|
||||||
lb_tab_cbox_res db "13x13x24bpp", 0
|
lb_tab_cbox_res db "13x13x24bpp", 0
|
||||||
|
|
||||||
dg_icons32_fail db "@reshare: error, icons32 not found in %s\n", 0
|
|
||||||
dg_icons18_fail db "@reshare: error, icons18 not found in %s\n", 0
|
|
||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
DBG_ALL = 0 ; all messages
|
DBG_ALL = 0 ; all messages
|
||||||
@@ -646,15 +626,13 @@ size32 dd 0
|
|||||||
size18 dd 0
|
size18 dd 0
|
||||||
|
|
||||||
; currenly selected i18w section
|
; currenly selected i18w section
|
||||||
|
shared_i18 dd 0
|
||||||
shared_i18w dd 0
|
shared_i18w dd 0
|
||||||
|
|
||||||
active_tab dd ACTIVE_ICONS32
|
active_tab dd ACTIVE_ICONS32
|
||||||
|
|
||||||
sc system_colors
|
sc system_colors
|
||||||
|
|
||||||
thread_info process_information
|
|
||||||
thread_name rb 16
|
|
||||||
|
|
||||||
include_debug_strings
|
include_debug_strings
|
||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user