xfree86: If an input device failed to activate, return immediately.
Devices are only activated once - right after they've been added to the
server. If a device failes activation, it's dead. There's no reason to
continue. Return the error code from ActivateDevice() without setting up
sprite information or even sending a event to the client.
Then - in the DDX - just remove the device again.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 27011254c4
)
This commit is contained in:
parent
2ce48363b8
commit
3c11efd7dc
|
@ -446,6 +446,8 @@ ActivateDevice(DeviceIntPtr dev)
|
|||
|
||||
ret = (*dev->deviceProc) (dev, DEVICE_INIT);
|
||||
dev->inited = (ret == Success);
|
||||
if (!dev->inited)
|
||||
return ret;
|
||||
|
||||
/* Initialize memory for sprites. */
|
||||
if (dev->isMaster && dev->spriteInfo->spriteOwner)
|
||||
|
|
|
@ -541,7 +541,10 @@ xf86NewInputDevice(IDevPtr idev, DeviceIntPtr *pdev, BOOL enable)
|
|||
}
|
||||
|
||||
dev = pInfo->dev;
|
||||
ActivateDevice(dev);
|
||||
rval = ActivateDevice(dev);
|
||||
if (rval != Success)
|
||||
goto unwind;
|
||||
|
||||
/* Enable it if it's properly initialised and we're currently in the VT */
|
||||
if (enable && dev->inited && dev->startup && xf86Screens[0]->vtSema)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user