Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-08-08 16:16:46 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-08-08 16:16:46 +0400
commit69095a65d91d2f6f89c28455232e0d31c33093e4 (patch)
tree55b00fbc65b97fc23ac0f448502f578acd5e20b2 /source/blender/imbuf/intern/moviecache.c
parent6292fed832241f109b54c47815ce921079bca869 (diff)
Movie cache: add function to iterate through cache and remove items
using custom check function for this. Currently unused, but would be helpful for sequencer cache.
Diffstat (limited to 'source/blender/imbuf/intern/moviecache.c')
-rw-r--r--source/blender/imbuf/intern/moviecache.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/imbuf/intern/moviecache.c b/source/blender/imbuf/intern/moviecache.c
index 671c79a0659..71eae6c6c21 100644
--- a/source/blender/imbuf/intern/moviecache.c
+++ b/source/blender/imbuf/intern/moviecache.c
@@ -393,6 +393,32 @@ void IMB_moviecache_free(MovieCache *cache)
MEM_freeN(cache);
}
+void IMB_moviecache_cleanup(MovieCache *cache, int (cleanup_check_cb) (void *userkey, void *userdata), void *userdata)
+{
+ GHashIterator *iter;
+
+ iter = BLI_ghashIterator_new(cache->hash);
+ while (!BLI_ghashIterator_isDone(iter)) {
+ MovieCacheKey *key = BLI_ghashIterator_getKey(iter);
+ int remove;
+
+ BLI_ghashIterator_step(iter);
+
+ remove = cleanup_check_cb(key->userkey, userdata);
+
+ if (remove) {
+ MovieCacheItem *item = BLI_ghashIterator_getValue(iter);
+ (void) item; /* silence unused variable when not using debug */
+
+ PRINT("%s: cache '%s' remove item %p\n", __func__, cache->name, item);
+
+ BLI_ghash_remove(cache->hash, key, moviecache_keyfree, moviecache_valfree);
+ }
+ }
+
+ BLI_ghashIterator_free(iter);
+}
+
/* get segments of cached frames. useful for debugging cache policies */
void IMB_moviecache_get_cache_segments(MovieCache *cache, int proxy, int render_flags, int *totseg_r, int **points_r)
{