Subversion Repositories Kolibri OS

Rev

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!!!