summaryrefslogtreecommitdiff
path: root/xkb/xkbPrKeyEv.c
diff options
context:
space:
mode:
authorDeron Johnson <deron.johnson@sun.com>2005-03-04 23:22:00 +0000
committerDeron Johnson <deron.johnson@sun.com>2005-03-04 23:22:00 +0000
commita01c5f9a00a8faad23051d8f715739c4e4ad1e84 (patch)
treed8633eef7ec0d2d8fbe545c03ad4335fd0d27589 /xkb/xkbPrKeyEv.c
parenteaee8d7ac3ec13fa3561b665f02db61a8dc83163 (diff)
lg3d-dev-6-1-1-2: Fix bug 157: Stability: Escher events sometimes crosslg3d-rel-0-6-2lg3d-dev-0-6-2lg3d-dev-0-6-1-1
over to the wrong Display
Diffstat (limited to 'xkb/xkbPrKeyEv.c')
-rw-r--r--xkb/xkbPrKeyEv.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/xkb/xkbPrKeyEv.c b/xkb/xkbPrKeyEv.c
index 43288d3e9..53dca0ce1 100644
--- a/xkb/xkbPrKeyEv.c
+++ b/xkb/xkbPrKeyEv.c
@@ -37,6 +37,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "XKBsrv.h"
#include <ctype.h>
+#ifdef LG3D
+#include "../Xext/lgeint.h"
+#endif /* LG3D */
/***====================================================================***/
@@ -49,6 +52,29 @@ int key;
XkbBehavior behavior;
unsigned ndx;
+#ifdef LG3D
+ /* TODO: bug: this doesn't handle synchronous grabs properly */
+ if (lgeDisplayServerIsAlive &&
+ !lgeDisplayServerClient->clientGone &&
+ !lgeEventComesFromDS) {
+ xEvent *e = xE;
+ int i;
+
+ for (i = 0; i < count; i++, e++) {
+ /*
+ ErrorF("Send event XS->DS, type = %d xy = %d, %d, state = 0x%x\n",
+ e->u.u.type, e->u.keyButtonPointer.rootX,
+ e->u.keyButtonPointer.rootY,
+ e->u.keyButtonPointer.state);
+ */
+
+ WriteToClient(lgeDisplayServerClient, sizeof(xEvent), (char *)e);
+ }
+
+ return;
+ }
+#endif /* LG3D */
+
xkbi= keyc->xkbInfo;
key= xE->u.u.detail;
#ifdef DEBUG