On Mon, Oct 19, 2015 at 04:28:12PM -0700, Jasper St. Pierre wrote: > On Sun, Oct 18, 2015 at 7:59 PM, Peter Hutterer > <peter.hutte...@who-t.net> wrote: > > cookie->serial is an Xlib contoction, provided by _XSetLastRequestRead(). > > This > > I assume this is meant to read "in->sequenceNumber is an Xlib > concoction"? Otherwise, it doesn't make sense.
no, in->serialNumber is the raw 16-bit serial number on the wire. cookie->serial something that's cooked up inside Xlib and a combination of last_request_read and the raw serialNumber. the rest of Xlib uses that cooked up number (e.g. core X events), the XI2 events stick out because they use the raw serial number, which may be different. Cheers, Peter > > serial may be different to the raw serial number from the wire protocol. > > This causes issues when the raw serial is used to e.g. compare the event to > > other non-XI events. > > > > Use the cookie's serial number instead. > > > > https://bugzilla.gnome.org/show_bug.cgi?id=756649 > > > > See also https://bugs.freedesktop.org/show_bug.cgi?id=64687 > > > > Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> > > --- > > src/XExtInt.c | 16 ++++++++-------- > > 1 file changed, 8 insertions(+), 8 deletions(-) > > > > diff --git a/src/XExtInt.c b/src/XExtInt.c > > index 672d69a..a35fcc6 100644 > > --- a/src/XExtInt.c > > +++ b/src/XExtInt.c > > @@ -1521,7 +1521,7 @@ wireToDeviceEvent(xXIDeviceEvent *in, > > XGenericEventCookie* cookie) > > out = next_block(&ptr_lib, sizeof(XIDeviceEvent)); > > out->display = cookie->display; > > out->type = in->type; > > - out->serial = in->sequenceNumber; > > + out->serial = cookie->serial; > > out->extension = in->extension; > > out->evtype = in->evtype; > > out->send_event = ((in->type & 0x80) != 0); > > @@ -1794,7 +1794,7 @@ wireToDeviceChangedEvent(xXIDeviceChangedEvent *in, > > XGenericEventCookie *cookie) > > cookie->data = out = malloc(sizeof(XIDeviceChangedEvent) + len); > > > > out->type = in->type; > > - out->serial = in->sequenceNumber; > > + out->serial = cookie->serial; > > out->display = cookie->display; > > out->extension = in->extension; > > out->evtype = in->evtype; > > @@ -1827,7 +1827,7 @@ wireToHierarchyChangedEvent(xXIHierarchyEvent *in, > > XGenericEventCookie *cookie) > > out->info = (XIHierarchyInfo*)&out[1]; > > out->display = cookie->display; > > out->type = in->type; > > - out->serial = in->sequenceNumber; > > + out->serial = cookie->serial; > > out->extension = in->extension; > > out->evtype = in->evtype; > > out->send_event = ((in->type & 0x80) != 0); > > @@ -1868,7 +1868,7 @@ wireToRawEvent(XExtDisplayInfo *info, xXIRawEvent > > *in, XGenericEventCookie *cook > > > > out = next_block(&ptr, sizeof(XIRawEvent)); > > out->type = in->type; > > - out->serial = in->sequenceNumber; > > + out->serial = cookie->serial; > > out->display = cookie->display; > > out->extension = in->extension; > > out->evtype = in->evtype; > > @@ -1919,7 +1919,7 @@ wireToEnterLeave(xXIEnterEvent *in, > > XGenericEventCookie *cookie) > > out->buttons.mask = (unsigned char*)&out[1]; > > > > out->type = in->type; > > - out->serial = in->sequenceNumber; > > + out->serial = cookie->serial; > > out->display = cookie->display; > > out->extension = in->extension; > > out->evtype = in->evtype; > > @@ -1962,7 +1962,7 @@ wireToPropertyEvent(xXIPropertyEvent *in, > > XGenericEventCookie *cookie) > > cookie->data = out; > > > > out->type = in->type; > > - out->serial = in->sequenceNumber; > > + out->serial = cookie->serial; > > out->extension = in->extension; > > out->evtype = in->evtype; > > out->send_event = ((in->type & 0x80) != 0); > > @@ -1983,7 +1983,7 @@ wireToTouchOwnershipEvent(xXITouchOwnershipEvent *in, > > cookie->data = out; > > > > out->type = in->type; > > - out->serial = in->sequenceNumber; > > + out->serial = cookie->serial; > > out->display = cookie->display; > > out->extension = in->extension; > > out->evtype = in->evtype; > > @@ -2011,7 +2011,7 @@ wireToBarrierEvent(xXIBarrierEvent *in, > > XGenericEventCookie *cookie) > > > > out->display = cookie->display; > > out->type = in->type; > > - out->serial = in->sequenceNumber; > > + out->serial = cookie->serial; > > out->extension = in->extension; > > out->evtype = in->evtype; > > out->send_event = ((in->type & 0x80) != 0); > > -- > > 2.4.3 > > > > _______________________________________________ > > xorg-devel@lists.x.org: X.Org development > > Archives: http://lists.x.org/archives/xorg-devel > > Info: http://lists.x.org/mailman/listinfo/xorg-devel > > > > -- > Jasper _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel