aboutsummaryrefslogtreecommitdiff
path: root/src/window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/window.c b/src/window.c
index be922a1..b71bc07 100644
--- a/src/window.c
+++ b/src/window.c
@@ -151,6 +151,13 @@ void window_init(window_t *window, display_t *display, config_t *config)
window->cr = cairo_create(window->surface);
assert(cairo_status(window->cr) == CAIRO_STATUS_SUCCESS);
log_trace("Created cairo window context");
+
+ window->scale = config->scale > 0
+ ? config->scale
+ : steps(window->display->screen_dpi / 96.0, 4);
+
+ if (window->scale < 1) window->scale = 1;
+ log_debug("Set window scale to '%lf'", window->scale);
}
void window_move(window_t *window, int x, int y)
@@ -203,6 +210,7 @@ static void window_reshape(window_t *window)
cairo_arc(cr, window->width - radius, radius, radius, 270 * degree, 450 * degree);
cairo_fill(cr);
+ cairo_surface_set_device_scale(surface, window->scale, window->scale);
cairo_show_page(cr);
cairo_destroy(cr);
@@ -243,6 +251,7 @@ void window_resize(window_t *window, int width, int height)
// Update cairo surface
cairo_xcb_surface_set_size(window->surface, width, height);
+ cairo_surface_set_device_scale(window->surface, window->scale, window->scale);
}
void window_present(window_t *window, cairo_surface_t *surface)