dix: Extract ActivateGrabNoDeliver()
This commit is contained in:
parent
23a8b62d34
commit
36f8dacc06
27
dix/events.c
27
dix/events.c
|
@ -3669,7 +3669,6 @@ ActivatePassiveGrab(DeviceIntPtr device, GrabPtr grab, InternalEvent *event,
|
|||
InternalEvent *real_event)
|
||||
{
|
||||
SpritePtr pSprite = device->spriteInfo->sprite;
|
||||
GrabInfoPtr grabinfo = &device->deviceGrab;
|
||||
xEvent *xE = NULL;
|
||||
int count;
|
||||
int rc;
|
||||
|
@ -3719,8 +3718,7 @@ ActivatePassiveGrab(DeviceIntPtr device, GrabPtr grab, InternalEvent *event,
|
|||
}
|
||||
}
|
||||
|
||||
(*grabinfo->ActivateGrab) (device, grab,
|
||||
ClientTimeToServerTime(event->any.time), TRUE);
|
||||
ActivateGrabNoDelivery(device, grab, event, real_event);
|
||||
|
||||
if (xE) {
|
||||
FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE);
|
||||
|
@ -3731,12 +3729,29 @@ ActivatePassiveGrab(DeviceIntPtr device, GrabPtr grab, InternalEvent *event,
|
|||
GetEventFilter(device, xE), grab);
|
||||
}
|
||||
|
||||
free(xE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Activates a grab without event delivery.
|
||||
*
|
||||
* @param device The device of the event to check.
|
||||
* @param grab The grab to check.
|
||||
* @param event The current device event.
|
||||
* @param real_event The original event, in case of touch emulation. The
|
||||
* real event is the one stored in the sync queue.
|
||||
*/
|
||||
void ActivateGrabNoDelivery(DeviceIntPtr dev, GrabPtr grab,
|
||||
InternalEvent *event, InternalEvent *real_event)
|
||||
{
|
||||
GrabInfoPtr grabinfo = &dev->deviceGrab;
|
||||
(*grabinfo->ActivateGrab) (dev, grab,
|
||||
ClientTimeToServerTime(event->any.time), TRUE);
|
||||
|
||||
if (grabinfo->sync.state == FROZEN_NO_EVENT)
|
||||
grabinfo->sync.state = FROZEN_WITH_EVENT;
|
||||
*grabinfo->sync.event = *real_event;
|
||||
|
||||
free(xE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
|
|
|
@ -630,6 +630,9 @@ extern WindowPtr XYToWindow(SpritePtr pSprite, int x, int y);
|
|||
extern int EventIsDeliverable(DeviceIntPtr dev, int evtype, WindowPtr win);
|
||||
extern Bool ActivatePassiveGrab(DeviceIntPtr dev, GrabPtr grab,
|
||||
InternalEvent *ev, InternalEvent *real_event);
|
||||
extern void ActivateGrabNoDelivery(DeviceIntPtr dev, GrabPtr grab,
|
||||
InternalEvent *event,
|
||||
InternalEvent *real_event);
|
||||
/**
|
||||
* Masks specifying the type of event to deliver for an InternalEvent; used
|
||||
* by EventIsDeliverable.
|
||||
|
|
Loading…
Reference in New Issue