summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--i3lock.c5
-rw-r--r--unlock_indicator.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/i3lock.c b/i3lock.c
index 9c55db2..7a2812d 100644
--- a/i3lock.c
+++ b/i3lock.c
@@ -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);
}