diff options
-rw-r--r-- | i3lock.c | 5 | ||||
-rw-r--r-- | unlock_indicator.c | 2 |
2 files changed, 6 insertions, 1 deletions
@@ -431,6 +431,9 @@ void handle_screen_resize(void) { uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; xcb_configure_window(conn, win, mask, last_resolution); xcb_flush(conn); + + xinerama_query_screens(); + redraw_screen(); } /* @@ -683,6 +686,8 @@ int main(int argc, char *argv[]) { last_resolution[0] = screen->width_in_pixels; last_resolution[1] = screen->height_in_pixels; + xcb_change_window_attributes(conn, screen->root, XCB_CW_EVENT_MASK, + (uint32_t[]){ XCB_EVENT_MASK_STRUCTURE_NOTIFY }); #ifndef NOLIBCAIRO if (image_path) { diff --git a/unlock_indicator.c b/unlock_indicator.c index 3a33ca9..a0decb4 100644 --- a/unlock_indicator.c +++ b/unlock_indicator.c @@ -277,7 +277,7 @@ void redraw_screen(void) { xcb_change_window_attributes(conn, win, XCB_CW_BACK_PIXMAP, (uint32_t[1]){ bg_pixmap }); /* XXX: Possible optimization: Only update the area in the middle of the * screen instead of the whole screen. */ - xcb_clear_area(conn, 0, win, 0, 0, screen->width_in_pixels, screen->height_in_pixels); + xcb_clear_area(conn, 0, win, 0, 0, last_resolution[0], last_resolution[1]); xcb_free_pixmap(conn, bg_pixmap); xcb_flush(conn); } |