[Bf-blender-cvs] [f921ae46658] blender-v2.90-release: Fix T79453: Motion Tracking: marker does not remember 'enabled' state

Philipp Oeser noreply at git.blender.org
Tue Aug 4 12:58:40 CEST 2020


Commit: f921ae46658348121c3408b01171e0e21667438c
Author: Philipp Oeser
Date:   Mon Aug 3 15:57:07 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rBf921ae46658348121c3408b01171e0e21667438c

Fix T79453: Motion Tracking: marker does not remember 'enabled' state

Caused by rB63ee3db96107.

While above commit corrected the clip offset, it also removed logic to
ensure a marker on a particular frame. This is needed though, otherwise
changes on a particular frame are applied to the marker being returned
by 'BKE_tracking_marker_get' which can be a completely different marker
if none exist for that frame yet.

This patch partly reverts rB63ee3db96107 and reintroduces the framenr
for the MarkerUpdateCb and uses that to ensure a marker on that frame.

Candidate for backporting to 2.83 LTS?

Reviewers: sergey, jacqueslucke

Subscribers:

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

M	source/blender/editors/space_clip/clip_buttons.c

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

diff --git a/source/blender/editors/space_clip/clip_buttons.c b/source/blender/editors/space_clip/clip_buttons.c
index 3b1cc6fcab0..71f75d96cb1 100644
--- a/source/blender/editors/space_clip/clip_buttons.c
+++ b/source/blender/editors/space_clip/clip_buttons.c
@@ -259,6 +259,8 @@ typedef struct {
   MovieTrackingTrack *track;
   MovieTrackingMarker *marker;
 
+  /** current frame number */
+  int framenr;
   /** position of marker in pixel coords */
   float marker_pos[2];
   /** position and dimensions of marker pattern in pixel coords */
@@ -286,7 +288,8 @@ static void marker_update_cb(bContext *C, void *arg_cb, void *UNUSED(arg))
     return;
   }
 
-  MovieTrackingMarker *marker = cb->marker;
+  int clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(cb->clip, cb->framenr);
+  MovieTrackingMarker *marker = BKE_tracking_marker_ensure(cb->track, clip_framenr);
   marker->flag = cb->marker_flag;
 
   WM_event_add_notifier(C, NC_MOVIECLIP | NA_EDITED, NULL);
@@ -300,7 +303,9 @@ static void marker_block_handler(bContext *C, void *arg_cb, int event)
 
   BKE_movieclip_get_size(cb->clip, cb->user, &width, &height);
 
-  MovieTrackingMarker *marker = cb->marker;
+  int clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(cb->clip, cb->framenr);
+  MovieTrackingMarker *marker = BKE_tracking_marker_ensure(cb->track, clip_framenr);
+
   if (event == B_MARKER_POS) {
     marker->pos[0] = cb->marker_pos[0] / width;
     marker->pos[1] = cb->marker_pos[1] / height;
@@ -456,6 +461,7 @@ void uiTemplateMarker(uiLayout *layout,
   cb->track = track;
   cb->marker = marker;
   cb->marker_flag = marker->flag;
+  cb->framenr = user->framenr;
 
   if (compact) {
     block = uiLayoutGetBlock(layout);



More information about the Bf-blender-cvs mailing list