On 02/03/2012 09:02 AM, Peter Hutterer wrote: > On Thu, Feb 02, 2012 at 04:57:58PM -0800, Chase Douglas wrote: >> From: Chase Douglas <[email protected]> >> >> This doesn't really implement early accept as it should. Ideally, the >> server should send end events to all subsequent touch clients as soon as >> an early accept comes in. However, this implementation is still protocol >> compliant. We can always improve it later. >> >> Signed-off-by: Chase Douglas <[email protected]> >> --- >> Xi/exevents.c | 29 +++++++++++++++++++++++++---- >> dix/touch.c | 9 ++++----- >> include/input.h | 2 ++ >> 3 files changed, 31 insertions(+), 9 deletions(-) >> >> diff --git a/Xi/exevents.c b/Xi/exevents.c >> index 6b2db4b..d0e0a5e 100644 >> --- a/Xi/exevents.c >> +++ b/Xi/exevents.c >> @@ -1088,6 +1088,26 @@ DeliverOneTouchEvent(ClientPtr client, DeviceIntPtr >> dev, TouchPointInfoPtr ti, >> return TRUE; >> } >> >> +static void >> +ActivateEarlyAccept(DeviceIntPtr dev, TouchPointInfoPtr ti) >> +{ >> + int rc; >> + ClientPtr client; >> + XID error; >> + >> + rc = dixLookupClient(&client, ti->listeners[0].listener, serverClient, >> + DixSendAccess); >> + if (rc != Success) >> + { >> + ErrorF("[Xi] Failed to lookup early accepting client.\n"); >> + return; >> + } >> + >> + if (AllowTouch(client, dev, XIAcceptTouch, ti->client_id, >> + ti->listeners[0].window->drawable.id, &error) != Success) >> + ErrorF("[Xi] Failed to accept touch grab after early >> acceptance.\n"); > > wouldn't this send two ownership events to the same client? something is > missing here, I think
It shouldn't. We're calling AllowTouch just like would be called if the client called XIAllowTouchEvents. I'll find out more after some testing... -- Chase _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
