Xext: return BadDevice from XTest if we don't have keys/buttons/valuators.
BadDevice is an XI error, but this cannot happen for core XTest fake input anyway since the device will be the matching virtual XTest slave device. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
0fdff0a47a
commit
226dd90597
10
Xext/xtest.c
10
Xext/xtest.c
|
@ -49,6 +49,7 @@
|
|||
#include <X11/extensions/xteststr.h>
|
||||
#include <X11/extensions/XI.h>
|
||||
#include <X11/extensions/XIproto.h>
|
||||
#include "exglobals.h"
|
||||
|
||||
#include "modinit.h"
|
||||
|
||||
|
@ -342,6 +343,9 @@ ProcXTestFakeInput(ClientPtr client)
|
|||
{
|
||||
case KeyPress:
|
||||
case KeyRelease:
|
||||
if (!dev->key)
|
||||
return BadDevice;
|
||||
|
||||
if (ev->u.u.detail < dev->key->xkbInfo->desc->min_key_code ||
|
||||
ev->u.u.detail > dev->key->xkbInfo->desc->max_key_code)
|
||||
{
|
||||
|
@ -350,6 +354,9 @@ ProcXTestFakeInput(ClientPtr client)
|
|||
}
|
||||
break;
|
||||
case MotionNotify:
|
||||
if (!dev->valuator)
|
||||
return BadDevice;
|
||||
|
||||
/* broken lib, XI events have root uninitialized */
|
||||
if (extension || ev->u.keyButtonPointer.root == None)
|
||||
root = GetCurrentRootWindow(dev);
|
||||
|
@ -376,6 +383,9 @@ ProcXTestFakeInput(ClientPtr client)
|
|||
break;
|
||||
case ButtonPress:
|
||||
case ButtonRelease:
|
||||
if (!dev->button)
|
||||
return BadDevice;
|
||||
|
||||
if (!ev->u.u.detail || ev->u.u.detail > dev->button->numButtons)
|
||||
{
|
||||
client->errorValue = ev->u.u.detail;
|
||||
|
|
Loading…
Reference in New Issue
Block a user