xfree86: after VT switching back, only enable previously enabled devices
If a device was enabled before the VT switch, re-enabled it. Otherwise leave it as is, there was probably a reason why it was disabled. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
parent
c5a45b0f76
commit
82a1ae0af3
|
@ -449,6 +449,8 @@ xf86VTSwitch(void)
|
||||||
xf86DisableInputHandler(ih);
|
xf86DisableInputHandler(ih);
|
||||||
for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) {
|
for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) {
|
||||||
if (pInfo->dev) {
|
if (pInfo->dev) {
|
||||||
|
if (!pInfo->dev->enabled)
|
||||||
|
pInfo->flags |= XI86_DEVICE_DISABLED;
|
||||||
xf86ReleaseKeys(pInfo->dev);
|
xf86ReleaseKeys(pInfo->dev);
|
||||||
ProcessInputEvents();
|
ProcessInputEvents();
|
||||||
DisableDevice(pInfo->dev, TRUE);
|
DisableDevice(pInfo->dev, TRUE);
|
||||||
|
@ -482,8 +484,9 @@ xf86VTSwitch(void)
|
||||||
|
|
||||||
pInfo = xf86InputDevs;
|
pInfo = xf86InputDevs;
|
||||||
while (pInfo) {
|
while (pInfo) {
|
||||||
if (pInfo->dev)
|
if (pInfo->dev && (pInfo->flags & XI86_DEVICE_DISABLED) == 0)
|
||||||
EnableDevice(pInfo->dev, TRUE);
|
EnableDevice(pInfo->dev, TRUE);
|
||||||
|
pInfo->flags &= ~XI86_DEVICE_DISABLED;
|
||||||
pInfo = pInfo->next;
|
pInfo = pInfo->next;
|
||||||
}
|
}
|
||||||
for (ih = InputHandlers; ih; ih = ih->next)
|
for (ih = InputHandlers; ih; ih = ih->next)
|
||||||
|
@ -537,8 +540,9 @@ xf86VTSwitch(void)
|
||||||
|
|
||||||
pInfo = xf86InputDevs;
|
pInfo = xf86InputDevs;
|
||||||
while (pInfo) {
|
while (pInfo) {
|
||||||
if (pInfo->dev)
|
if (pInfo->dev && (pInfo->flags & XI86_DEVICE_DISABLED) == 0)
|
||||||
EnableDevice(pInfo->dev, TRUE);
|
EnableDevice(pInfo->dev, TRUE);
|
||||||
|
pInfo->flags &= ~XI86_DEVICE_DISABLED;
|
||||||
pInfo = pInfo->next;
|
pInfo = pInfo->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,9 @@
|
||||||
#define XI86_ALWAYS_CORE 0x04 /* device always controls the pointer */
|
#define XI86_ALWAYS_CORE 0x04 /* device always controls the pointer */
|
||||||
/* the device sends Xinput and core pointer events */
|
/* the device sends Xinput and core pointer events */
|
||||||
#define XI86_SEND_CORE_EVENTS XI86_ALWAYS_CORE
|
#define XI86_SEND_CORE_EVENTS XI86_ALWAYS_CORE
|
||||||
|
/* 0x08 is reserved for legacy XI86_SEND_DRAG_EVENTS, do not use for now */
|
||||||
|
/* server-internal only */
|
||||||
|
#define XI86_DEVICE_DISABLED 0x10 /* device was disabled before vt switch */
|
||||||
|
|
||||||
/* This holds the input driver entry and module information. */
|
/* This holds the input driver entry and module information. */
|
||||||
typedef struct _InputDriverRec {
|
typedef struct _InputDriverRec {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user