diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2010-11-05 12:08:11 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2010-11-09 07:59:56 +1000 |
commit | 9e999d18b004b8ead9c6c5d79b4a3d4bbf0e3152 (patch) | |
tree | c55193583fd58709ff7490d01c69e9c7cb2fc443 /Xi/xichangehierarchy.c | |
parent | 5a455e0c80d433adc4109ebf313fd92afa194545 (diff) |
Xi: if XTEST device creation fails, fail the master devices.
When getting close to the MAXDEVICES limit, the creation of XTEST devices
may fail due to device id exhaustion. In that case, fail the creation of
master devices too and return an error to the client.
Theoretically, we could alloc the MDs without the XTEST devices but that
will get interesting when a client starts sending XTEST events through those
devices.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Julien Cristau <jcristau@debian.org>
Diffstat (limited to 'Xi/xichangehierarchy.c')
-rw-r--r-- | Xi/xichangehierarchy.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Xi/xichangehierarchy.c b/Xi/xichangehierarchy.c index b7140d5e5..b9cdedf77 100644 --- a/Xi/xichangehierarchy.c +++ b/Xi/xichangehierarchy.c @@ -157,7 +157,11 @@ add_master(ClientPtr client, xXIAddMasterInfo *c, int flags[MAXDEVICES]) /* Allocate virtual slave devices for xtest events */ rc = AllocXTestDevice(client, name, &XTestptr, &XTestkeybd, ptr, keybd); if (rc != Success) + { + DeleteInputDeviceRequest(ptr); + DeleteInputDeviceRequest(keybd); goto unwind; + } ActivateDevice(ptr, FALSE); ActivateDevice(keybd, FALSE); |