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>
This commit is contained in:
Jonas Ådahl 2016-09-13 15:16:55 +08:00 committed by Keith Packard
parent 3ef51c5c74
commit daf48a3aba
2 changed files with 12 additions and 0 deletions

View File

@ -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;
}

View File

@ -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 */