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)
|
InternalEvent *real_event)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = device->spriteInfo->sprite;
|
SpritePtr pSprite = device->spriteInfo->sprite;
|
||||||
GrabInfoPtr grabinfo = &device->deviceGrab;
|
|
||||||
xEvent *xE = NULL;
|
xEvent *xE = NULL;
|
||||||
int count;
|
int count;
|
||||||
int rc;
|
int rc;
|
||||||
|
@ -3719,8 +3718,7 @@ ActivatePassiveGrab(DeviceIntPtr device, GrabPtr grab, InternalEvent *event,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
(*grabinfo->ActivateGrab) (device, grab,
|
ActivateGrabNoDelivery(device, grab, event, real_event);
|
||||||
ClientTimeToServerTime(event->any.time), TRUE);
|
|
||||||
|
|
||||||
if (xE) {
|
if (xE) {
|
||||||
FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE);
|
FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE);
|
||||||
|
@ -3731,12 +3729,29 @@ ActivatePassiveGrab(DeviceIntPtr device, GrabPtr grab, InternalEvent *event,
|
||||||
GetEventFilter(device, xE), grab);
|
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)
|
if (grabinfo->sync.state == FROZEN_NO_EVENT)
|
||||||
grabinfo->sync.state = FROZEN_WITH_EVENT;
|
grabinfo->sync.state = FROZEN_WITH_EVENT;
|
||||||
*grabinfo->sync.event = *real_event;
|
*grabinfo->sync.event = *real_event;
|
||||||
|
|
||||||
free(xE);
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL
|
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 int EventIsDeliverable(DeviceIntPtr dev, int evtype, WindowPtr win);
|
||||||
extern Bool ActivatePassiveGrab(DeviceIntPtr dev, GrabPtr grab,
|
extern Bool ActivatePassiveGrab(DeviceIntPtr dev, GrabPtr grab,
|
||||||
InternalEvent *ev, InternalEvent *real_event);
|
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
|
* Masks specifying the type of event to deliver for an InternalEvent; used
|
||||||
* by EventIsDeliverable.
|
* by EventIsDeliverable.
|
||||||
|
|
Loading…
Reference in New Issue