Allow mouse to be locked when grabbed with GEM driver
authorPatrice Mandin <patmandin@gmail.com>
Tue, 12 Sep 2006 19:43:29 +0000
changeset 2023 b7d426b28c18
parent 2022 649e9ac39f74
child 2024 cb0fd9cdd2a9
Allow mouse to be locked when grabbed with GEM driver
src/video/ataricommon/SDL_xbiosevents.c
src/video/ataricommon/SDL_xbiosevents_c.h
src/video/ataricommon/SDL_xbiosinterrupt.S
src/video/ataricommon/SDL_xbiosinterrupt_s.h
--- a/src/video/ataricommon/SDL_xbiosevents.c	Tue Sep 12 19:23:51 2006 +0000
+++ b/src/video/ataricommon/SDL_xbiosevents.c	Tue Sep 12 19:43:29 2006 +0000
@@ -50,7 +50,8 @@
     void *oldpile;
 
     /* Clear variables */
-    SDL_AtariXbios_mouseb =
+    SDL_AtariXbios_mouselock =
+        SDL_AtariXbios_mouseb =
         SDL_AtariXbios_mousex =
         SDL_AtariXbios_mousey =
         SDL_AtariXbios_joystick = atari_prevmouseb = 0;
@@ -151,4 +152,8 @@
     }
 }
 
+void SDL_AtariXbios_LockMousePosition(SDL_bool lockPosition)
+{
+    SDL_AtariXbios_mouselock = lockPosition;
+}
 /* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_xbiosevents_c.h	Tue Sep 12 19:23:51 2006 +0000
+++ b/src/video/ataricommon/SDL_xbiosevents_c.h	Tue Sep 12 19:43:29 2006 +0000
@@ -43,6 +43,7 @@
 extern void SDL_AtariXbios_InstallVectors(int vectors_mask);
 extern void SDL_AtariXbios_RestoreVectors(void);
 extern void SDL_AtariXbios_PostMouseEvents(_THIS, SDL_bool buttonEvents);
+extern void SDL_AtariXbios_LockMousePosition(SDL_bool lockPosition);
 
 #endif /* _SDL_XBIOSEVENTS_H_ */
 /* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/ataricommon/SDL_xbiosinterrupt.S	Tue Sep 12 19:23:51 2006 +0000
+++ b/src/video/ataricommon/SDL_xbiosinterrupt.S	Tue Sep 12 19:43:29 2006 +0000
@@ -33,6 +33,7 @@
 	.globl	_SDL_AtariXbios_MouseVector
 	.globl	_SDL_AtariXbios_JoystickVector
 
+	.globl	_SDL_AtariXbios_mouselock
 	.globl	_SDL_AtariXbios_mouseb
 	.globl	_SDL_AtariXbios_mousex
 	.globl	_SDL_AtariXbios_mousey
@@ -125,6 +126,13 @@
 	extw	d0
 	addw	d0,_SDL_AtariXbios_mousey
 
+	/* Lock mouse position ? */
+	tstw	_SDL_AtariXbios_mouselock
+	beq.s	no_mouse_lock
+	clrb	a0@(1)
+	clrb	a0@(2)
+no_mouse_lock:
+
 	/* Jump through old vector */
 	movel	sp@+,d0
 
@@ -133,10 +141,9 @@
 
 	.data
 	.even
+	.comm	_SDL_AtariXbios_mouselock,2*1
 	.comm	_SDL_AtariXbios_mousex,2*1
-	.even
 	.comm	_SDL_AtariXbios_mousey,2*1
-	.even
 	.comm	_SDL_AtariXbios_mouseb,2*1
 
 /*--- Our joystick vector ---*/
--- a/src/video/ataricommon/SDL_xbiosinterrupt_s.h	Tue Sep 12 19:23:51 2006 +0000
+++ b/src/video/ataricommon/SDL_xbiosinterrupt_s.h	Tue Sep 12 19:43:29 2006 +0000
@@ -36,6 +36,7 @@
 
 /* Variables */
 
+extern volatile Uint16 SDL_AtariXbios_mouselock;   /* mouse lock position */
 extern volatile Uint16 SDL_AtariXbios_mouseb;   /* buttons */
 extern volatile Sint16 SDL_AtariXbios_mousex;   /* X relative motion */
 extern volatile Sint16 SDL_AtariXbios_mousey;   /* Y relative motion */