cogl-context: Destroy texture units later on

This patch moves the call to _cogl_destroy_texture_units() from
_cogl_context_free() to later on. When destroying a GL texture the
texture units are checked. This would end up accessing invalid memory
so we need to try to destroy the texture units only after everything
that might be referencing a texture has been destroyed.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
This commit is contained in:
Neil Roberts 2011-11-04 12:53:25 +00:00
parent d7e1192630
commit 1566941c2f

View File

@ -408,8 +408,6 @@ _cogl_context_free (CoglContext *context)
winsys->context_deinit (context); winsys->context_deinit (context);
_cogl_destroy_texture_units ();
if (context->window_buffer) if (context->window_buffer)
{ {
cogl_object_unref (context->window_buffer); cogl_object_unref (context->window_buffer);
@ -486,6 +484,8 @@ _cogl_context_free (CoglContext *context)
cogl_pipeline_cache_free (context->pipeline_cache); cogl_pipeline_cache_free (context->pipeline_cache);
_cogl_destroy_texture_units ();
g_byte_array_free (context->buffer_map_fallback_array, TRUE); g_byte_array_free (context->buffer_map_fallback_array, TRUE);
cogl_object_unref (context->display); cogl_object_unref (context->display);