Ver código fonte

* give up timeslices while waiting in SysGetMouseEvent, compilation fix plus change of pointer conversion to unsigned

git-svn-id: trunk@7937 -
Tomas Hajny 18 anos atrás
pai
commit
581515d8e5
1 arquivos alterados com 9 adições e 3 exclusões
  1. 9 3
      rtl/go32v2/mouse.pp

+ 9 - 3
rtl/go32v2/mouse.pp

@@ -740,6 +740,8 @@ const
   LastCallcounter : longint = 0;
 
 procedure SysGetMouseEvent(var MouseEvent: TMouseEvent);
+var
+ RR: TRealRegs;
 begin
   if not MousePresent then
     begin
@@ -754,11 +756,15 @@ begin
 {$endif EXTMOUSEDEBUG}
   LastCallcounter:=Callcounter;
 {$endif DEBUG}
-  repeat until PendingMouseEvents>0;
+  while PendingMouseEvents = 0 do
+   begin
+(* Give up time slices while waiting for mouse events. *)
+    RealIntr ($28, RR);
+   end;
   MouseEvent:=PendingMouseHead^;
   inc(PendingMouseHead);
-  if longint(PendingMouseHead)=longint(@PendingMouseEvent)+sizeof(PendingMouseEvent) then
-   PendingMouseHead:=@PendingMouseEvent;
+  if ptruint(PendingMouseHead)=ptruint(@PendingMouseEvent)+sizeof(PendingMouseEvent) then
+   PendingMouseHead:=PMouseEvent(@PendingMouseEvent);
   dec(PendingMouseEvents);
   if (LastMouseEvent.x<>MouseEvent.x) or (LastMouseEvent.y<>MouseEvent.y) then
    MouseEvent.Action:=MouseActionMove;