diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2016-09-13 15:16:55 +0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2016-09-19 08:54:56 -0700 |
commit | daf48a3aba7d5c42d7156f0d0e2b1d8aae423303 (patch) | |
tree | f28078a58f6f059616cafb632d5f32478b156fa8 | |
parent | 3ef51c5c74297937002668b0c507fa88550db67e (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.c | 3 | ||||
-rw-r--r-- | include/scrnintstr.h | 9 |
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 */ |