summaryrefslogtreecommitdiff
path: root/dix
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2006-10-23 02:48:30 +0300
committerDaniel Stone <daniels@endtroducing.fooishbar.org>2006-10-23 02:48:30 +0300
commiteec182259112fba240751f974f7e5ca09fce8b9d (patch)
treee6f78699664a10a7433a3c36c3dcad84fa715137 /dix
parentbc701a14292da5abfb601e3a040651a74f46df8f (diff)
dix/getevents: move SyntheticMotion to getevents.c
Mostly, this is just a cheesy hack to ensure that getevents.o gets included when linking. Sigh.
Diffstat (limited to 'dix')
-rw-r--r--dix/events.c33
-rw-r--r--dix/getevents.c34
2 files changed, 41 insertions, 26 deletions
diff --git a/dix/events.c b/dix/events.c
index e1a3e75d4..321c5529a 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -320,11 +320,16 @@ static CARD8 criticalEvents[32] =
};
#ifdef PANORAMIX
-
static void ConfineToShape(RegionPtr shape, int *px, int *py);
-static void SyntheticMotion(int x, int y);
+static void PostSyntheticMotion(int x, int y, int screenNum, int time);
static void PostNewCursor(void);
+#define SyntheticMotion(x, y) \
+ PostSyntheticMotion(x, y, sprite.screen->myNum, \
+ syncEvents.playingEvents ? \
+ syncEvents.time.milliseconds : \
+ currentTime.milliseconds);
+
static Bool
XineramaSetCursorPosition(
int x,
@@ -667,30 +672,6 @@ SetCriticalEvent(int event)
criticalEvents[event >> 3] |= 1 << (event & 7);
}
-static void
-SyntheticMotion(int x, int y)
-{
- xEvent xE;
-
-#ifdef PANORAMIX
- /* Translate back to the sprite screen since processInputProc
- will translate from sprite screen to screen 0 upon reentry
- to the DIX layer */
- if(!noPanoramiXExtension) {
- x += panoramiXdataPtr[0].x - panoramiXdataPtr[sprite.screen->myNum].x;
- y += panoramiXdataPtr[0].y - panoramiXdataPtr[sprite.screen->myNum].y;
- }
-#endif
- xE.u.keyButtonPointer.rootX = x;
- xE.u.keyButtonPointer.rootY = y;
- if (syncEvents.playingEvents)
- xE.u.keyButtonPointer.time = syncEvents.time.milliseconds;
- else
- xE.u.keyButtonPointer.time = currentTime.milliseconds;
- xE.u.u.type = MotionNotify;
- (*inputInfo.pointer->public.processInputProc)(&xE, inputInfo.pointer, 1);
-}
-
#ifdef SHAPE
static void
ConfineToShape(RegionPtr shape, int *px, int *py)
diff --git a/dix/getevents.c b/dix/getevents.c
index 03fe5fe4e..ca199c63b 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -51,6 +51,11 @@ extern Bool XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies);
#include "xace.h"
#endif
+#ifdef PANORAMIX
+#include "panoramiX.h"
+#include "panoramiXsrv.h"
+#endif
+
#include <X11/extensions/XIproto.h>
#include "exglobals.h"
#include "exevents.h"
@@ -546,3 +551,32 @@ SwitchCorePointer(DeviceIntPtr pDev)
if (inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr != pDev)
inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr = pDev;
}
+
+
+/**
+ * Synthesize a single motion event for the core pointer.
+ *
+ * Used in cursor functions, e.g. when cursor confinement changes, and we need
+ * to shift the pointer to get it inside the new bounds.
+ */
+void
+PostSyntheticMotion(int x, int y, int screenNum, unsigned long time)
+{
+ xEvent xE = { 0, };
+
+#ifdef PANORAMIX
+ /* Translate back to the sprite screen since processInputProc
+ will translate from sprite screen to screen 0 upon reentry
+ to the DIX layer. */
+ if (!noPanoramiXExtension) {
+ x += panoramiXdataPtr[0].x - panoramiXdataPtr[screenNum].x;
+ y += panoramiXdataPtr[0].y - panoramiXdataPtr[screenNum].y;
+ }
+#endif
+
+ xE.u.u.type = MotionNotify;
+ xE.u.keyButtonPointer.rootX = x;
+ xE.u.keyButtonPointer.rootY = y;
+
+ (*inputInfo.pointer->public.processInputProc)(&xE, inputInfo.pointer, 1);
+}