Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2011-12-13 20:37:52 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2011-12-13 20:37:52 +0400
commit6c90a192c60d836b314c24a15547de6acee6aac7 (patch)
tree7b1961c8e32e7018cd0d04ab3d2e57faf8fd0762
parent50d05a2a584d13883568fa9b79922e87cc6b9359 (diff)
Do not switch to safe malloc if tracking sequence
Malloc is getting to be safe on sequence tracking by the jobs system, so no additional set up are necessary. This hopefully fixes crash on OSX with OpenMP enabled when compiling by older gcc
-rw-r--r--source/blender/blenkernel/BKE_tracking.h2
-rw-r--r--source/blender/blenkernel/intern/tracking.c11
-rw-r--r--source/blender/editors/space_clip/tracking_ops.c4
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))