[gtk/wip/baedert/for-master: 7/8] gl renderer: Properly clean up program state transforms
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/baedert/for-master: 7/8] gl renderer: Properly clean up program state transforms
- Date: Sun, 7 Jul 2019 05:25:06 +0000 (UTC)
commit b062594ae65ed907eabff73df8cfb5036e21d20c
Author: Timm Bäder <mail baedert org>
Date: Sat Jul 6 13:38:55 2019 +0200
gl renderer: Properly clean up program state transforms
gsk/gl/gskglrenderer.c | 1 +
gsk/gl/gskglrenderops.c | 12 ++++++++++++
gsk/gl/gskglrenderopsprivate.h | 1 +
3 files changed, 14 insertions(+)
---
diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c
index f464c728a5..46c9e64c1c 100644
--- a/gsk/gl/gskglrenderer.c
+++ b/gsk/gl/gskglrenderer.c
@@ -2342,6 +2342,7 @@ gsk_gl_renderer_dispose (GObject *gobject)
GskGLRenderer *self = GSK_GL_RENDERER (gobject);
g_clear_pointer (&self->render_ops, g_array_unref);
+ ops_free (&self->op_builder);
G_OBJECT_CLASS (gsk_gl_renderer_parent_class)->dispose (gobject);
}
diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c
index b23e8c5cde..7c02442d08 100644
--- a/gsk/gl/gskglrenderops.c
+++ b/gsk/gl/gskglrenderops.c
@@ -187,6 +187,17 @@ ops_init (RenderOpBuilder *builder)
}
}
+void
+ops_free (RenderOpBuilder *builder)
+{
+ int i;
+
+ for (i = 0; i < GL_N_PROGRAMS; i ++)
+ {
+ gsk_transform_unref (builder->program_state[i].modelview);
+ }
+}
+
void
ops_set_program (RenderOpBuilder *builder,
const Program *program)
@@ -225,6 +236,7 @@ ops_set_program (RenderOpBuilder *builder,
op.op = OP_CHANGE_MODELVIEW;
gsk_transform_to_matrix (builder->current_modelview, &op.modelview);
g_array_append_val (builder->render_ops, op);
+ gsk_transform_unref (program_state->modelview);
program_state->modelview = gsk_transform_ref (builder->current_modelview);
}
diff --git a/gsk/gl/gskglrenderopsprivate.h b/gsk/gl/gskglrenderopsprivate.h
index 84bafa74a0..b58f01af05 100644
--- a/gsk/gl/gskglrenderopsprivate.h
+++ b/gsk/gl/gskglrenderopsprivate.h
@@ -290,6 +290,7 @@ void ops_dump_framebuffer (RenderOpBuilder *builder,
int width,
int height);
void ops_init (RenderOpBuilder *builder);
+void ops_free (RenderOpBuilder *builder);
void ops_push_debug_group (RenderOpBuilder *builder,
const char *text);
void ops_pop_debug_group (RenderOpBuilder *builder);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]