[Bf-blender-cvs] [2231b56] master: Better fix for previous commit

Sergey Sharybin noreply at git.blender.org
Mon Dec 16 17:06:46 CET 2013


Commit: 2231b565f011e984d4ee6eeb33a80567b404e032
Author: Sergey Sharybin
Date:   Mon Dec 16 22:05:27 2013 +0600
http://developer.blender.org/rB2231b565f011e984d4ee6eeb33a80567b404e032

Better fix for previous commit

Cache iterator might return unused keys as well.
Now unused keys are being removed before cleanup
and iteration.

===================================================================

M	source/blender/imbuf/intern/moviecache.c

===================================================================

diff --git a/source/blender/imbuf/intern/moviecache.c b/source/blender/imbuf/intern/moviecache.c
index 20e0169..c042831 100644
--- a/source/blender/imbuf/intern/moviecache.c
+++ b/source/blender/imbuf/intern/moviecache.c
@@ -447,6 +447,8 @@ void IMB_moviecache_cleanup(MovieCache *cache, bool (cleanup_check_cb) (ImBuf *i
 {
 	GHashIterator *iter;
 
+	check_unused_keys(cache);
+
 	iter = BLI_ghashIterator_new(cache->hash);
 	while (!BLI_ghashIterator_done(iter)) {
 		MovieCacheKey *key = BLI_ghashIterator_getKey(iter);
@@ -454,7 +456,7 @@ void IMB_moviecache_cleanup(MovieCache *cache, bool (cleanup_check_cb) (ImBuf *i
 
 		BLI_ghashIterator_step(iter);
 
-		if (item->ibuf == NULL || cleanup_check_cb(item->ibuf, key->userkey, userdata)) {
+		if (cleanup_check_cb(item->ibuf, key->userkey, userdata)) {
 			PRINT("%s: cache '%s' remove item %p\n", __func__, cache->name, item);
 
 			BLI_ghash_remove(cache->hash, key, moviecache_keyfree, moviecache_valfree);
@@ -554,7 +556,11 @@ void IMB_moviecache_get_cache_segments(MovieCache *cache, int proxy, int render_
 
 struct MovieCacheIter *IMB_moviecacheIter_new(MovieCache *cache)
 {
-	GHashIterator *iter = BLI_ghashIterator_new(cache->hash);
+	GHashIterator *iter;
+
+	check_unused_keys(cache);
+	iter = BLI_ghashIterator_new(cache->hash);
+
 	return (struct MovieCacheIter *) iter;
 }




More information about the Bf-blender-cvs mailing list