Move MovieClip to new undo cache management system.

This commit is contained in:
Bastien Montagne 2020-07-03 16:55:13 +02:00
parent 1019c9f582
commit 1bdabd7b4f
2 changed files with 18 additions and 28 deletions

View File

@ -129,6 +129,23 @@ static void movie_clip_foreach_id(ID *id, LibraryForeachIDData *data)
}
}
static void movie_clip_foreach_cache(ID *id,
IDTypeForeachCacheFunctionCallback function_callback,
void *user_data)
{
MovieClip *movie_clip = (MovieClip *)id;
IDCacheKey key = {
.id_session_uuid = id->session_uuid,
.offset_in_ID = offsetof(MovieClip, cache),
.cache_v = movie_clip->cache,
};
function_callback(id, &key, (void **)&movie_clip->cache, user_data);
key.offset_in_ID = offsetof(MovieClip, tracking.camera.intrinsics);
key.cache_v = movie_clip->tracking.camera.intrinsics;
function_callback(id, &key, (void **)&movie_clip->tracking.camera.intrinsics, user_data);
}
IDTypeInfo IDType_ID_MC = {
.id_code = ID_MC,
.id_filter = FILTER_ID_MC,
@ -144,6 +161,7 @@ IDTypeInfo IDType_ID_MC = {
.free_data = movie_clip_free_data,
.make_local = NULL,
.foreach_id = movie_clip_foreach_id,
.foreach_cache = movie_clip_foreach_cache,
};
/*********************** movieclip buffer loaders *************************/

View File

@ -2013,22 +2013,10 @@ void blo_end_image_pointer_map(FileData *fd, Main *oldmain)
void blo_make_movieclip_pointer_map(FileData *fd, Main *oldmain)
{
MovieClip *clip = oldmain->movieclips.first;
Scene *sce = oldmain->scenes.first;
fd->movieclipmap = oldnewmap_new();
for (; clip; clip = clip->id.next) {
if (clip->cache) {
oldnewmap_insert(fd->movieclipmap, clip->cache, clip->cache, 0);
}
if (clip->tracking.camera.intrinsics) {
oldnewmap_insert(
fd->movieclipmap, clip->tracking.camera.intrinsics, clip->tracking.camera.intrinsics, 0);
}
}
for (; sce; sce = sce->id.next) {
if (sce->nodetree) {
bNode *node;
@ -2058,8 +2046,6 @@ void blo_end_movieclip_pointer_map(FileData *fd, Main *oldmain)
}
for (; clip; clip = clip->id.next) {
clip->cache = newmclipadr(fd, clip->cache);
clip->tracking.camera.intrinsics = newmclipadr(fd, clip->tracking.camera.intrinsics);
BLI_freelistN(&clip->runtime.gputextures);
}
@ -8470,20 +8456,6 @@ static void direct_link_movieclip(BlendDataReader *reader, MovieClip *clip)
BLO_read_data_address(reader, &clip->adt);
if (reader->fd->movieclipmap) {
clip->cache = newmclipadr(reader->fd, clip->cache);
}
else {
clip->cache = NULL;
}
if (reader->fd->movieclipmap) {
clip->tracking.camera.intrinsics = newmclipadr(reader->fd, clip->tracking.camera.intrinsics);
}
else {
clip->tracking.camera.intrinsics = NULL;
}
direct_link_movieTracks(reader, &tracking->tracks);
direct_link_moviePlaneTracks(reader, &tracking->plane_tracks);
direct_link_movieReconstruction(reader, &tracking->reconstruction);