diff options
author | Tiago Vignatti <tiago.vignatti@intel.com> | 2012-05-15 19:19:56 +0300 |
---|---|---|
committer | Christopher James Halse Rogers <christopher.halse.rogers@canonical.com> | 2012-06-13 15:26:20 +1000 |
commit | f6ea000450988f411260701df11ad381c98f52df (patch) | |
tree | db36a3b4d1f66d6666561a0c24cf8d356821a30d | |
parent | 823bc5f5bc6b0b4f511b990816df36a82f7c71ca (diff) |
Xi: fix master device picking on SetDeviceRedirectWindow
It was messing all Enter/LeaveNotify logic in a way that the server wasn't
delivering those events anymore to clients of xwayland. The same was sometimes
causing segfaults on the server, due clients not clearing properly
PointerWindows pointer:
Program received signal SIGSEGV, Segmentation fault.
0x000000000044314f in IsParent (a=0x241e0b0, b=0x21) at events.c:974
974 for (b = b->parent; b; b = b->parent)
(gdb) bt
#0 0x000000000044314f in IsParent (a=0x241e0b0, b=0x21) at events.c:974
#1 0x0000000000440345 in CoreFocusOutNotifyPointerEvents (dev=0x24283a0,
pwin_parent=0x241e0b0, exclude=0x2584720, mode=0, inclusive=0)
at enterleave.c:773
#2 0x0000000000440846 in CoreFocusToDescendant (dev=0x24283a0, A=0x241e0b0,
B=0x2584720, mode=0) at enterleave.c:1019
#3 0x0000000000441016 in CoreFocusEvents (dev=0x24283a0, from=0x241e0b0,
to=0x2584720, mode=0) at enterleave.c:1245
#4 0x0000000000441775 in DoFocusEvents (pDev=0x24283a0, from=0x241e0b0,
to=0x2584720, mode=0) at enterleave.c:1390
#5 0x000000000044bb19 in SetInputFocus (client=0x257e8d0, dev=0x24283a0,
focusID=6291578, revertTo=1 '\001', ctime=0, followOK=0) at events.c:4869
#6 0x000000000044bc9f in ProcSetInputFocus (client=0x257e8d0) at events.c:4911
#7 0x0000000000430838 in Dispatch () at dispatch.c:439
#8 0x0000000000421725 in main (argc=8, argv=0x7fffffffdd38,
envp=0x7fffffffdd80) at main.c:287
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
-rw-r--r-- | Xi/exevents.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Xi/exevents.c b/Xi/exevents.c index a9cc732dd..0322095a9 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -2007,7 +2007,7 @@ SetDeviceRedirectWindow(DeviceIntPtr dev, WindowPtr window) SpritePtr pSprite = dev->spriteInfo->sprite; DeviceIntPtr mouse; - mouse = IsMaster(dev) ? GetMaster(dev, MASTER_POINTER) : dev; + mouse = IsMaster(dev) ? dev : GetMaster(dev, MASTER_POINTER); pSprite->redirectWindow = window; |