From 3a3ac0de8f13b8c06a6c0dea63107d9d3f151f42 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 31 Oct 2010 12:43:42 +0000 Subject: Fix #23283: crash exiting blender player, IMB_exit got called twice. --- source/blender/imbuf/intern/cache.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'source/blender/imbuf/intern/cache.c') diff --git a/source/blender/imbuf/intern/cache.c b/source/blender/imbuf/intern/cache.c index 77e01d8ebef..5650a4f9b94 100644 --- a/source/blender/imbuf/intern/cache.c +++ b/source/blender/imbuf/intern/cache.c @@ -82,6 +82,8 @@ typedef struct ImGlobalTileCache { int totthread; ThreadMutex mutex; + + int initialized; } ImGlobalTileCache; static ImGlobalTileCache GLOBAL_CACHE; @@ -203,6 +205,8 @@ void imb_tile_cache_init(void) /* initialize for one thread, for places that access textures outside of rendering (displace modifier, painting, ..) */ IMB_tile_cache_params(0, 0); + + GLOBAL_CACHE.initialized = 1; } void imb_tile_cache_exit(void) @@ -210,19 +214,23 @@ void imb_tile_cache_exit(void) ImGlobalTile *gtile; int a; - for(gtile=GLOBAL_CACHE.tiles.first; gtile; gtile=gtile->next) - imb_global_cache_tile_unload(gtile); + if(GLOBAL_CACHE.initialized) { + for(gtile=GLOBAL_CACHE.tiles.first; gtile; gtile=gtile->next) + imb_global_cache_tile_unload(gtile); - for(a=0; a