[gtk/wip/chergert/fix-transform-ref] gskglrenderops: ref transform before releasing previous transform
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/fix-transform-ref] gskglrenderops: ref transform before releasing previous transform
- Date: Fri, 26 Jul 2019 18:04:14 +0000 (UTC)
commit bff61a1ef14c322c631cd14881f666574ba09ba1
Author: Christian Hergert <chergert redhat com>
Date: Fri Jul 26 11:03:27 2019 -0700
gskglrenderops: ref transform before releasing previous transform
Transforms may reference other transforms, so it is important to ref the
incoming transform before releasing any previous one. Otherwise, we risk
freeing the transform we wish to ref.
gsk/gl/gskglrenderops.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c
index 7c02442d08..e7fa773889 100644
--- a/gsk/gl/gskglrenderops.c
+++ b/gsk/gl/gskglrenderops.c
@@ -233,11 +233,14 @@ ops_set_program (RenderOpBuilder *builder,
if (program_state->modelview == NULL ||
!gsk_transform_equal (builder->current_modelview, program_state->modelview))
{
+ GskTransform *freeme;
+
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);
+ freeme = program_state->modelview;
program_state->modelview = gsk_transform_ref (builder->current_modelview);
+ gsk_transform_unref (freeme);
}
if (rect_equal (&empty_rect, &program_state->viewport) ||
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]