diff options
Diffstat (limited to 'hw')
-rw-r--r-- | hw/xfree86/common/xf86Xinput.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index 25b61d08b..ddf7e1ea6 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -112,8 +112,7 @@ #include "xf86_OSproc.h" /* sigio stuff */ #ifdef LG3D -# include "../../../dix/ds.h" -# include "../../../Xext/lgeint.h" +#include "../../../Xext/lgeint.h" #endif /* LG3D */ /****************************************************************************** @@ -699,7 +698,9 @@ xf86eqEnqueue (xEvent *e) #ifdef XINPUT int count; +#ifndef LG3D xf86AssertBlockedSIGIO ("xf86eqEnqueue"); +#endif /* !LG3D */ switch (e->u.u.type) { case KeyPress: case KeyRelease: @@ -735,9 +736,18 @@ xf86eqEnqueue (xEvent *e) #endif #ifdef LG3D - /* If Display Server is not yet alive, do nothing to the event */ - if (lgeDisplayServerIsAlive) { - dsProcessEvent(e); + if (lgeDisplayServerIsAlive && + !lgeDisplayServerClient->clientGone && + !lgeEventComesFromDS) { + + /* + ErrorF("Send event XS->DS, type = %d xy = %d, %d\n", + e->u.u.type, e->u.keyButtonPointer.rootX, + e->u.keyButtonPointer.rootY); + */ + + WriteToClient(lgeDisplayServerClient, sizeof(xEvent), (char *)e); + return; } #endif /* LG3D */ |