Skip to content
This repository has been archived by the owner on Apr 18, 2023. It is now read-only.

Commit

Permalink
ewmh: Cache idx to avoid xcb_change_property calls
Browse files Browse the repository at this point in the history
Updates ewmh_update_current_desktop, ewmh_update_number_of_desktops
  • Loading branch information
orestisfl committed May 3, 2019
1 parent 8c25bc1 commit 830465b
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/ewmh.c
Expand Up @@ -24,10 +24,15 @@ xcb_window_t ewmh_window;
*
*/
void ewmh_update_current_desktop(void) {
static uint32_t old_idx = NET_WM_DESKTOP_NONE;
const uint32_t idx = ewmh_get_workspace_index(focused);
if (idx != NET_WM_DESKTOP_NONE) {
xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root, A__NET_CURRENT_DESKTOP, XCB_ATOM_CARDINAL, 32, 1, &idx);

if (idx == old_idx || idx == NET_WM_DESKTOP_NONE) {
return;
}
old_idx = idx;

xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root, A__NET_CURRENT_DESKTOP, XCB_ATOM_CARDINAL, 32, 1, &idx);
}

/*
Expand All @@ -36,12 +41,18 @@ void ewmh_update_current_desktop(void) {
*/
void ewmh_update_number_of_desktops(void) {
Con *output, *ws;
static uint32_t old_idx = 0;
uint32_t idx = 0;

FOREACH_NONINTERNAL {
idx++;
};

if (idx == old_idx) {
return;
}
old_idx = idx;

xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root,
A__NET_NUMBER_OF_DESKTOPS, XCB_ATOM_CARDINAL, 32, 1, &idx);
}
Expand Down

0 comments on commit 830465b

Please sign in to comment.