Xnest: converter from XSetWindowAttributes struct to uint32_t list

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-07-30 15:42:02 +02:00
parent 2ef0038355
commit d7e5f08aa8
2 changed files with 27 additions and 0 deletions

View File

@ -44,3 +44,25 @@ uint32_t xnestUpstreamGC(GCPtr pGC) {
XFlushGC(xnestDisplay, priv->gc);
return priv->gc->gid;
}
void xnest_encode_window_attr(XnSetWindowAttr attr, uint32_t mask, uint32_t *values)
{
int idx = 0;
#define EXTRA_VALUE(flag,val) if (mask & flag) { values[idx++] = attr.val; }
EXTRA_VALUE(XCB_CW_BACK_PIXMAP, background_pixmap);
EXTRA_VALUE(XCB_CW_BACK_PIXEL, background_pixel)
EXTRA_VALUE(XCB_CW_BORDER_PIXMAP, border_pixmap)
EXTRA_VALUE(XCB_CW_BORDER_PIXEL, border_pixel)
EXTRA_VALUE(XCB_CW_BIT_GRAVITY, bit_gravity)
EXTRA_VALUE(XCB_CW_WIN_GRAVITY, win_gravity);
EXTRA_VALUE(XCB_CW_BACKING_STORE, backing_store);
EXTRA_VALUE(XCB_CW_BACKING_PLANES, backing_planes);
EXTRA_VALUE(XCB_CW_BACKING_PIXEL, backing_pixel);
EXTRA_VALUE(XCB_CW_OVERRIDE_REDIRECT, override_redirect);
EXTRA_VALUE(XCB_CW_SAVE_UNDER, save_under);
EXTRA_VALUE(XCB_CW_EVENT_MASK, event_mask);
EXTRA_VALUE(XCB_CW_DONT_PROPAGATE, do_not_propagate_mask);
EXTRA_VALUE(XCB_CW_COLORMAP, colormap);
EXTRA_VALUE(XCB_CW_CURSOR, cursor);
#undef EXTRA_VALUE
}

View File

@ -7,6 +7,8 @@
#include <xcb/xcb.h>
#include "Xnest.h"
typedef struct {
xcb_connection_t *conn;
uint32_t screenId;
@ -22,4 +24,7 @@ void xnest_upstream_setup(void);
/* retrieve upstream GC XID for our xserver GC */
uint32_t xnestUpstreamGC(GCPtr pGC);
typedef XSetWindowAttributes XnSetWindowAttr;
void xnest_encode_window_attr(XnSetWindowAttr attr, uint32_t mask, uint32_t *values);
#endif /* __XNEST__XCB_H */