mirror of
https://github.com/Raymo111/i3lock-color.git
synced 2025-02-24 16:06:26 -05:00
set _NET_WM_BYPASS_COMPOSITOR hint to avoid flickering (#256)
For compositors which support it (picom >v7.5, formerly known as compton), this should result in the i3lock window no longer being composited, hence fixing issue #204. related to #204
This commit is contained in:
parent
b9d72cb1f0
commit
1b9b2bd7f8
1 changed files with 31 additions and 0 deletions
31
xcb.c
31
xcb.c
|
@ -29,6 +29,26 @@ extern auth_state_t auth_state;
|
||||||
xcb_connection_t *conn;
|
xcb_connection_t *conn;
|
||||||
xcb_screen_t *screen;
|
xcb_screen_t *screen;
|
||||||
|
|
||||||
|
static xcb_atom_t _NET_WM_BYPASS_COMPOSITOR = XCB_NONE;
|
||||||
|
void _init_net_wm_bypass_compositor(xcb_connection_t *conn) {
|
||||||
|
if (_NET_WM_BYPASS_COMPOSITOR != XCB_NONE) {
|
||||||
|
/* already initialized */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
xcb_generic_error_t *err;
|
||||||
|
xcb_intern_atom_reply_t *atom_reply = xcb_intern_atom_reply(
|
||||||
|
conn,
|
||||||
|
xcb_intern_atom(conn, 0, strlen("_NET_WM_BYPASS_COMPOSITOR"), "_NET_WM_BYPASS_COMPOSITOR"),
|
||||||
|
&err);
|
||||||
|
if (atom_reply == NULL) {
|
||||||
|
fprintf(stderr, "X11 Error %d\n", err->error_code);
|
||||||
|
free(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_NET_WM_BYPASS_COMPOSITOR = atom_reply->atom;
|
||||||
|
free(atom_reply);
|
||||||
|
}
|
||||||
|
|
||||||
#define curs_invisible_width 8
|
#define curs_invisible_width 8
|
||||||
#define curs_invisible_height 8
|
#define curs_invisible_height 8
|
||||||
|
|
||||||
|
@ -158,6 +178,17 @@ xcb_window_t open_fullscreen_window(xcb_connection_t *conn, xcb_screen_t *scr, c
|
||||||
2 * (strlen("i3lock") + 1),
|
2 * (strlen("i3lock") + 1),
|
||||||
"i3lock\0i3lock\0");
|
"i3lock\0i3lock\0");
|
||||||
|
|
||||||
|
const uint32_t bypass_compositor = 1; /* disable compositing */
|
||||||
|
_init_net_wm_bypass_compositor(conn);
|
||||||
|
xcb_change_property(conn,
|
||||||
|
XCB_PROP_MODE_REPLACE,
|
||||||
|
win,
|
||||||
|
_NET_WM_BYPASS_COMPOSITOR,
|
||||||
|
XCB_ATOM_CARDINAL,
|
||||||
|
32,
|
||||||
|
1,
|
||||||
|
&bypass_compositor);
|
||||||
|
|
||||||
/* Map the window (= make it visible) */
|
/* Map the window (= make it visible) */
|
||||||
xcb_map_window(conn, win);
|
xcb_map_window(conn, win);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue