Fix high-DPI scaling with OpenGL
All checks were successful
Alpine 3.19 Success
Arch Linux Success
Arch Linux AUR Success
Debian Bookworm Success
Fedora 39 Success
OpenBSD 7.3 Success
openSUSE 15.5 Success

We used to render multiple copies (four for a scaling factor of 2).
This commit is contained in:
Přemysl Eric Janouch 2024-04-13 05:14:04 +02:00
parent e3ec07a19f
commit 3c8ddcaf26
Signed by: p
GPG Key ID: A0420B94F92B9493

View File

@ -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);