[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28668] trunk/blender/source/blender: bugfix [#21085] Sequencer file selector for movies is strange

Campbell Barton ideasman42 at gmail.com
Sat May 8 18:36:28 CEST 2010


Revision: 28668
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28668
Author:   campbellbarton
Date:     2010-05-08 18:36:28 +0200 (Sat, 08 May 2010)

Log Message:
-----------
bugfix [#21085] Sequencer file selector for movies is strange
elubie fixed the first part, this fixes the internal data updating while keeping the frame range.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    trunk/blender/source/blender/makesrna/intern/rna_sequencer.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-05-08 15:37:29 UTC (rev 28667)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-05-08 16:36:28 UTC (rev 28668)
@@ -154,7 +154,7 @@
 void calc_sequence(struct Scene *scene, struct Sequence *seq);
 void calc_sequence_disp(struct Scene *scene, struct Sequence *seq);
 void new_tstripdata(struct Sequence *seq);
-void reload_sequence_new_file(struct Scene *scene, struct Sequence * seq);
+void reload_sequence_new_file(struct Scene *scene, struct Sequence * seq, int lock_range);
 void sort_seq(struct Scene *scene);
 void build_seqar_cb(struct ListBase *seqbase, struct Sequence  ***seqar, int *totseq,
 					int (*test_func)(struct Sequence * seq));

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-05-08 15:37:29 UTC (rev 28667)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-05-08 16:36:28 UTC (rev 28668)
@@ -566,9 +566,12 @@
 	}
 }
 
-void reload_sequence_new_file(Scene *scene, Sequence * seq)
+/* note: caller should run calc_sequence(scene, seq) */
+void reload_sequence_new_file(Scene *scene, Sequence * seq, int lock_range)
 {
 	char str[FILE_MAXDIR+FILE_MAXFILE];
+	int prev_startdisp, prev_enddisp;
+	/* note: dont rename the strip, will break animation curves */
 
 	if (!(seq->type == SEQ_MOVIE || seq->type == SEQ_IMAGE ||
 		  seq->type == SEQ_SOUND ||
@@ -576,6 +579,14 @@
 		return;
 	}
 
+	if(lock_range) {
+		/* keep so we dont have to move the actual start and end points (only the data) */
+		calc_sequence_disp(scene, seq);
+		prev_startdisp= seq->startdisp;
+		prev_enddisp= seq->enddisp;
+	}
+
+
 	new_tstripdata(seq);
 
 	if (seq->type != SEQ_SCENE && seq->type != SEQ_META &&
@@ -587,6 +598,7 @@
 	if (seq->type == SEQ_IMAGE) {
 		/* Hack? */
 		size_t olen = MEM_allocN_len(seq->strip->stripdata)/sizeof(struct StripElem);
+
 		seq->len = olen;
 		seq->len -= seq->anim_startofs;
 		seq->len -= seq->anim_endofs;
@@ -621,6 +633,7 @@
 		}
 		seq->strip->len = seq->len;
 	} else if (seq->type == SEQ_SCENE) {
+		/* 'seq->scenenr' should be replaced with something more reliable */
 		Scene * sce = G.main->scene.first;
 		int nr = 1;
 		
@@ -637,9 +650,6 @@
 		} else {
 			sce = seq->scene;
 		}
-
-		BLI_strncpy(seq->name+2, sce->id.name + 2, SEQ_NAME_MAXSTR-2);
-		seqbase_unique_name_recursive(&scene->ed->seqbase, seq);
 		
 		seq->len= seq->scene->r.efra - seq->scene->r.sfra + 1;
 		seq->len -= seq->anim_startofs;
@@ -652,6 +662,12 @@
 
 	free_proxy_seq(seq);
 
+	if(lock_range) {
+		seq_tx_set_final_left(seq, prev_startdisp);
+		seq_tx_set_final_right(seq, prev_enddisp);
+		seq_single_fix(seq);
+	}
+	
 	calc_sequence(scene, seq);
 }
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2010-05-08 15:37:29 UTC (rev 28667)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2010-05-08 16:36:28 UTC (rev 28668)
@@ -946,7 +946,7 @@
 		}
 	}
 	
-	reload_sequence_new_file(scene, seq);
+	reload_sequence_new_file(scene, seq, FALSE);
 	calc_sequence(scene, seq);
 
 	if (!skip_dup) {
@@ -985,8 +985,8 @@
 			seqn->startstill = 0;
 		}
 		
-		reload_sequence_new_file(scene, seqn);
-		calc_sequence(scene, seqn);
+		reload_sequence_new_file(scene, seqn, FALSE);
+		calc_sequence(scene, seq);
 	}
 	return seqn;
 }
@@ -1178,7 +1178,8 @@
 		if(seq->flag & SELECT) {
 			if(seq->type==SEQ_MOVIE) {
 				seq->flag |= SEQ_FILTERY;
-				reload_sequence_new_file(scene, seq);
+				reload_sequence_new_file(scene, seq, FALSE);
+				calc_sequence(scene, seq);
 			}
 
 		}

Modified: trunk/blender/source/blender/makesrna/intern/rna_sequencer.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_sequencer.c	2010-05-08 15:37:29 UTC (rev 28667)
+++ trunk/blender/source/blender/makesrna/intern/rna_sequencer.c	2010-05-08 16:36:28 UTC (rev 28668)
@@ -137,7 +137,7 @@
 
 	seq->anim_startofs = MIN2(value, seq->len + seq->anim_startofs);
 
-	reload_sequence_new_file(scene, seq);
+	reload_sequence_new_file(scene, seq, FALSE);
 	rna_Sequence_frame_change_update(scene, seq);
 }
 
@@ -148,7 +148,7 @@
 
 	seq->anim_endofs = MIN2(value, seq->len + seq->anim_endofs);
 
-	reload_sequence_new_file(scene, seq);
+	reload_sequence_new_file(scene, seq, FALSE);
 	rna_Sequence_frame_change_update(scene, seq);
 }
 
@@ -431,6 +431,14 @@
 	rna_Sequence_update(bmain, scene, ptr);
 }
 
+static void rna_Sequence_filepath_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+	Sequence *seq= (Sequence*)(ptr->data);
+	reload_sequence_new_file(scene, seq, TRUE);
+	calc_sequence(scene, seq);
+	rna_Sequence_update(bmain, scene, ptr);
+}
+
 /* do_versions? */
 static float rna_Sequence_opacity_get(PointerRNA *ptr) {
 	return ((Sequence*)(ptr->data))->blend_opacity / 100.0f;
@@ -1014,7 +1022,7 @@
 	RNA_def_property_ui_text(prop, "File", "");
 	RNA_def_property_string_funcs(prop, "rna_Sequence_filepath_get", "rna_Sequence_filepath_length",
 										"rna_Sequence_filepath_set");
-	RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
+	RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_filepath_update");
 
 	rna_def_filter_video(srna);
 	rna_def_proxy(srna);





More information about the Bf-blender-cvs mailing list