[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44149] branches/soc-2011-tomato/source/ blender/blenkernel/intern/tracking.c: Tomato: fixed issue when track used for rotation stabilization points to a freed memory after re-tracking this track .

Sergey Sharybin sergey.vfx at gmail.com
Thu Feb 16 14:15:02 CET 2012


Revision: 44149
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44149
Author:   nazgul
Date:     2012-02-16 13:15:01 +0000 (Thu, 16 Feb 2012)
Log Message:
-----------
Tomato: fixed issue when track used for rotation stabilization points to a freed memory after re-tracking this track.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2012-02-16 13:14:49 UTC (rev 44148)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2012-02-16 13:15:01 UTC (rev 44149)
@@ -726,6 +726,7 @@
 {
 	MovieTrackingTrack *track;
 	MovieTrackingTrack *act_track= BKE_tracking_active_track(tracking);
+	MovieTrackingTrack *rot_track= tracking->stabilization.rot_track;
 	ListBase tracks= {NULL, NULL}, new_tracks= {NULL, NULL};
 	ListBase *old_tracks;
 	int a;
@@ -747,7 +748,7 @@
 	   this is needed to keep names in unique state and it's faster to change names
 	   of currently operating tracks (if needed) */
 	for(a= 0; a<map->num_tracks; a++) {
-		int replace_sel= 0;
+		int replace_sel= 0, replace_rot= 0;
 		MovieTrackingTrack *new_track, *old;
 
 		track= &map->tracks[a];
@@ -766,8 +767,10 @@
 
 			/* original track was found, re-use flags and remove this track */
 			if(cur) {
-				if(act_track)
+				if(cur==act_track)
 					replace_sel= 1;
+				if(cur==rot_track)
+					replace_rot= 1;
 
 				track->flag= cur->flag;
 				track->pat_flag= cur->pat_flag;
@@ -786,6 +789,9 @@
 		if(replace_sel)		/* update current selection in clip */
 			tracking->act_track= new_track;
 
+		if(replace_rot)		/* update track used for rotation stabilization */
+			tracking->stabilization.rot_track= new_track;
+
 		BLI_addtail(&tracks, new_track);
 	}
 




More information about the Bf-blender-cvs mailing list