diff --git a/xorg-server-revert-event-mask.patch b/xorg-server-revert-event-mask.patch new file mode 100644 index 0000000..51ef670 --- /dev/null +++ b/xorg-server-revert-event-mask.patch @@ -0,0 +1,90 @@ +diff --git a/dix/events.c b/dix/events.c +index ae9847c..e1c3d0a 100644 +--- a/dix/events.c ++++ b/dix/events.c +@@ -3420,7 +3420,6 @@ CheckPassiveGrabsOnWindow( + { + DeviceIntPtr gdev; + XkbSrvInfoPtr xkbi = NULL; +- Mask mask = 0; + + gdev= grab->modifierDevice; + if (grab->grabtype == GRABTYPE_CORE) +@@ -3535,9 +3534,6 @@ CheckPassiveGrabsOnWindow( + } + xE = &core; + count = 1; +- mask = grab->eventMask; +- if (grab->ownerEvents) +- mask |= pWin->eventMask; + } else if (match & XI2_MATCH) + { + rc = EventToXI2((InternalEvent*)event, &xE); +@@ -3549,34 +3545,6 @@ CheckPassiveGrabsOnWindow( + continue; + } + count = 1; +- +- /* FIXME: EventToXI2 returns NULL for enter events, so +- * dereferencing the event is bad. Internal event types are +- * aligned with core events, so the else clause is valid. +- * long-term we should use internal events for enter/focus +- * as well */ +- if (xE) +- mask = grab->xi2mask[device->id][((xGenericEvent*)xE)->evtype/8]; +- else if (event->type == XI_Enter || event->type == XI_FocusIn) +- mask = grab->xi2mask[device->id][event->type/8]; +- +- if (grab->ownerEvents && wOtherInputMasks(grab->window)) +- { +- InputClientsPtr icp = +- wOtherInputMasks(grab->window)->inputClients; +- +- while(icp) +- { +- if (rClient(icp) == rClient(grab)) +- { +- int evtype = (xE) ? ((xGenericEvent*)xE)->evtype : event->type; +- mask |= icp->xi2mask[device->id][evtype/8]; +- break; +- } +- +- icp = icp->next; +- } +- } + } else + { + rc = EventToXI((InternalEvent*)event, &xE, &count); +@@ -3587,23 +3555,6 @@ CheckPassiveGrabsOnWindow( + "(%d, %d).\n", device->name, event->type, rc); + continue; + } +- mask = grab->eventMask; +- if (grab->ownerEvents && wOtherInputMasks(grab->window)) +- { +- InputClientsPtr icp = +- wOtherInputMasks(grab->window)->inputClients; +- +- while(icp) +- { +- if (rClient(icp) == rClient(grab)) +- { +- mask |= icp->mask[device->id]; +- break; +- } +- +- icp = icp->next; +- } +- } + } + + (*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE); +@@ -3612,7 +3563,8 @@ CheckPassiveGrabsOnWindow( + { + FixUpEventFromWindow(device, xE, grab->window, None, TRUE); + +- TryClientEvents(rClient(grab), device, xE, count, mask, ++ TryClientEvents(rClient(grab), device, xE, count, ++ GetEventFilter(device, xE), + GetEventFilter(device, xE), grab); + } diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 986d230..b41ac11 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Aug 10 20:56:13 CEST 2010 - sndirsch@suse.de + +- xorg-server-revert-event-mask.patch + * locked up mouse event mask patch (bnc #619034) + ------------------------------------------------------------------- Mon Aug 9 18:14:40 CEST 2010 - vuntz@opensuse.org diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index da327eb..272b830 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -116,6 +116,7 @@ Patch211: 0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch Patch212: dmx-silly.patch Patch213: xorg-server-xdmcp.patch Patch214: xorg-x11-server-gl-apps-crash.patch +Patch215: xorg-server-revert-event-mask.patch %if %moblin Patch300: moblin-use_preferred_mode_for_all_outputs.diff %endif @@ -242,6 +243,7 @@ popd %patch212 -p1 %patch213 -p1 %patch214 -p1 +%patch215 -p1 %if %moblin %patch300 -p1 %endif