Move replay-window check from ComputeFreezes to CheckDeviceGrabs.
This just simplifies ComputeFreezes, eliminating some duplicated code and a goto. Signed-off-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
1c1811ecaf
commit
32de0c1907
46
dix/events.c
46
dix/events.c
|
@ -1276,7 +1276,6 @@ static void
|
||||||
ComputeFreezes(void)
|
ComputeFreezes(void)
|
||||||
{
|
{
|
||||||
DeviceIntPtr replayDev = syncEvents.replayDev;
|
DeviceIntPtr replayDev = syncEvents.replayDev;
|
||||||
int i;
|
|
||||||
WindowPtr w;
|
WindowPtr w;
|
||||||
GrabPtr grab;
|
GrabPtr grab;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
|
@ -1294,29 +1293,15 @@ ComputeFreezes(void)
|
||||||
syncEvents.replayDev = (DeviceIntPtr)NULL;
|
syncEvents.replayDev = (DeviceIntPtr)NULL;
|
||||||
|
|
||||||
w = XYToWindow(replayDev, event->root_x, event->root_y);
|
w = XYToWindow(replayDev, event->root_x, event->root_y);
|
||||||
for (i = 0; i < replayDev->spriteInfo->sprite->spriteTraceGood; i++)
|
if (!CheckDeviceGrabs(replayDev, event, syncEvents.replayWin))
|
||||||
{
|
{
|
||||||
if (syncEvents.replayWin ==
|
if (replayDev->focus && !IsPointerEvent((InternalEvent*)event))
|
||||||
replayDev->spriteInfo->sprite->spriteTrace[i])
|
DeliverFocusedEvent(replayDev, (InternalEvent*)event, w);
|
||||||
{
|
else
|
||||||
if (!CheckDeviceGrabs(replayDev, event, i+1)) {
|
DeliverDeviceEvents(w, (InternalEvent*)event, NullGrab,
|
||||||
if (replayDev->focus && !IsPointerEvent((InternalEvent*)event))
|
NullWindow, replayDev);
|
||||||
DeliverFocusedEvent(replayDev, (InternalEvent*)event, w);
|
}
|
||||||
else
|
|
||||||
DeliverDeviceEvents(w, (InternalEvent*)event, NullGrab,
|
|
||||||
NullWindow, replayDev);
|
|
||||||
}
|
|
||||||
goto playmore;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* must not still be in the same stack */
|
|
||||||
if (replayDev->focus && !IsPointerEvent((InternalEvent*)event))
|
|
||||||
DeliverFocusedEvent(replayDev, (InternalEvent*)event, w);
|
|
||||||
else
|
|
||||||
DeliverDeviceEvents(w, (InternalEvent*)event, NullGrab,
|
|
||||||
NullWindow, replayDev);
|
|
||||||
}
|
}
|
||||||
playmore:
|
|
||||||
for (dev = inputInfo.devices; dev; dev = dev->next)
|
for (dev = inputInfo.devices; dev; dev = dev->next)
|
||||||
{
|
{
|
||||||
if (!dev->deviceGrab.sync.frozen)
|
if (!dev->deviceGrab.sync.frozen)
|
||||||
|
@ -3611,7 +3596,7 @@ CheckPassiveGrabsOnWindow(
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
CheckDeviceGrabs(DeviceIntPtr device, DeviceEvent *event, int checkFirst)
|
CheckDeviceGrabs(DeviceIntPtr device, DeviceEvent *event, WindowPtr ancestor)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
WindowPtr pWin = NULL;
|
WindowPtr pWin = NULL;
|
||||||
|
@ -3629,7 +3614,15 @@ CheckDeviceGrabs(DeviceIntPtr device, DeviceEvent *event, int checkFirst)
|
||||||
if (device->deviceGrab.grab)
|
if (device->deviceGrab.grab)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
i = checkFirst;
|
i = 0;
|
||||||
|
if (ancestor)
|
||||||
|
{
|
||||||
|
while (i < device->spriteInfo->sprite->spriteTraceGood)
|
||||||
|
if (device->spriteInfo->sprite->spriteTrace[i++] == ancestor)
|
||||||
|
break;
|
||||||
|
if (i == device->spriteInfo->sprite->spriteTraceGood)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (focus)
|
if (focus)
|
||||||
{
|
{
|
||||||
|
@ -3642,8 +3635,7 @@ CheckDeviceGrabs(DeviceIntPtr device, DeviceEvent *event, int checkFirst)
|
||||||
|
|
||||||
if ((focus->win == NoneWin) ||
|
if ((focus->win == NoneWin) ||
|
||||||
(i >= device->spriteInfo->sprite->spriteTraceGood) ||
|
(i >= device->spriteInfo->sprite->spriteTraceGood) ||
|
||||||
((i > checkFirst) &&
|
(pWin && pWin != device->spriteInfo->sprite->spriteTrace[i-1]))
|
||||||
(pWin != device->spriteInfo->sprite->spriteTrace[i-1])))
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -401,7 +401,7 @@ extern _X_EXPORT void WindowHasNewCursor(
|
||||||
extern Bool CheckDeviceGrabs(
|
extern Bool CheckDeviceGrabs(
|
||||||
DeviceIntPtr /* device */,
|
DeviceIntPtr /* device */,
|
||||||
DeviceEvent* /* event */,
|
DeviceEvent* /* event */,
|
||||||
int /* checkFirst */);
|
WindowPtr /* ancestor */);
|
||||||
|
|
||||||
extern void DeliverFocusedEvent(
|
extern void DeliverFocusedEvent(
|
||||||
DeviceIntPtr /* keybd */,
|
DeviceIntPtr /* keybd */,
|
||||||
|
|
Loading…
Reference in New Issue