diff options
-rw-r--r-- | source/blender/blenkernel/BKE_tracking.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 11 | ||||
-rw-r--r-- | source/blender/editors/space_clip/tracking_ops.c | 4 |
3 files changed, 10 insertions, 7 deletions
diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h index e55d40ebfe5..973922d4223 100644 --- a/source/blender/blenkernel/BKE_tracking.h +++ b/source/blender/blenkernel/BKE_tracking.h @@ -85,7 +85,7 @@ void BKE_tracking_projection_matrix(struct MovieTracking *tracking, int framenr, /* 2D tracking */ struct MovieTrackingContext *BKE_tracking_context_new(struct MovieClip *clip, struct MovieClipUser *user, - short backwards, short disable_failed); + short backwards, short disable_failed, short sequence); void BKE_tracking_context_free(struct MovieTrackingContext *context); void BKE_tracking_sync(struct MovieTrackingContext *context); void BKE_tracking_sync_user(struct MovieClipUser *user, struct MovieTrackingContext *context); diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index 3543d361ab0..e2b0e823905 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -736,11 +736,11 @@ typedef struct MovieTrackingContext { MovieTrackingSettings settings; TracksMap *tracks_map; - short backwards, disable_failed; + short backwards, disable_failed, sequence; int sync_frame; } MovieTrackingContext; -MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *user, short backwards, short disable_failed) +MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *user, short backwards, short disable_failed, short sequence) { MovieTrackingContext *context= MEM_callocN(sizeof(MovieTrackingContext), "trackingContext"); MovieTracking *tracking= &clip->tracking; @@ -753,6 +753,7 @@ MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *u context->disable_failed= disable_failed; context->sync_frame= user->framenr; context->first_time= 1; + context->sequence= sequence; /* count */ track= tracking->tracks.first; @@ -831,7 +832,8 @@ MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *u context->clip= clip; context->user= *user; - BLI_begin_threaded_malloc(); + if(!sequence) + BLI_begin_threaded_malloc(); return context; } @@ -859,7 +861,8 @@ static void track_context_free(void *customdata) void BKE_tracking_context_free(MovieTrackingContext *context) { - BLI_end_threaded_malloc(); + if(!context->sequence) + BLI_end_threaded_malloc(); tracks_map_free(context->tracks_map, track_context_free); diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c index 3d004ab73da..b0e7f1b4def 100644 --- a/source/blender/editors/space_clip/tracking_ops.c +++ b/source/blender/editors/space_clip/tracking_ops.c @@ -1302,7 +1302,7 @@ static int track_markers_initjob(bContext *C, TrackMarkersJob *tmj, int backward else if(settings->speed==TRACKING_SPEED_DOUBLE) tmj->delay/= 2; } - tmj->context= BKE_tracking_context_new(clip, &sc->user, backwards, 1); + tmj->context= BKE_tracking_context_new(clip, &sc->user, backwards, 1, 1); clip->tracking_context= tmj->context; @@ -1413,7 +1413,7 @@ static int track_markers_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* do not disable tracks due to threshold when tracking frame-by-frame */ - context= BKE_tracking_context_new(clip, &sc->user, backwards, sequence); + context= BKE_tracking_context_new(clip, &sc->user, backwards, sequence, sequence); while(framenr != efra) { if(!BKE_tracking_next(context)) |