Motif and Slackware 13.1
Path: g2news1.google.com!news2.google.com!news3.google.com!goblin2!goblin.stu.neva.ru!csnews.cs.nctu.edu.tw!news.cs.nctu.edu.tw!ctu-peer!news.nctu.edu.tw!meganewsservers.com!feeder2.on.meganewsservers.com!news.uwaterloo.ca!server.example.net!not-for-mail From: pab...@plg2.math.uwaterloo.ca (Peter A. Buhr) Newsgroups: comp.windows.x.motif Subject: Re: mwm Date: Fri, 25 Jun 2010 07:54:53 -0400 (EDT) Organization: University of Waterloo Lines: 152 Message-ID: <i025ed$c85$1@plg2.math.uwaterloo.ca> References: <hvjnv7$44a$1@rumours.uwaterloo.ca> <vfn3f7-049.ln1@news.anatron.com.au> NNTP-Posting-Host: plg2.math.uwaterloo.ca X-Trace: rumours.uwaterloo.ca 1277466893 8620 129.97.186.80 (25 Jun 2010 11:54:53 GMT) X-Complaints-To: abuse@uwaterloo.ca NNTP-Posting-Date: Fri, 25 Jun 2010 11:54:53 +0000 (UTC)In article <vfn3f7-049....@news.anatron.com.au>,
Russell Shaw <rjshawN_o@s_pam.netspace.net.au> wrote:
>Peter A. Buhr wrote:
>> I have been using mwm for over 20 years. I just installed Ubuntu 10.4 on my
>> laptop and now when I press Alt-button1 in a window to raise the window
>> (defined in my .mwmrc file), mwm locks up and only allows input into the window
>> where I performed the Alt-button1.
>
>Ask in x...@lists.freedesktop.org
>http://lists.freedesktop.org/mailman/listinfo/xorgI did ask and it has moved on to this stage (see below). I don't know when the
patch will appear in distros. It appears to be have been a reasonably major bug
and many at xorg were glad it was found.I'm pressing to my next problem with a bad interaction between mwm and
arcoread. I'll keep people here informed if I make any progress.==============================================================================
Date: Fri, 25 Jun 2010 09:48:10 +1000
From: Peter Hutterer <peter.hutte...@who-t.net>
To: "X.Org Devel List" <xorg-de...@lists.freedesktop.org>
Cc: "Peter A. Buhr" <pab...@plg2.math.uwaterloo.ca>,
Keith Packard <kei...@keithp.com>,
Daniel Stone <dan...@freedesktop.org>
Subject: [PATCH] Revert "dix: use the event mask of the grab for
TryClientEvents."
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inlineBehaviour of earlier X servers was to deliver the ButtonPress event
unconditionally, regardless of the actual event mask being set. Thus, a
GrabButton event will always deliver the button press event, a GrabKey
always the key press event, etc. Same goes for XI and XI2.Reproducible with a simple client requesting a button grab in the form of:
XGrabButton(dpy, AnyButton, AnyModifier, win, True, ButtonReleaseMask,
GrabModeAsync, GrabModeAsync, None, None);On servers before MPX/XI2, the client will receive a button press and
release event. On current servers, the client receives only the release.
Clients that expect the press event to be delivered unconditionally may
leave the user with a stuck grab.XTS test results for XGrabButton are identical with and without this patch.
This reverts commit 48585bd1e3e98db0f3df1ecc68022510216e00cc.
Conflicts:
dix/events.c
Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
dix/events.c | 52 ++--------------------------------------------------
1 files changed, 2 insertions(+), 50 deletions(-)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); }
--
1.7.1