discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ae095bb5c5e1190d01887e799ea806b4778ef88a
commit ae095bb5c5e1190d01887e799ea806b4778ef88a Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Wed Apr 29 21:58:23 2015 -0400 ecore-x: use async pointer grab mode in ecore_x_window_key_grab() using a sync grab here causes the device to be frozen in the xserver, preventing any event processing on the device until the grab ends. it also prevents new grabs, such as the ones which would be created by xkill when launched from a keybinding; this means that as long as the grabbed key is held, the pointer is effectively dead to the world. I attempted to find the reason for using sync pointer grabs here, but the original commit message was: aaaahmmm.. no.. this.. oops see https://git.enlightenment.org/legacy/ecore.git/commit/?id=f62faeae288fc8211d5f97b43d3b81de87db0942 fix T2228 --- src/lib/ecore_x/xcb/ecore_xcb_window.c | 2 +- src/lib/ecore_x/xlib/ecore_x.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_x/xcb/ecore_xcb_window.c b/src/lib/ecore_x/xcb/ecore_xcb_window.c index 8258ef7..47f5822 100644 --- a/src/lib/ecore_x/xcb/ecore_xcb_window.c +++ b/src/lib/ecore_x/xcb/ecore_xcb_window.c @@ -1861,7 +1861,7 @@ ecore_x_window_key_grab(Ecore_X_Window win, for (i = 0; i < 8; i++) xcb_grab_key(_ecore_xcb_conn, 0, win, m | locks[i], - keycode, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC); + keycode, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC); _ecore_xcb_key_grabs_num++; t = realloc(_ecore_xcb_key_grabs, _ecore_xcb_key_grabs_num * sizeof(Ecore_X_Window)); diff --git a/src/lib/ecore_x/xlib/ecore_x.c b/src/lib/ecore_x/xlib/ecore_x.c index c1fb140..d1b9896 100644 --- a/src/lib/ecore_x/xlib/ecore_x.c +++ b/src/lib/ecore_x/xlib/ecore_x.c @@ -1892,7 +1892,7 @@ _ecore_x_window_key_grab_internal(Ecore_X_Window win, for (i = 0; i < 8; i++) { XGrabKey(_ecore_x_disp, keycode, m | locks[i], - win, False, GrabModeSync, GrabModeAsync); + win, False, GrabModeAsync, GrabModeAsync); if (_ecore_xlib_sync) ecore_x_sync(); } } --