diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c index 135e41920..54925cb2b 100644 --- a/hw/xquartz/darwinEvents.c +++ b/hw/xquartz/darwinEvents.c @@ -107,7 +107,7 @@ static pthread_t create_thread(void *func, void *arg) { return tid; } -static inline void darwinEvents_lock(void) { +void darwinEvents_lock(void) { int err; if((err = pthread_mutex_lock(&mieq_lock))) { ErrorF("%s:%s:%d: Failed to lock mieq_lock: %d\n", @@ -119,7 +119,7 @@ static inline void darwinEvents_lock(void) { } } -static inline void darwinEvents_unlock(void) { +void darwinEvents_unlock(void) { int err; if((err = pthread_mutex_unlock(&mieq_lock))) { ErrorF("%s:%s:%d: Failed to unlock mieq_lock: %d\n", diff --git a/mi/mipointer.c b/mi/mipointer.c index b86a26a97..85a6eaeea 100644 --- a/mi/mipointer.c +++ b/mi/mipointer.c @@ -486,6 +486,12 @@ miPointerGetPosition(DeviceIntPtr pDev, int *x, int *y) *y = miPointer.y; } +#ifdef XQUARTZ +#include +void darwinEvents_lock(void); +void darwinEvents_unlock(void); +#endif + void miPointerMove (ScreenPtr pScreen, int x, int y, unsigned long time) { @@ -512,6 +518,12 @@ miPointerMove (ScreenPtr pScreen, int x, int y, unsigned long time) nevents = GetPointerEvents(events, inputInfo.pointer, MotionNotify, 0, POINTER_ABSOLUTE, 0, 2, valuators); +#ifdef XQUARTZ + darwinEvents_lock(); +#endif for (i = 0; i < nevents; i++) mieqEnqueue(inputInfo.pointer, &events[i]); +#ifdef XQUARTZ + darwinEvents_unlock(); +#endif }