On Wed, Jan 15, 2014 at 03:32:19PM +0100, Hans de Goede wrote: > Factor this code out into functions so that it can be re-used for the > systemd-logind device pause/resume paths. > > Signed-off-by: Hans de Goede <[email protected]>
I'd probably rename these to xf86VTDisableDevice to have a slightly less clunky name but either way Reviewed-by: Peter Hutterer <[email protected]> Cheers, Peter PS: I reviewed this series on your for-keith branch (646b5d885f15e4ca884a4c4da2d296e14d9fe972), just in case there are any differences. > --- > hw/xfree86/common/xf86.h | 4 ++++ > hw/xfree86/common/xf86Events.c | 52 > +++++++++++++++++++++++------------------- > 2 files changed, 32 insertions(+), 24 deletions(-) > > diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h > index 537d1d1..cec3135 100644 > --- a/hw/xfree86/common/xf86.h > +++ b/hw/xfree86/common/xf86.h > @@ -215,6 +215,8 @@ extern _X_EXPORT xf86SetDGAModeProc xf86SetDGAMode; > > /* xf86Events.c */ > > +typedef struct _InputInfoRec *InputInfoPtr; > + > extern _X_EXPORT void SetTimeSinceLastInputEvent(void); > extern _X_EXPORT void *xf86AddInputHandler(int fd, InputHandlerProc proc, > void *data); > @@ -236,6 +238,8 @@ extern _X_EXPORT void xf86PrintBacktrace(void); > extern _X_EXPORT Bool xf86VTOwner(void); > extern _X_EXPORT void xf86VTLeave(void); > extern _X_EXPORT void xf86VTEnter(void); > +extern _X_EXPORT void xf86EnableInputDeviceForVTSwitch(InputInfoPtr pInfo); > +extern _X_EXPORT void xf86DisableInputDeviceForVTSwitch(InputInfoPtr pInfo); > > /* xf86Helper.c */ > > diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c > index e0ec768..7b53949 100644 > --- a/hw/xfree86/common/xf86Events.c > +++ b/hw/xfree86/common/xf86Events.c > @@ -408,6 +408,28 @@ xf86ReleaseKeys(DeviceIntPtr pDev) > } > > void > +xf86DisableInputDeviceForVTSwitch(InputInfoPtr pInfo) > +{ > + if (!pInfo->dev) > + return; > + > + if (!pInfo->dev->enabled) > + pInfo->flags |= XI86_DEVICE_DISABLED; > + > + xf86ReleaseKeys(pInfo->dev); > + ProcessInputEvents(); > + DisableDevice(pInfo->dev, TRUE); > +} > + > +void > +xf86EnableInputDeviceForVTSwitch(InputInfoPtr pInfo) > +{ > + if (pInfo->dev && (pInfo->flags & XI86_DEVICE_DISABLED) == 0) > + EnableDevice(pInfo->dev, TRUE); > + pInfo->flags &= ~XI86_DEVICE_DISABLED; > +} > + > +void > xf86VTLeave(void) > { > int i; > @@ -436,15 +458,8 @@ xf86VTLeave(void) > else > xf86DisableGeneralHandler(ih); > } > - for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) { > - if (pInfo->dev) { > - if (!pInfo->dev->enabled) > - pInfo->flags |= XI86_DEVICE_DISABLED; > - xf86ReleaseKeys(pInfo->dev); > - ProcessInputEvents(); > - DisableDevice(pInfo->dev, TRUE); > - } > - } > + for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) > + xf86DisableInputDeviceForVTSwitch(pInfo); > > OsBlockSIGIO(); > for (i = 0; i < xf86NumScreens; i++) > @@ -494,13 +509,8 @@ switch_failed: > } > dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset); > > - pInfo = xf86InputDevs; > - while (pInfo) { > - if (pInfo->dev && (pInfo->flags & XI86_DEVICE_DISABLED) == 0) > - EnableDevice(pInfo->dev, TRUE); > - pInfo->flags &= ~XI86_DEVICE_DISABLED; > - pInfo = pInfo->next; > - } > + for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) > + xf86EnableInputDeviceForVTSwitch(pInfo); > for (ih = InputHandlers; ih; ih = ih->next) { > if (ih->is_input) > xf86EnableInputHandler(ih); > @@ -546,14 +556,8 @@ xf86VTEnter(void) > /* Turn screen saver off when switching back */ > dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset); > > - pInfo = xf86InputDevs; > - while (pInfo) { > - if (pInfo->dev && (pInfo->flags & XI86_DEVICE_DISABLED) == 0) > - EnableDevice(pInfo->dev, TRUE); > - pInfo->flags &= ~XI86_DEVICE_DISABLED; > - pInfo = pInfo->next; > - } > - > + for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) > + xf86EnableInputDeviceForVTSwitch(pInfo); > for (ih = InputHandlers; ih; ih = ih->next) { > if (ih->is_input) > xf86EnableInputHandler(ih); > -- > 1.8.4.2 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
