Cleanup: CacheFile: Move to IDTypeInfo and remove unused BKE API.
This commit is contained in:
@@ -39,18 +39,8 @@ void BKE_cachefiles_exit(void);
|
||||
|
||||
void *BKE_cachefile_add(struct Main *bmain, const char *name);
|
||||
|
||||
void BKE_cachefile_init(struct CacheFile *cache_file);
|
||||
|
||||
void BKE_cachefile_free(struct CacheFile *cache_file);
|
||||
|
||||
void BKE_cachefile_copy_data(struct Main *bmain,
|
||||
struct CacheFile *cache_file_dst,
|
||||
const struct CacheFile *cache_file_src,
|
||||
const int flag);
|
||||
struct CacheFile *BKE_cachefile_copy(struct Main *bmain, const struct CacheFile *cache_file);
|
||||
|
||||
void BKE_cachefile_make_local(struct Main *bmain, struct CacheFile *cache_file, const int flags);
|
||||
|
||||
void BKE_cachefile_reload(struct Depsgraph *depsgraph, struct CacheFile *cache_file);
|
||||
|
||||
void BKE_cachefile_eval(struct Main *bmain,
|
||||
|
||||
@@ -157,7 +157,7 @@ extern IDTypeInfo IDType_ID_WM;
|
||||
// extern IDTypeInfo IDType_ID_LS;
|
||||
// extern IDTypeInfo IDType_ID_PAL;
|
||||
// extern IDTypeInfo IDType_ID_PC;
|
||||
// extern IDTypeInfo IDType_ID_CF;
|
||||
extern IDTypeInfo IDType_ID_CF;
|
||||
extern IDTypeInfo IDType_ID_WS;
|
||||
extern IDTypeInfo IDType_ID_LP;
|
||||
|
||||
|
||||
@@ -37,8 +37,11 @@
|
||||
#include "BLI_string.h"
|
||||
#include "BLI_threads.h"
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_cachefile.h"
|
||||
#include "BKE_idtype.h"
|
||||
#include "BKE_lib_id.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_modifier.h"
|
||||
@@ -50,6 +53,54 @@
|
||||
# include "ABC_alembic.h"
|
||||
#endif
|
||||
|
||||
static void cachefile_handle_free(CacheFile *cache_file);
|
||||
|
||||
static void cache_file_init_data(ID *id)
|
||||
{
|
||||
CacheFile *cache_file = (CacheFile *)id;
|
||||
|
||||
BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(cache_file, id));
|
||||
|
||||
cache_file->scale = 1.0f;
|
||||
}
|
||||
|
||||
static void cache_file_copy_data(Main *UNUSED(bmain),
|
||||
ID *id_dst,
|
||||
const ID *id_src,
|
||||
const int UNUSED(flag))
|
||||
{
|
||||
CacheFile *cache_file_dst = (CacheFile *)id_dst;
|
||||
const CacheFile *cache_file_src = (const CacheFile *)id_src;
|
||||
|
||||
cache_file_dst->handle = NULL;
|
||||
cache_file_dst->handle_readers = NULL;
|
||||
BLI_duplicatelist(&cache_file_dst->object_paths, &cache_file_src->object_paths);
|
||||
}
|
||||
|
||||
static void cache_file_free_data(ID *id)
|
||||
{
|
||||
CacheFile *cache_file = (CacheFile *)id;
|
||||
BKE_animdata_free((ID *)cache_file, false);
|
||||
cachefile_handle_free(cache_file);
|
||||
BLI_freelistN(&cache_file->object_paths);
|
||||
}
|
||||
|
||||
IDTypeInfo IDType_ID_CF = {
|
||||
.id_code = ID_CF,
|
||||
.id_filter = FILTER_ID_CF,
|
||||
.main_listbase_index = INDEX_ID_CF,
|
||||
.struct_size = sizeof(CacheFile),
|
||||
.name = "CacheFile",
|
||||
.name_plural = "cache_files",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_CACHEFILE,
|
||||
.flags = 0,
|
||||
|
||||
.init_data = cache_file_init_data,
|
||||
.copy_data = cache_file_copy_data,
|
||||
.free_data = cache_file_free_data,
|
||||
.make_local = NULL,
|
||||
};
|
||||
|
||||
/* TODO: make this per cache file to avoid global locks. */
|
||||
static SpinLock spin;
|
||||
|
||||
@@ -157,53 +208,11 @@ void *BKE_cachefile_add(Main *bmain, const char *name)
|
||||
{
|
||||
CacheFile *cache_file = BKE_libblock_alloc(bmain, ID_CF, name, 0);
|
||||
|
||||
BKE_cachefile_init(cache_file);
|
||||
cache_file_init_data(&cache_file->id);
|
||||
|
||||
return cache_file;
|
||||
}
|
||||
|
||||
void BKE_cachefile_init(CacheFile *cache_file)
|
||||
{
|
||||
cache_file->filepath[0] = '\0';
|
||||
cache_file->override_frame = false;
|
||||
cache_file->frame = 0.0f;
|
||||
cache_file->is_sequence = false;
|
||||
cache_file->scale = 1.0f;
|
||||
BLI_listbase_clear(&cache_file->object_paths);
|
||||
|
||||
cache_file->handle = NULL;
|
||||
cache_file->handle_filepath[0] = '\0';
|
||||
cache_file->handle_readers = NULL;
|
||||
}
|
||||
|
||||
/** Free (or release) any data used by this cachefile (does not free the cachefile itself). */
|
||||
void BKE_cachefile_free(CacheFile *cache_file)
|
||||
{
|
||||
BKE_animdata_free((ID *)cache_file, false);
|
||||
cachefile_handle_free(cache_file);
|
||||
BLI_freelistN(&cache_file->object_paths);
|
||||
}
|
||||
|
||||
/**
|
||||
* Only copy internal data of CacheFile ID from source to already
|
||||
* allocated/initialized destination.
|
||||
* You probably never want to use that directly,
|
||||
* use #BKE_id_copy or #BKE_id_copy_ex for typical needs.
|
||||
*
|
||||
* WARNING! This function will not handle ID user count!
|
||||
*
|
||||
* \param flag: Copying options (see BKE_lib_id.h's LIB_ID_COPY_... flags for more).
|
||||
*/
|
||||
void BKE_cachefile_copy_data(Main *UNUSED(bmain),
|
||||
CacheFile *cache_file_dst,
|
||||
const CacheFile *UNUSED(cache_file_src),
|
||||
const int UNUSED(flag))
|
||||
{
|
||||
cache_file_dst->handle = NULL;
|
||||
cache_file_dst->handle_readers = NULL;
|
||||
BLI_duplicatelist(&cache_file_dst->object_paths, &cache_file_dst->object_paths);
|
||||
}
|
||||
|
||||
CacheFile *BKE_cachefile_copy(Main *bmain, const CacheFile *cache_file)
|
||||
{
|
||||
CacheFile *cache_file_copy;
|
||||
@@ -211,11 +220,6 @@ CacheFile *BKE_cachefile_copy(Main *bmain, const CacheFile *cache_file)
|
||||
return cache_file_copy;
|
||||
}
|
||||
|
||||
void BKE_cachefile_make_local(Main *bmain, CacheFile *cache_file, const int flags)
|
||||
{
|
||||
BKE_lib_id_make_local_generic(bmain, &cache_file->id, flags);
|
||||
}
|
||||
|
||||
void BKE_cachefile_reload(Depsgraph *depsgraph, CacheFile *cache_file)
|
||||
{
|
||||
/* To force reload, free the handle and tag depsgraph to load it again. */
|
||||
|
||||
@@ -84,7 +84,7 @@ static void id_type_init(void)
|
||||
// INIT_TYPE(ID_LS);
|
||||
// INIT_TYPE(ID_PAL);
|
||||
// INIT_TYPE(ID_PC);
|
||||
// INIT_TYPE(ID_CF);
|
||||
INIT_TYPE(ID_CF);
|
||||
INIT_TYPE(ID_WS);
|
||||
INIT_TYPE(ID_LP);
|
||||
|
||||
|
||||
@@ -568,9 +568,7 @@ bool BKE_lib_id_make_local(Main *bmain, ID *id, const bool test, const int flags
|
||||
}
|
||||
return true;
|
||||
case ID_CF:
|
||||
if (!test) {
|
||||
BKE_cachefile_make_local(bmain, (CacheFile *)id, flags);
|
||||
}
|
||||
BLI_assert(0);
|
||||
return true;
|
||||
case ID_WS:
|
||||
case ID_SCR:
|
||||
@@ -772,7 +770,7 @@ bool BKE_id_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int flag)
|
||||
BKE_paint_curve_copy_data(bmain, (PaintCurve *)*r_newid, (PaintCurve *)id, flag);
|
||||
break;
|
||||
case ID_CF:
|
||||
BKE_cachefile_copy_data(bmain, (CacheFile *)*r_newid, (CacheFile *)id, flag);
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_SO:
|
||||
BLI_assert(0);
|
||||
@@ -1391,7 +1389,7 @@ void BKE_libblock_init_empty(ID *id)
|
||||
BKE_linestyle_init((FreestyleLineStyle *)id);
|
||||
break;
|
||||
case ID_CF:
|
||||
BKE_cachefile_init((CacheFile *)id);
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_KE:
|
||||
/* Shapekeys are a complex topic too - they depend on their 'user' data type...
|
||||
|
||||
@@ -238,7 +238,7 @@ void BKE_libblock_free_datablock(ID *id, const int UNUSED(flag))
|
||||
BKE_paint_curve_free((PaintCurve *)id);
|
||||
break;
|
||||
case ID_CF:
|
||||
BKE_cachefile_free((CacheFile *)id);
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_WS:
|
||||
BLI_assert(0);
|
||||
|
||||
Reference in New Issue
Block a user