diff --git a/dix/events.c b/dix/events.c index 4e64fa2b6..806664671 100644 --- a/dix/events.c +++ b/dix/events.c @@ -1053,6 +1053,19 @@ GetSpritePosition(DeviceIntPtr pDev, int *px, int *py) *py = pSprite->hotPhys.y; } +#ifdef PANORAMIX +int +XineramaGetCursorScreen(DeviceIntPtr pDev) +{ + if (!noPanoramiXExtension) { + return pDev->spriteInfo->sprite->screen->myNum; + } + else { + return 0; + } +} +#endif /* PANORAMIX */ + #define TIMESLOP (5 * 60 * 1000) /* 5 minutes */ static void diff --git a/include/cursor.h b/include/cursor.h index 50796d047..7167f4707 100644 --- a/include/cursor.h +++ b/include/cursor.h @@ -57,6 +57,8 @@ SOFTWARE. /* Provide support for alpha composited cursors */ #define ARGB_CURSOR +struct _DeviceIntRec; + typedef struct _Cursor *CursorPtr; // FUN FACT: If you typedef a pointer type, like the `CursorPtr` above // then `const CursorPtr` or `CursorPtr const` actually means `struct _Cursor *const`, a constant pointer @@ -68,4 +70,8 @@ typedef struct _CursorMetric *CursorMetricPtr; extern _X_EXPORT int FreeCursor(void *pCurs, XID cid); +#ifdef PANORAMIX +extern _X_EXPORT int XineramaGetCursorScreen(struct _DeviceIntRec *pDev); +#endif /* PANORAMIX */ + #endif /* CURSOR_H */ diff --git a/record/record.c b/record/record.c index e8004a85f..c6ff5a27e 100644 --- a/record/record.c +++ b/record/record.c @@ -34,7 +34,6 @@ and Jim Haggerty of Metheus. #include -#include "dix/cursor_priv.h" #include "dix/eventconvert.h" #include "os/osdep.h" @@ -722,7 +721,7 @@ RecordSendProtocolEvents(RecordClientsAndProtocolPtr pRCAP, pev->u.u.type == ButtonPress || pev->u.u.type == ButtonRelease || pev->u.u.type == KeyPress || pev->u.u.type == KeyRelease)) { - int scr = inputInfo.pointer->spriteInfo->sprite->screen->myNum; + int scr = XineramaGetCursorScreen(inputInfo.pointer); memcpy(&shiftedEvent, pev, sizeof(xEvent)); shiftedEvent.u.keyButtonPointer.rootX +=