Subversion Repositories Kolibri OS

Rev

Rev 387 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 387 Rev 427
Line 112... Line 112...
112
           mov ecx, 6
112
           mov ecx, 6
113
           cld
113
           cld
114
           rep movsd
114
           rep movsd
115
@@:
115
@@:
116
           mov ecx, [CURRENT_TASK]
116
           mov ecx, [current_slot]
117
           shl ecx,8
117
           add ecx, APP_OBJ_OFFSET
118
           add ecx, SLOT_BASE+APP_OBJ_OFFSET
-
 
119
 
118
 
Line 120... Line 119...
120
           pushfd
119
           pushfd
121
           cli
120
           cli
122
           mov edx, [ecx+APPOBJ.fd]
121
           mov edx, [ecx+APPOBJ.fd]
123
           mov [eax+APPOBJ.fd], edx
122
           mov [eax+APPOBJ.fd], edx
Line 215... Line 214...
215
align 4
214
align 4
216
proc get_event_ex stdcall, p_ev:dword, timeout:dword
215
proc get_event_ex stdcall, p_ev:dword, timeout:dword
Line 217... Line 216...
217
 
216
 
218
.wait:
217
.wait:
219
           mov edx,[CURRENT_TASK]
-
 
220
           shl edx,8
218
           mov edx,[current_slot]
221
;           cmp [SLOT_BASE+edx+APPDATA.ev_count], 0
219
;           cmp [SLOT_BASE+edx+APPDATA.ev_count], 0
Line 222... Line 220...
222
;           je .switch
220
;           je .switch
Line 223... Line 221...
223
 
221
 
224
           add edx, SLOT_BASE+APP_EV_OFFSET
222
           add edx, APP_EV_OFFSET
225
 
223
 
Line 298... Line 296...
298
 
296
 
Line 299... Line 297...
299
           test [eax+EVENT.state], MANUAL_RESET
297
           test [eax+EVENT.state], MANUAL_RESET
300
           jnz .done
298
           jnz .done
Line 301... Line 299...
301
 
299
 
302
           mov edx,[CURRENT_TASK]
-
 
303
           shl edx,8
-
 
Line 304... Line 300...
304
           add edx, SLOT_BASE
300
           mov edx,[current_slot]
305
 
301
 
306
           pushfd
302
           pushfd
307
           cli                         ;remove event from events
303
           cli                         ;remove event from events
Line 573... Line 569...
573
 
569
 
574
     ;mov   edi,[TASK_BASE]              ; mouse event
570
     ;mov   edi,[TASK_BASE]              ; mouse event
575
     test  [edi+TASKDATA.event_mask],dword 00100000b
571
     test  [edi+TASKDATA.event_mask],dword 00100000b
576
     jz    no_mouse_event
572
     jz    no_mouse_event
577
     mov   eax,[CURRENT_TASK]
-
 
578
     shl   eax,8
573
     mov   eax,[current_slot]
579
     test  [eax+SLOT_BASE+APPDATA.event_mask],dword 00100000b
574
     test  [eax+APPDATA.event_mask],dword 00100000b
580
     jz    no_mouse_event
575
     jz    no_mouse_event
581
     and   [eax+SLOT_BASE+APPDATA.event_mask],dword 0xffffffff-00100000b
576
     and   [eax+APPDATA.event_mask],dword 0xffffffff-00100000b
582
     popad
577
     popad
583
     mov   eax,6
578
     mov   eax,6
584
     ret
579
     ret
Line 597... Line 592...
597
 
592
 
Line 598... Line 593...
598
     ;mov   edi,[TASK_BASE]              ; IPC
593
     ;mov   edi,[TASK_BASE]              ; IPC
599
     test  [edi+TASKDATA.event_mask],dword 01000000b
594
     test  [edi+TASKDATA.event_mask],dword 01000000b
600
     jz    no_ipc
595
     jz    no_ipc
601
     mov   eax,[CURRENT_TASK]
596
     mov   eax,[current_slot]
602
     shl   eax,8
-
 
603
     test  [eax+SLOT_BASE+APPDATA.event_mask],dword 01000000b
597
     test  [eax+APPDATA.event_mask],dword 01000000b
604
     jz    no_ipc
598
     jz    no_ipc
605
     and   [eax+SLOT_BASE+APPDATA.event_mask],dword 0xffffffff-01000000b
599
     and   [eax+APPDATA.event_mask],dword 0xffffffff-01000000b
606
     popad
600
     popad
607
     mov   eax,7
601
     mov   eax,7
608
     ret
602
     ret
609
   no_ipc:
603
no_ipc:
Line 610... Line 604...
610
 
604
 
611
 
605
 
612
     ;mov   edi,[TASK_BASE]              ; STACK
606
     ;mov   edi,[TASK_BASE]              ; STACK
613
     test  [edi+TASKDATA.event_mask],dword 10000000b
607
     test  [edi+TASKDATA.event_mask],dword 10000000b
614
     jz    no_stack_event
-
 
615
     mov   eax,[CURRENT_TASK]
608
     jz    no_stack_event
616
     shl   eax,8
609
     mov   eax,[current_slot]
617
     test  [eax+SLOT_BASE+APPDATA.event_mask],dword 10000000b
610
     test  [eax+APPDATA.event_mask],dword 10000000b
618
     jz    no_stack_event
611
     jz    no_stack_event
619
     and   [eax+SLOT_BASE+APPDATA.event_mask],dword 0xffffffff-10000000b
612
     and   [eax+APPDATA.event_mask],dword 0xffffffff-10000000b
620
     popad
613
     popad
621
     mov   eax,8
614
     mov   eax,8
Line 622... Line 615...
622
     ret
615
     ret
623
   no_stack_event:
616
no_stack_event:
624
 
617
 
625
     test  byte [edi+TASKDATA.event_mask+1], 1		; DEBUG
-
 
626
     jz    .test_IRQ
618
     test  byte [edi+TASKDATA.event_mask+1], 1		; DEBUG
627
     mov   eax, [CURRENT_TASK]
619
     jz    .test_IRQ
628
     shl   eax, 8
620
     mov   eax, [current_slot]
629
     test  byte [eax+SLOT_BASE+APPDATA.event_mask+1], byte 1
621
     test  byte [eax+APPDATA.event_mask+1], byte 1
630
     jz    .test_IRQ
622
     jz    .test_IRQ
631
     and   byte [eax+SLOT_BASE+APPDATA.event_mask+1], not 1
623
     and   byte [eax+APPDATA.event_mask+1], not 1
Line 632... Line 624...
632
     popad
624
     popad