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