summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2016-09-13 15:16:55 +0800
committerKeith Packard <keithp@keithp.com>2016-09-19 08:54:56 -0700
commitdaf48a3aba7d5c42d7156f0d0e2b1d8aae423303 (patch)
treef28078a58f6f059616cafb632d5f32478b156fa8
parent3ef51c5c74297937002668b0c507fa88550db67e (diff)
dix: Introduce CursorWarpedTo vfunc in Screen
This new vfunc will be called, if set, after a client has issued a WarpPointer request. This is necessary for implementing pointer warp emulation in Xwayland. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--dix/events.c3
-rw-r--r--include/scrnintstr.h9
2 files changed, 12 insertions, 0 deletions
diff --git a/dix/events.c b/dix/events.c
index 6610b91d1..87f080e16 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3609,6 +3609,9 @@ ProcWarpPointer(ClientPtr client)
else if (!PointerConfinedToScreen(dev)) {
NewCurrentScreen(dev, newScreen, x, y);
}
+ if (*newScreen->CursorWarpedTo)
+ (*newScreen->CursorWarpedTo) (dev, newScreen, client,
+ dest, pSprite, x, y);
return Success;
}
diff --git a/include/scrnintstr.h b/include/scrnintstr.h
index 52e8382bf..faf9f8d41 100644
--- a/include/scrnintstr.h
+++ b/include/scrnintstr.h
@@ -233,6 +233,14 @@ typedef Bool (*SetCursorPositionProcPtr) (DeviceIntPtr /* pDev */ ,
int /*y */ ,
Bool /*generateEvent */ );
+typedef void (*CursorWarpedToProcPtr) (DeviceIntPtr /* pDev */ ,
+ ScreenPtr /*pScreen */ ,
+ ClientPtr /*pClient */ ,
+ WindowPtr /*pWindow */ ,
+ SpritePtr /*pSprite */ ,
+ int /*x */ ,
+ int /*y */ );
+
typedef Bool (*CreateGCProcPtr) (GCPtr /*pGC */ );
typedef Bool (*CreateColormapProcPtr) (ColormapPtr /*pColormap */ );
@@ -554,6 +562,7 @@ typedef struct _Screen {
UnrealizeCursorProcPtr UnrealizeCursor;
RecolorCursorProcPtr RecolorCursor;
SetCursorPositionProcPtr SetCursorPosition;
+ CursorWarpedToProcPtr CursorWarpedTo;
/* GC procedures */