Rev 1635 | Rev 2434 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1635 | Rev 2106 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
4 | ;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;; |
4 | ;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 1513 $ |
8 | $Revision: 2106 $ |
9 | 9 | ||
10 | WINDOW_MOVE_AND_RESIZE_FLAGS = \ |
10 | WINDOW_MOVE_AND_RESIZE_FLAGS = \ |
11 | mouse.WINDOW_RESIZE_N_FLAG + \ |
11 | mouse.WINDOW_RESIZE_N_FLAG + \ |
Line 433... | Line 433... | ||
433 | .loop: ; ïîêà íå èñ÷åðïàåì âñå áèòû ìàñêè |
433 | .loop: ; ïîêà íå èñ÷åðïàåì âñå áèòû ìàñêè |
434 | bsr eax,ecx ; íàõîäèì íåíóëåâîé áèò ìàñêè (31 -> 0) |
434 | bsr eax,ecx ; íàõîäèì íåíóëåâîé áèò ìàñêè (31 -> 0) |
435 | jz .no_events ; èñ÷åðïàëè âñå áèòû ìàñêè, íî íè÷åãî íå íàøëè ??? |
435 | jz .no_events ; èñ÷åðïàëè âñå áèòû ìàñêè, íî íè÷åãî íå íàøëè ??? |
436 | btr ecx,eax ; ñáðàñûâàåì ïðîâåðÿåìûé áèò ìàñêè |
436 | btr ecx,eax ; ñáðàñûâàåì ïðîâåðÿåìûé áèò ìàñêè |
437 | ; ïåðåõîäèì íà îáðàáîò÷èê ýòîãî (eax) áèòà |
437 | ; ïåðåõîäèì íà îáðàáîò÷èê ýòîãî (eax) áèòà |
438 | cmp eax,16 |
- | |
439 | jae .IRQ ; eax=[16..31]=retvals, events irq0..irq15 |
- | |
440 | cmp eax,9 |
438 | cmp eax,9 |
441 | jae .loop ; eax=[9..15], ignored |
439 | jae .loop ; eax=[9..31], ignored |
442 | cmp eax,3 |
440 | cmp eax,3 |
443 | je .loop ; eax=3, ignored |
441 | je .loop ; eax=3, ignored |
444 | ja .FlagAutoReset ; eax=[4..8], retvals=eax+1 |
442 | ja .FlagAutoReset ; eax=[4..8], retvals=eax+1 |
445 | cmp eax,1 |
443 | cmp eax,1 |
446 | jae .BtKy ; eax=[1,2], retvals=eax+1 |
444 | jae .BtKy ; eax=[1,2], retvals=eax+1 |
Line 449... | Line 447... | ||
449 | jne .result |
447 | jne .result |
450 | jmp .loop |
448 | jmp .loop |
451 | .no_events: |
449 | .no_events: |
452 | xor eax,eax |
450 | xor eax,eax |
453 | ret |
451 | ret |
454 | .IRQ: |
452 | |
455 | ;TODO: ñäåëàòü òàê æå, êàê è äëÿ FlagAutoReset (BgrRedraw,Mouse,IPC,Stack,Debug) |
- | |
456 | mov edx,[irq_owner+eax*4-64] ; eax==16+irq |
- | |
457 | cmp edx,[edi+TASKDATA.pid] |
- | |
458 | jne .loop |
- | |
459 | mov edx,eax |
- | |
460 | shl edx,12 |
- | |
461 | cmp dword[IRQ_SAVE+edx-0x10000],0 ; edx==(16+irq)*0x1000 |
- | |
462 | je .loop ; empty ??? |
- | |
463 | ret ; retval = eax |
- | |
464 | .FlagAutoReset: ; retvals: BgrRedraw=5, Mouse=6, IPC=7, Stack=8, Debug=9 |
453 | .FlagAutoReset: ; retvals: BgrRedraw=5, Mouse=6, IPC=7, Stack=8, Debug=9 |
465 | cmp eax,5 ; Mouse 5+1=6 |
454 | cmp eax,5 ; Mouse 5+1=6 |
466 | jne @f |
455 | jne @f |
467 | push eax |
456 | push eax |
468 | ; If the window is captured and moved by the user, then no mouse events!!! |
457 | ; If the window is captured and moved by the user, then no mouse events!!! |