diff options
author | Deron Johnson <deron.johnson@sun.com> | 2005-03-04 23:22:00 +0000 |
---|---|---|
committer | Deron Johnson <deron.johnson@sun.com> | 2005-03-04 23:22:00 +0000 |
commit | a01c5f9a00a8faad23051d8f715739c4e4ad1e84 (patch) | |
tree | d8633eef7ec0d2d8fbe545c03ad4335fd0d27589 /xkb/xkbPrKeyEv.c | |
parent | eaee8d7ac3ec13fa3561b665f02db61a8dc83163 (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.c | 26 |
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 |