Xext: route event through master if required (XTestFakeInput)

This commit is contained in:
Peter Hutterer 2008-04-18 21:13:10 +09:30
parent fb784d99c5
commit 179a082c26
2 changed files with 10 additions and 2 deletions

View File

@ -471,7 +471,15 @@ ProcXTestFakeInput(client)
if (screenIsSaved == SCREEN_SAVER_ON)
dixSaveScreens(serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
ev->u.keyButtonPointer.time = currentTime.milliseconds;
(*dev->public.processInputProc)(ev, dev, nev);
if (!dev->isMaster && dev->u.master)
{ /* duplicate and route through master */
xEvent *master_event = NULL;
CopyGetMasterEvent(dev->u.master, ev, &master_event, nev);
(*dev->public.processInputProc)(ev, dev, nev);
(*dev->public.processInputProc)(master_event, dev->u.master, nev);
xfree(master_event);
} else
(*dev->public.processInputProc)(ev, dev, nev);
return client->noClientException;
}

View File

@ -263,7 +263,7 @@ ChangeDeviceID(DeviceIntPtr dev, xEvent* event)
* @param master The event after being copied
* @param count Number of events in original.
*/
static void
void
CopyGetMasterEvent(DeviceIntPtr mdev, xEvent* original,
xEvent** master, int count)
{