--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp 2022-09-26 22:21:03.490717791 +0200 +++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp 2022-09-26 22:26:57.351308403 +0200 @@ -359,17 +359,17 @@ void QXcbConnection::xi2SelectDeviceEven if (window == rootWindow()) return; - uint32_t mask = 0; + uint8_t mask[8] = {}; if (isAtLeastXI22()) { - mask |= XCB_INPUT_XI_EVENT_MASK_TOUCH_BEGIN; - mask |= XCB_INPUT_XI_EVENT_MASK_TOUCH_UPDATE; - mask |= XCB_INPUT_XI_EVENT_MASK_TOUCH_END; + setXcbMask(mask, XCB_INPUT_TOUCH_BEGIN); + setXcbMask(mask, XCB_INPUT_TOUCH_UPDATE); + setXcbMask(mask, XCB_INPUT_TOUCH_END); qt_xcb_input_event_mask_t xiMask; xiMask.header.deviceid = XCB_INPUT_DEVICE_ALL_MASTER; xiMask.header.mask_len = 1; - xiMask.mask = mask; + memcpy(xiMask.mask, mask, sizeof(xiMask.mask)); xcb_void_cookie_t cookie = xcb_input_xi_select_events_checked(xcb_connection(), window, 1, &xiMask.header); @@ -382,9 +382,10 @@ void QXcbConnection::xi2SelectDeviceEven } } - mask = XCB_INPUT_XI_EVENT_MASK_BUTTON_PRESS; - mask |= XCB_INPUT_XI_EVENT_MASK_BUTTON_RELEASE; - mask |= XCB_INPUT_XI_EVENT_MASK_MOTION; + memset(mask, 0, sizeof(mask)); + setXcbMask(mask, XCB_INPUT_BUTTON_PRESS); + setXcbMask(mask, XCB_INPUT_BUTTON_RELEASE); + setXcbMask(mask, XCB_INPUT_MOTION); #if QT_CONFIG(tabletevent) QSet tabletDevices; @@ -396,7 +397,7 @@ void QXcbConnection::xi2SelectDeviceEven tabletDevices.insert(deviceId); xiEventMask[i].header.deviceid = deviceId; xiEventMask[i].header.mask_len = 1; - xiEventMask[i].mask = mask; + memcpy(xiEventMask[i].mask, mask, sizeof(xiEventMask[i].mask)); } xcb_input_xi_select_events(xcb_connection(), window, nrTablets, &(xiEventMask.data()->header)); } @@ -412,7 +413,7 @@ void QXcbConnection::xi2SelectDeviceEven #endif xiEventMask[i].header.deviceid = scrollingDevice.deviceId; xiEventMask[i].header.mask_len = 1; - xiEventMask[i].mask = mask; + memcpy(xiEventMask[i].mask, mask, sizeof(xiEventMask[i].mask)); i++; } xcb_input_xi_select_events(xcb_connection(), window, i, &(xiEventMask.data()->header));