glarea: Flip our texture

The texture that produce is upside-down, compared to what
GSK expects, so flip things around with a transform.

This fixes the shadertoy demo being upside-down after a
recent fix to avoid downloading and reuploading the texture.
This commit is contained in:
Matthias Clasen 2020-09-27 12:33:13 -04:00
parent 431f144f37
commit b711c12bbe

View File

@ -744,11 +744,18 @@ gtk_gl_area_snapshot (GtkWidget *widget,
texture->height, texture->height,
release_texture, texture); release_texture, texture);
/* Our texture is rendered by OpenGL, so it is upside down,
* compared to what GSK expects, so flip it back.
*/
gtk_snapshot_save (snapshot);
gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (0, gtk_widget_get_height (widget)));
gtk_snapshot_scale (snapshot, 1, -1);
gtk_snapshot_append_texture (snapshot, gtk_snapshot_append_texture (snapshot,
texture->holder, texture->holder,
&GRAPHENE_RECT_INIT (0, 0, &GRAPHENE_RECT_INIT (0, 0,
gtk_widget_get_width (widget), gtk_widget_get_width (widget),
gtk_widget_get_height (widget))); gtk_widget_get_height (widget)));
gtk_snapshot_restore (snapshot);
g_object_unref (texture->holder); g_object_unref (texture->holder);
} }