[Bf-blender-cvs] [3c479b98231] master: Movie clip: Remove special selection synchronization function

Sergey Sharybin noreply at git.blender.org
Tue Nov 22 11:54:21 CET 2022


Commit: 3c479b9823108d52a738fda7e345c111b03b5d48
Author: Sergey Sharybin
Date:   Thu Oct 6 15:12:19 2022 +0200
Branches: master
https://developer.blender.org/rB3c479b9823108d52a738fda7e345c111b03b5d48

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 1cc7a17ea01..9945f896972 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -1984,41 +1984,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);
@@ -2048,12 +2013,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 c84852788fd..fc764b49e06 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -1990,13 +1990,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,



More information about the Bf-blender-cvs mailing list