[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49694] trunk/blender/source/blender/imbuf : Movie cache: add function to iterate through cache and remove items
Sergey Sharybin
sergey.vfx at gmail.com
Wed Aug 8 14:16:46 CEST 2012
Revision: 49694
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49694
Author: nazgul
Date: 2012-08-08 12:16:46 +0000 (Wed, 08 Aug 2012)
Log Message:
-----------
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.
Modified Paths:
--------------
trunk/blender/source/blender/imbuf/IMB_moviecache.h
trunk/blender/source/blender/imbuf/intern/moviecache.c
Modified: trunk/blender/source/blender/imbuf/IMB_moviecache.h
===================================================================
--- trunk/blender/source/blender/imbuf/IMB_moviecache.h 2012-08-08 12:15:26 UTC (rev 49693)
+++ trunk/blender/source/blender/imbuf/IMB_moviecache.h 2012-08-08 12:16:46 UTC (rev 49694)
@@ -60,6 +60,9 @@
void IMB_moviecache_put(struct MovieCache *cache, void *userkey, struct ImBuf *ibuf);
struct ImBuf* IMB_moviecache_get(struct MovieCache *cache, void *userkey);
void IMB_moviecache_free(struct MovieCache *cache);
+
+void IMB_moviecache_cleanup(struct MovieCache *cache, int (cleanup_check_cb) (void *userkey, void *userdata), void *userdata);
+
void IMB_moviecache_get_cache_segments(struct MovieCache *cache, int proxy, int render_flags, int *totseg_r, int **points_r);
#endif
Modified: trunk/blender/source/blender/imbuf/intern/moviecache.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/moviecache.c 2012-08-08 12:15:26 UTC (rev 49693)
+++ trunk/blender/source/blender/imbuf/intern/moviecache.c 2012-08-08 12:16:46 UTC (rev 49694)
@@ -393,6 +393,32 @@
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)
{
More information about the Bf-blender-cvs
mailing list