From 3c8ddcaf264a08102b27ae96a8a8340cb0abc997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Sat, 13 Apr 2024 05:14:04 +0200 Subject: Fix high-DPI scaling with OpenGL We used to render multiple copies (four for a scaling factor of 2). --- fiv-view.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fiv-view.c b/fiv-view.c index f0cd577..911e249 100644 --- a/fiv-view.c +++ b/fiv-view.c @@ -851,6 +851,10 @@ gl_draw(FivView *self, cairo_t *cr) cliph = allocation.height; } + int scale = gtk_widget_get_scale_factor(GTK_WIDGET(self)); + clipw *= scale; + cliph *= scale; + enum { SRC, DEST }; GLuint textures[2] = {}; glGenTextures(2, textures); @@ -963,7 +967,7 @@ gl_draw(FivView *self, cairo_t *cr) GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(self)); cairo_translate(cr, dx, dy); gdk_cairo_draw_from_gl( - cr, window, textures[DEST], GL_TEXTURE, 1, 0, 0, clipw, cliph); + cr, window, textures[DEST], GL_TEXTURE, scale, 0, 0, clipw, cliph); gdk_gl_context_make_current(self->gl_context); glDeleteBuffers(1, &vertex_buffer); -- cgit v1.2.3