Commit: 543a270d5b6879b5631a1773caa40556e3abcf2a Author: Sergey Sharybin Date: Thu Oct 6 15:12:19 2022 +0200 Branches: tracking_refactor_v3 https://developer.blender.org/rB543a270d5b6879b5631a1773caa40556e3abcf2a
Movie clip: Remove special selection synchronization function The function is already doing a lot of memory indirections and sub-optimal lookups, so for the simplicity and robustness of the system might as well just do copy-on-write update. =================================================================== M source/blender/blenkernel/BKE_movieclip.h M source/blender/blenkernel/intern/movieclip.c M source/blender/depsgraph/intern/builder/deg_builder_nodes.cc M source/blender/depsgraph/intern/depsgraph_tag.cc M source/blender/depsgraph/intern/node/deg_node_operation.cc M source/blender/depsgraph/intern/node/deg_node_operation.h =================================================================== diff --git a/source/blender/blenkernel/BKE_movieclip.h b/source/blender/blenkernel/BKE_movieclip.h index cddc10b5826..4667aa17131 100644 --- a/source/blender/blenkernel/BKE_movieclip.h +++ b/source/blender/blenkernel/BKE_movieclip.h @@ -130,7 +130,6 @@ void BKE_movieclip_free_gputexture(struct MovieClip *clip); void BKE_movieclip_eval_update(struct Depsgraph *depsgraph, struct Main *bmain, struct MovieClip *clip); -void BKE_movieclip_eval_selection_update(struct Depsgraph *depsgraph, struct MovieClip *clip); /** Caching flags. */ #define MOVIECLIP_CACHE_SKIP (1 << 0) diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index 58c3ef3bba0..50d32db9de3 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -1961,41 +1961,6 @@ bool BKE_movieclip_put_frame_if_possible(MovieClip *clip, MovieClipUser *user, I return result; } -static void movieclip_selection_sync(MovieClip *clip_dst, const MovieClip *clip_src) -{ - BLI_assert(clip_dst != clip_src); - MovieTracking *tracking_dst = &clip_dst->tracking, tracking_src = clip_src->tracking; - /* Syncs the active object, track and plane track. */ - tracking_dst->objectnr = tracking_src.objectnr; - const int active_track_index = BLI_findindex(&tracking_src.tracks, tracking_src.act_track); - const int active_plane_track_index = BLI_findindex(&tracking_src.plane_tracks, - tracking_src.act_plane_track); - tracking_dst->act_track = BLI_findlink(&tracking_dst->tracks, active_track_index); - tracking_dst->act_plane_track = BLI_findlink(&tracking_dst->plane_tracks, - active_plane_track_index); - - /* Syncs the tracking selection flag. */ - MovieTrackingObject *tracking_object_dst, *tracking_object_src; - tracking_object_src = tracking_src.objects.first; - - for (tracking_object_dst = tracking_dst->objects.first; tracking_object_dst != NULL; - tracking_object_dst = tracking_object_dst->next, - tracking_object_src = tracking_object_src->next) { - ListBase *tracksbase_dst, *tracksbase_src; - tracksbase_dst = BKE_tracking_object_get_tracks(tracking_dst, tracking_object_dst); - tracksbase_src = BKE_tracking_object_get_tracks(&tracking_src, tracking_object_src); - - MovieTrackingTrack *track_dst, *track_src; - track_src = tracksbase_src->first; - for (track_dst = tracksbase_dst->first; track_dst != NULL; - track_dst = track_dst->next, track_src = track_src->next) { - track_dst->flag = track_src->flag; - track_dst->pat_flag = track_src->pat_flag; - track_dst->search_flag = track_src->search_flag; - } - } -} - static void movieclip_eval_update_reload(struct Depsgraph *depsgraph, Main *bmain, MovieClip *clip) { BKE_movieclip_reload(bmain, clip); @@ -2025,12 +1990,6 @@ void BKE_movieclip_eval_update(struct Depsgraph *depsgraph, Main *bmain, MovieCl } } -void BKE_movieclip_eval_selection_update(struct Depsgraph *depsgraph, MovieClip *clip) -{ - DEG_debug_print_eval(depsgraph, __func__, clip->id.name, clip); - movieclip_selection_sync(clip, (MovieClip *)clip->id.orig_id); -} - /* -------------------------------------------------------------------- */ /** \name GPU textures * \{ */ diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index f95c0700a47..1cd580428d3 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -1985,13 +1985,6 @@ void DepsgraphNodeBuilder::build_movieclip(MovieClip *clip) [bmain = bmain_, clip_cow](::Depsgraph *depsgraph) { BKE_movieclip_eval_update(depsgraph, bmain, clip_cow); }); - - add_operation_node(clip_id, - NodeType::BATCH_CACHE, - OperationCode::MOVIECLIP_SELECT_UPDATE, - [clip_cow](::Depsgraph *depsgraph) { - BKE_movieclip_eval_selection_update(depsgraph, clip_cow); - }); } void DepsgraphNodeBuilder::build_lightprobe(LightProbe *probe) diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc index 0c003cf23b2..2df65bf15aa 100644 --- a/source/blender/depsgraph/intern/depsgraph_tag.cc +++ b/source/blender/depsgraph/intern/depsgraph_tag.cc @@ -95,10 +95,6 @@ void depsgraph_select_tag_to_component_opcode(const ID *id, *component_type = NodeType::OBJECT_FROM_LAYER; *operation_code = OperationCode::OBJECT_FROM_LAYER_ENTRY; } - else if (id_type == ID_MC) { - *component_type = NodeType::BATCH_CACHE; - *operation_code = OperationCode::MOVIECLIP_SELECT_UPDATE; - } else if (is_selectable_data_id_type(id_type)) { *component_type = NodeType::BATCH_CACHE; *operation_code = OperationCode::GEOMETRY_SELECT_UPDATE; diff --git a/source/blender/depsgraph/intern/node/deg_node_operation.cc b/source/blender/depsgraph/intern/node/deg_node_operation.cc index d5401a6b0d1..cccc7938a4b 100644 --- a/source/blender/depsgraph/intern/node/deg_node_operation.cc +++ b/source/blender/depsgraph/intern/node/deg_node_operation.cc @@ -178,8 +178,6 @@ const char *operationCodeAsString(OperationCode opcode) /* Movie clip. */ case OperationCode::MOVIECLIP_EVAL: return "MOVIECLIP_EVAL"; - case OperationCode::MOVIECLIP_SELECT_UPDATE: - return "MOVIECLIP_SELECT_UPDATE"; /* Image. */ case OperationCode::IMAGE_ANIMATION: return "IMAGE_ANIMATION"; diff --git a/source/blender/depsgraph/intern/node/deg_node_operation.h b/source/blender/depsgraph/intern/node/deg_node_operation.h index b0685ac0351..1bc4b36141e 100644 --- a/source/blender/depsgraph/intern/node/deg_node_operation.h +++ b/source/blender/depsgraph/intern/node/deg_node_operation.h @@ -176,7 +176,6 @@ enum class OperationCode { /* Movie clips. --------------------------------------------------------- */ MOVIECLIP_EVAL, - MOVIECLIP_SELECT_UPDATE, /* Images. -------------------------------------------------------------- */ IMAGE_ANIMATION, _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs