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

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
1 changed files with 5 additions and 1 deletions

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