[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50743] trunk/blender/source/blender/ blenkernel/intern/tracking.c: Tracking: fixed crash when reference frame fails to be loaded
Sergey Sharybin
sergey.vfx at gmail.com
Wed Sep 19 14:43:32 CEST 2012
Revision: 50743
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50743
Author: nazgul
Date: 2012-09-19 12:43:32 +0000 (Wed, 19 Sep 2012)
Log Message:
-----------
Tracking: fixed crash when reference frame fails to be loaded
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/tracking.c
Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c 2012-09-19 12:11:28 UTC (rev 50742)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c 2012-09-19 12:43:32 UTC (rev 50743)
@@ -2281,9 +2281,9 @@
return ibuf;
}
-static void track_context_update_reference(MovieTrackingContext *context, TrackContext *track_context,
- MovieTrackingTrack *track, MovieTrackingMarker *marker, int curfra,
- int frame_width, int frame_height)
+static int track_context_update_reference(MovieTrackingContext *context, TrackContext *track_context,
+ MovieTrackingTrack *track, MovieTrackingMarker *marker, int curfra,
+ int frame_width, int frame_height)
{
MovieTrackingMarker *marker_keyed = NULL;
ImBuf *reference_ibuf = NULL;
@@ -2291,6 +2291,10 @@
/* calculate patch for keyframed position */
reference_ibuf = tracking_context_get_reference_ibuf(context, track, marker, curfra, &marker_keyed);
+
+ if (!reference_ibuf)
+ return FALSE;
+
track_context->marker = *marker_keyed;
if (track_context->search_area) {
@@ -2309,6 +2313,8 @@
}
IMB_freeImBuf(reference_ibuf);
+
+ return TRUE;
}
static void tracking_configure_tracker(TrackContext *track_context, MovieTrackingTrack *track,
@@ -2473,8 +2479,12 @@
float *patch_new;
if (need_readjust) {
- track_context_update_reference(context, track_context, track, marker,
- curfra, frame_width, frame_height);
+ if (track_context_update_reference(context, track_context, track, marker,
+ curfra, frame_width, frame_height) == FALSE)
+ {
+ /* happens when reference frame fails to be loaded */
+ continue;
+ }
}
/* for now track to the same search area dimension as marker has got for current frame
More information about the Bf-blender-cvs
mailing list