diff options
Diffstat (limited to 'mi')
-rw-r--r-- | mi/mi.h | 2 | ||||
-rw-r--r-- | mi/mieq.c | 19 | ||||
-rw-r--r-- | mi/mipointer.h | 2 |
3 files changed, 19 insertions, 4 deletions
@@ -206,7 +206,7 @@ extern _X_EXPORT void mieqEnqueue( extern _X_EXPORT void mieqSwitchScreen( DeviceIntPtr /* pDev */, ScreenPtr /*pScreen*/, - Bool /*fromDIX*/ + Bool /*set_dequeue_screen*/ ); extern _X_EXPORT void mieqProcessDeviceEvent( @@ -209,14 +209,29 @@ mieqEnqueue(DeviceIntPtr pDev, InternalEvent *e) #endif } +/** + * Changes the screen reference events are being enqueued from. + * Input events are enqueued with a screen reference and dequeued and + * processed with a (potentially different) screen reference. + * This function is called whenever a new event has changed screen but is + * still logically on the previous screen as seen by the client. + * This usually happens whenever the visible cursor moves across screen + * boundaries during event generation, before the same event is processed + * and sent down the wire. + * + * @param pDev The device that triggered a screen change. + * @param pScreen The new screen events are being enqueued for. + * @param set_dequeue_screen If TRUE, pScreen is set as both enqueue screen + * and dequeue screen. + */ void -mieqSwitchScreen(DeviceIntPtr pDev, ScreenPtr pScreen, Bool fromDIX) +mieqSwitchScreen(DeviceIntPtr pDev, ScreenPtr pScreen, Bool set_dequeue_screen) { #ifdef XQUARTZ pthread_mutex_lock(&miEventQueueMutex); #endif EnqueueScreen(pDev) = pScreen; - if (fromDIX) + if (set_dequeue_screen) DequeueScreen(pDev) = pScreen; #ifdef XQUARTZ pthread_mutex_unlock(&miEventQueueMutex); diff --git a/mi/mipointer.h b/mi/mipointer.h index 539096e78..c4265f9d8 100644 --- a/mi/mipointer.h +++ b/mi/mipointer.h @@ -87,7 +87,7 @@ typedef struct _miPointerScreenFuncRec { void (*NewEventScreen)( DeviceIntPtr /* pDev */, ScreenPtr /* pScr */, - Bool /* fromDIX */ + Bool /* set_dequeue_screen */ ); } miPointerScreenFuncRec, *miPointerScreenFuncPtr; |