diff options
author | Jeremy Huddleston <jeremyhu@freedesktop.org> | 2008-05-02 16:53:45 -0700 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@freedesktop.org> | 2008-05-02 17:42:19 -0700 |
commit | eb9187cb087841aa4d6ca82533bec9f30f069e37 (patch) | |
tree | 66e81d27073b2a889c64e3ba1a87535958a7d7e6 | |
parent | f93f835588e9c1a733f8e70ad5d69ccc0ff1d72b (diff) |
XQuartz: Avoid a possible crash at startup due to unfavorable context switching.
(cherry picked from commit ff10c37bdd09656cf2f7ee9577f5552caa1ffdb8)
-rw-r--r-- | hw/xquartz/darwinEvents.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c index 161fd9d52..2c95ed7c3 100644 --- a/hw/xquartz/darwinEvents.c +++ b/hw/xquartz/darwinEvents.c @@ -365,6 +365,7 @@ void DarwinSendPointerEvents(int ev_type, int ev_button, int pointer_x, int poin static int darwinFakeMouseButtonMask = 0; int i, num_events; DeviceIntPtr dev; + ScreenPtr screen; // DEBUG_LOG("x=%d, y=%d, p=%f, tx=%f, ty=%f\n", pointer_x, pointer_y, pressure, tilt_x, tilt_y); @@ -415,11 +416,12 @@ void DarwinSendPointerEvents(int ev_type, int ev_button, int pointer_x, int poin darwinEvents_lock(); { num_events = GetPointerEvents(darwinEvents, dev, ev_type, ev_button, POINTER_ABSOLUTE, 0, dev==darwinTablet?5:2, valuators); - for(i=0; i<num_events; i++) { + screen = miPointerGetScreen(dev); + for(i=0; i<num_events && screen; i++) { darwinEvents[i].u.keyButtonPointer.rootX -= darwinMainScreenX + - dixScreenOrigins[miPointerCurrentScreen()->myNum].x; + dixScreenOrigins[screen->myNum].x; darwinEvents[i].u.keyButtonPointer.rootY -= darwinMainScreenY + - dixScreenOrigins[miPointerCurrentScreen()->myNum].y; + dixScreenOrigins[screen->myNum].y; mieqEnqueue (dev, &darwinEvents[i]); } DarwinPokeEQ(); |