static void HashValFree(void *val) { seqCacheEntry* e = (seqCacheEntry*) val; if (e->ibuf) { /* fprintf(stderr, "Removing: %p, cnt: %d\n", e->ibuf, e->ibuf->refcounter); */ IMB_freeImBuf(e->ibuf); MEM_CacheLimiter_unmanage(e->c_handle); ibufs_rem++; } e->ibuf = NULL; e->c_handle = NULL; BLI_mempool_free(entrypool, e); }
static void moviecache_valfree(void *val) { MovieCacheItem *item = (MovieCacheItem *)val; MovieCache *cache = item->cache_owner; PRINT("%s: cache '%s' free item %p buffer %p\n", __func__, cache->name, item, item->ibuf); if (item->ibuf) { MEM_CacheLimiter_unmanage(item->c_handle); IMB_freeImBuf(item->ibuf); } if (item->priority_data && cache->prioritydeleterfp) { cache->prioritydeleterfp(item->priority_data); } BLI_mempool_free(item->cache_owner->items_pool, item); }