[Bf-blender-cvs] [9f3b0e41bbc] master: Fix T102887: crash deleting plane track

Philipp Oeser noreply at git.blender.org
Thu Dec 1 11:26:35 CET 2022


Commit: 9f3b0e41bbc5529444e47395e14cded89614c493
Author: Philipp Oeser
Date:   Thu Dec 1 10:10:33 2022 +0100
Branches: master
https://developer.blender.org/rB9f3b0e41bbc5529444e47395e14cded89614c493

Fix T102887: crash deleting plane track

Two things here:
- fix ghash lookup from rB4d497721ecd1
-- this was looking in the wrong map (causing an assert on file load)
- set MovieTrackingObject active_plane_track to NULL upon deletion (same
as for regular tracks)
-- rBfe38715600c introduced a crash because `draw_tracking_tracks` would
still get an active plane track (logic for getting these changed)

Maniphest Tasks: T102887

Differential Revision: https://developer.blender.org/D16660

===================================================================

M	source/blender/blenkernel/intern/tracking.c
M	source/blender/editors/space_clip/clip_utils.c

===================================================================

diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index d71c0cc4bf9..f53e32a70c2 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -275,7 +275,7 @@ static void tracking_object_copy(MovieTrackingObject *tracking_object_dst,
   }
   if (tracking_object_src->active_plane_track) {
     tracking_object_dst->active_plane_track = BLI_ghash_lookup(
-        ctx.old_to_new_track_map, tracking_object_src->active_plane_track);
+        ctx.old_to_new_plane_track_map, tracking_object_src->active_plane_track);
     BLI_assert(tracking_object_dst->active_plane_track != NULL);
   }
 
diff --git a/source/blender/editors/space_clip/clip_utils.c b/source/blender/editors/space_clip/clip_utils.c
index 53aca35c997..3e621a39dcb 100644
--- a/source/blender/editors/space_clip/clip_utils.c
+++ b/source/blender/editors/space_clip/clip_utils.c
@@ -362,6 +362,11 @@ void clip_delete_plane_track(bContext *C, MovieClip *clip, MovieTrackingPlaneTra
 {
   MovieTracking *tracking = &clip->tracking;
   MovieTrackingObject *tracking_object = BKE_tracking_object_get_active(&clip->tracking);
+
+  if (plane_track == tracking_object->active_plane_track) {
+    tracking_object->active_plane_track = NULL;
+  }
+
   /* Delete f-curves associated with the track (such as weight, i.e.) */
   /* Escaped object name, escaped track name, rest of the path. */
   char rna_path[MAX_NAME * 4 + 64];



More information about the Bf-blender-cvs mailing list