[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40603] branches/soc-2011-tomato/source/ blender/editors/space_clip/tracking_ops.c: Camera tracking integration

Sergey Sharybin g.ulairi at gmail.com
Tue Sep 27 12:28:18 CEST 2011


Revision: 40603
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40603
Author:   nazgul
Date:     2011-09-27 10:28:17 +0000 (Tue, 27 Sep 2011)
Log Message:
-----------
Camera tracking integration
===========================

Fixed incorrect behavior of clean-up operator in special cases.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-09-27 10:04:29 UTC (rev 40602)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-09-27 10:28:17 UTC (rev 40603)
@@ -2686,37 +2686,40 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
-/********************** select un-clean operator *********************/
+/********************** clean tracks operator *********************/
 
 static int is_track_clean(MovieTrackingTrack *track, int frames, int del)
 {
 	int ok= 1, a, prev= -1, count= 0;
-	MovieTrackingMarker *new_markers= NULL;
+	MovieTrackingMarker *markers= track->markers, *new_markers= NULL;
 	int start_disabled= 0;
+	int markersnr= track->markersnr;
 
 	if(del)
-		new_markers= MEM_callocN(track->markersnr*sizeof(MovieTrackingMarker), "track cleaned markers");
+		new_markers= MEM_callocN(markersnr*sizeof(MovieTrackingMarker), "track cleaned markers");
 
-	for(a= 0; a<track->markersnr; a++) {
+	for(a= 0; a<markersnr; a++) {
 		int end= 0;
 
 		if(prev==-1) {
-			if((track->markers[a].flag&MARKER_DISABLED)==0)
+			if((markers[a].flag&MARKER_DISABLED)==0)
 				prev= a;
+			else
+				start_disabled= 1;
 		}
 
 		if(prev >= 0) {
-			end=  a == track->markersnr-1;
-			end|= (a < track->markersnr-1) && (track->markers[a].framenr != track->markers[a+1].framenr-1 ||
-			                                   track->markers[a].flag&MARKER_DISABLED);
+			end=  a == markersnr-1;
+			end|= (a < markersnr-1) && (markers[a].framenr != markers[a+1].framenr-1 ||
+			                            markers[a].flag&MARKER_DISABLED);
 		}
 
 		if(end) {
 			int segok= 1, len= 0;
 
-			if(a != prev && track->markers[a].framenr != track->markers[a-1].framenr+1)
+			if(a != prev && markers[a].framenr != markers[a-1].framenr+1)
 				len= a-prev;
-			else if(track->markers[a].flag&MARKER_DISABLED)
+			else if(markers[a].flag&MARKER_DISABLED)
 				len= a-prev;
 			else len= a-prev+1;
 
@@ -2734,12 +2737,12 @@
 				if(segok) {
 					int t= len;
 
-					if(track->markers[a].flag&MARKER_DISABLED)
+					if(markers[a].flag&MARKER_DISABLED)
 						t++;
 
 					/* place disabled marker in front of current segment */
 					if(start_disabled) {
-						memcpy(new_markers+count, track->markers+prev, sizeof(MovieTrackingMarker));
+						memcpy(new_markers+count, markers+prev, sizeof(MovieTrackingMarker));
 						new_markers[count].framenr--;
 						new_markers[count].flag|= MARKER_DISABLED;
 
@@ -2747,18 +2750,17 @@
 						start_disabled= 0;
 					}
 
-					memcpy(new_markers+count, track->markers+prev, t*sizeof(MovieTrackingMarker));
+					memcpy(new_markers+count, markers+prev, t*sizeof(MovieTrackingMarker));
 					count+= t;
 				}
-				else if(track->markers[a].flag&MARKER_DISABLED) {
+				else if(markers[a].flag&MARKER_DISABLED) {
 					/* current segment which would be deleted was finished by disabled marker,
 					   so next segment should be started from disabled marker */
 					start_disabled= 1;
 				}
 			}
 
-			if(track->markers[a].flag&MARKER_DISABLED) prev= -1;
-			else prev= a;
+			prev= -1;
 		}
 	}
 




More information about the Bf-blender-cvs mailing list