summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2020-06-04 12:50:25 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2020-06-04 13:18:23 +0100
commit9ad01b067b71b820b22fb4a08667c87d494e6db6 (patch)
tree538ec30cf22f7d2ac79fe708b1e631e4479ffc9f
parent92d2741a40bf8f0401ac70c520cc29e221dbcc79 (diff)
downloadcogl-9ad01b067b71b820b22fb4a08667c87d494e6db6.tar.gz
Free state after freeing its contents
We are freeing the big state inside the CoglPipeline before freeing the snippets list, even though the snippets are stored in the big state. Fixes: #14
-rw-r--r--cogl/cogl-pipeline.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/cogl/cogl-pipeline.c b/cogl/cogl-pipeline.c
index b2fee10d..e8d6e97d 100644
--- a/cogl/cogl-pipeline.c
+++ b/cogl/cogl-pipeline.c
@@ -492,9 +492,6 @@ _cogl_pipeline_free (CoglPipeline *pipeline)
_cogl_bitmask_destroy (&uniforms_state->changed_mask);
}
- if (pipeline->differences & COGL_PIPELINE_STATE_NEEDS_BIG_STATE)
- g_slice_free (CoglPipelineBigState, pipeline->big_state);
-
if (pipeline->differences & COGL_PIPELINE_STATE_LAYERS)
{
g_list_foreach (pipeline->layer_differences,
@@ -508,6 +505,9 @@ _cogl_pipeline_free (CoglPipeline *pipeline)
if (pipeline->differences & COGL_PIPELINE_STATE_FRAGMENT_SNIPPETS)
_cogl_pipeline_snippet_list_free (&pipeline->big_state->fragment_snippets);
+ if (pipeline->differences & COGL_PIPELINE_STATE_NEEDS_BIG_STATE)
+ g_slice_free (CoglPipelineBigState, pipeline->big_state);
+
g_list_free (pipeline->deprecated_get_layers_list);
recursively_free_layer_caches (pipeline);