struct MovieCache;
typedef void (*MovieCacheGetKeyDataFP) (void *userkey, int *framenr, int *proxy, int *render_flags);
-typedef void (*MovieCacheKeyDeleterFP) (void *userkey);
-typedef int (*MovieCacheCheckKeyUnusedFP) (void *userkey);
typedef void *(*MovieCacheGetPriorityDataFP) (void *userkey);
typedef int (*MovieCacheGetItemPriorityFP) (void *last_userkey, void *priority_data);
void IMB_moviecache_destruct(void);
struct MovieCache *IMB_moviecache_create(const char *name, int keysize, GHashHashFP hashfp, GHashCmpFP cmpfp);
-void IMB_moviecache_set_key_deleter_callback(struct MovieCache *cache, MovieCacheKeyDeleterFP keydeleterfp);
void IMB_moviecache_set_getdata_callback(struct MovieCache *cache, MovieCacheGetKeyDataFP getdatafp);
-void IMB_moviecache_set_check_unused_callback(struct MovieCache *cache, MovieCacheCheckKeyUnusedFP checkkeyunusedfp);
void IMB_moviecache_set_priority_callback(struct MovieCache *cache, MovieCacheGetPriorityDataFP getprioritydatafp,
MovieCacheGetItemPriorityFP getitempriorityfp,
MovieCachePriorityDeleterFP prioritydeleterfp);
char name[64];
GHash *hash;
- MovieCacheKeyDeleterFP keydeleterfp;
GHashHashFP hashfp;
GHashCmpFP cmpfp;
MovieCacheGetKeyDataFP getdatafp;
- MovieCacheCheckKeyUnusedFP checkkeyunusedfp;
MovieCacheGetPriorityDataFP getprioritydatafp;
MovieCacheGetItemPriorityFP getitempriorityfp;
{
MovieCacheKey *key = (MovieCacheKey *)val;
- if (key->cache_owner->keydeleterfp) {
- key->cache_owner->keydeleterfp(key->userkey);
- }
-
BLI_mempool_free(key->cache_owner->userkeys_pool, key->userkey);
BLI_mempool_free(key->cache_owner->keys_pool, key);
if (remove)
PRINT("%s: cache '%s' remove item %p without buffer\n", __func__, cache->name, item);
- if (!remove && cache->checkkeyunusedfp) {
- remove = cache->checkkeyunusedfp(key->userkey);
-
- if (remove)
- PRINT("%s: cache '%s' remove unused item %p\n", __func__, cache->name, item);
- }
-
if (remove)
BLI_ghash_remove(cache->hash, key, moviecache_keyfree, moviecache_valfree);
}
return cache;
}
-void IMB_moviecache_set_key_deleter_callback(MovieCache *cache, MovieCacheKeyDeleterFP keydeleterfp)
-{
- cache->keydeleterfp = keydeleterfp;
-}
-
void IMB_moviecache_set_getdata_callback(MovieCache *cache, MovieCacheGetKeyDataFP getdatafp)
{
cache->getdatafp = getdatafp;
}
-void IMB_moviecache_set_check_unused_callback(MovieCache *cache, MovieCacheCheckKeyUnusedFP checkkeyunusedfp)
-{
- cache->checkkeyunusedfp = checkkeyunusedfp;
-}
-
void IMB_moviecache_set_priority_callback(struct MovieCache *cache, MovieCacheGetPriorityDataFP getprioritydatafp,
MovieCacheGetItemPriorityFP getitempriorityfp,
MovieCachePriorityDeleterFP prioritydeleterfp)