Xnest: replace XSelectInput() by xcb_change_window_attributes()

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-08-12 14:54:39 +02:00
parent 415594fd67
commit 261d22a444
5 changed files with 22 additions and 8 deletions

View File

@ -49,7 +49,7 @@ Drawable xnestDefaultDrawables[MAXDEPTH + 1];
Pixmap xnestIconBitmap;
Pixmap xnestScreenSaverPixmap;
uint32_t xnestBitmapGC;
unsigned long xnestEventMask;
uint32_t xnestEventMask;
static int _X_NORETURN
x_io_error_handler(Display * dpy)

View File

@ -33,7 +33,7 @@ extern Drawable xnestDefaultDrawables[MAXDEPTH + 1];
extern Pixmap xnestIconBitmap;
extern Pixmap xnestScreenSaverPixmap;
extern uint32_t xnestBitmapGC;
extern unsigned long xnestEventMask;
extern uint32_t xnestEventMask;
void xnestOpenDisplay(int argc, char *argv[]);
void xnestCloseDisplay(void);

View File

@ -183,12 +183,18 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff)
case DEVICE_ON:
xnestEventMask |= XNEST_KEYBOARD_EVENT_MASK;
for (i = 0; i < xnestNumScreens; i++)
XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
xcb_change_window_attributes(xnestUpstreamInfo.conn,
xnestDefaultWindows[i],
XCB_CW_EVENT_MASK,
&xnestEventMask);
break;
case DEVICE_OFF:
xnestEventMask &= ~XNEST_KEYBOARD_EVENT_MASK;
for (i = 0; i < xnestNumScreens; i++)
XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
xcb_change_window_attributes(xnestUpstreamInfo.conn,
xnestDefaultWindows[i],
XCB_CW_EVENT_MASK,
&xnestEventMask);
break;
case DEVICE_CLOSE:
break;

View File

@ -84,12 +84,18 @@ xnestPointerProc(DeviceIntPtr pDev, int onoff)
case DEVICE_ON:
xnestEventMask |= XNEST_POINTER_EVENT_MASK;
for (i = 0; i < xnestNumScreens; i++)
XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
xcb_change_window_attributes(xnestUpstreamInfo.conn,
xnestDefaultWindows[i],
XCB_CW_EVENT_MASK,
&xnestEventMask);
break;
case DEVICE_OFF:
xnestEventMask &= ~XNEST_POINTER_EVENT_MASK;
for (i = 0; i < xnestNumScreens; i++)
XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
xcb_change_window_attributes(xnestUpstreamInfo.conn,
xnestDefaultWindows[i],
XCB_CW_EVENT_MASK,
&xnestEventMask);
break;
case DEVICE_CLOSE:
break;

View File

@ -379,8 +379,10 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
if (xnestParentWindow != 0) {
xnestDefaultWindows[pScreen->myNum] = xnestParentWindow;
XSelectInput(xnestDisplay, xnestDefaultWindows[pScreen->myNum],
xnestEventMask);
xcb_change_window_attributes(xnestUpstreamInfo.conn,
xnestDefaultWindows[pScreen->myNum],
XCB_CW_EVENT_MASK,
&xnestEventMask);
}
else {
xnestDefaultWindows[pScreen->myNum] = xcb_generate_id(xnestUpstreamInfo.conn);