summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Gallet <clement.gallet@ens-lyon.org>2024-02-21 22:19:46 +0100
committerClément Gallet <clement.gallet@ens-lyon.org>2024-02-21 22:19:46 +0100
commitb7f505a5b6be0130225892fe8938dd269b01df91 (patch)
tree707b6125a3b45be88e550e195af664411184c94d
parent105eaa63a1f71b5164700d0573ba8c8eccad394b (diff)
Fix an issue when listening mouse press from both libtas and game
-rw-r--r--src/program/GameEventsXcb.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/program/GameEventsXcb.cpp b/src/program/GameEventsXcb.cpp
index 37541d77..af287325 100644
--- a/src/program/GameEventsXcb.cpp
+++ b/src/program/GameEventsXcb.cpp
@@ -63,15 +63,16 @@ void GameEventsXcb::registerGameWindow(uint32_t gameWindow)
std::cerr << "error in xcb_change_window_attributes: " << error->error_code << std::endl;
}
+ xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(context->conn)).data;
struct {
xcb_input_event_mask_t iem;
int xiem;
} se_mask;
se_mask.iem.deviceid = XCB_INPUT_DEVICE_ALL_MASTER;
se_mask.iem.mask_len = 1;
-
- se_mask.xiem = XCB_INPUT_XI_EVENT_MASK_BUTTON_PRESS;
- xcb_input_xi_select_events(context->conn, context->game_window, 1, &se_mask.iem);
+
+ se_mask.xiem = XCB_INPUT_XI_EVENT_MASK_RAW_BUTTON_PRESS;
+ xcb_input_xi_select_events(context->conn, screen->root, 1, &se_mask.iem);
/* Also get parent window of game window for focus */
xcb_query_tree_cookie_t qt_cookie = xcb_query_tree(context->conn, context->game_window);
@@ -209,8 +210,8 @@ GameEventsXcb::EventType GameEventsXcb::nextEvent(struct HotKey &hk)
return EVENT_TYPE_EXPOSE;
case XCB_GE_GENERIC: {
xcb_ge_generic_event_t *gev = reinterpret_cast<xcb_ge_generic_event_t *>(event.get());
- if (gev->event_type == XCB_INPUT_BUTTON_PRESS) {
- xcb_input_button_press_event_t *mev = reinterpret_cast<xcb_input_button_press_event_t*>(gev);
+ if (gev->event_type == XCB_INPUT_RAW_BUTTON_PRESS) {
+ xcb_input_raw_button_press_event_t *mev = reinterpret_cast<xcb_input_raw_button_press_event_t*>(gev);
if (mev->detail == XCB_BUTTON_INDEX_4)
return EVENT_TYPE_WHEEL_UP;
if (mev->detail == XCB_BUTTON_INDEX_5)