[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49878] trunk/blender/source/blender: draw ugly red bands on a sequence strip when its data cant be found (mask, clip, scene, sound)

Campbell Barton ideasman42 at gmail.com
Mon Aug 13 19:36:29 CEST 2012


Revision: 49878
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49878
Author:   campbellbarton
Date:     2012-08-13 17:36:29 +0000 (Mon, 13 Aug 2012)
Log Message:
-----------
draw ugly red bands on a sequence strip when its data cant be found (mask, clip, scene, sound)

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_draw.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2012-08-13 17:25:03 UTC (rev 49877)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2012-08-13 17:36:29 UTC (rev 49878)
@@ -297,6 +297,7 @@
 
 void BKE_seqence_base_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq);
 void BKE_sequence_base_dupli_recursive(struct Scene *scene, struct Scene *scene_to, ListBase *nseqbase, ListBase *seqbase, int dupe_flag);
+int  BKE_seqence_is_valid_check(struct Sequence *seq);
 
 void BKE_sequencer_clear_scene_in_allseqs(struct Main *bmain, struct Scene *sce);
 

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2012-08-13 17:25:03 UTC (rev 49877)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2012-08-13 17:36:29 UTC (rev 49878)
@@ -4042,3 +4042,21 @@
 		}
 	}
 }
+
+/* called on draw, needs to be fast,
+ * we could cache and use a flag if we want to make checks for file paths resolving for eg. */
+int BKE_seqence_is_valid_check(Sequence *seq)
+{
+	switch (seq->type) {
+		case SEQ_TYPE_MASK:
+			return (seq->mask != NULL);
+		case SEQ_TYPE_MOVIECLIP:
+			return (seq->clip != NULL);
+		case SEQ_TYPE_SCENE:
+			return (seq->scene != NULL);
+		case SEQ_TYPE_SOUND_RAM:
+			return (seq->sound != NULL);
+	}
+
+	return TRUE;
+}

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2012-08-13 17:25:03 UTC (rev 49877)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2012-08-13 17:36:29 UTC (rev 49878)
@@ -700,7 +700,9 @@
 	
 	/* draw the main strip body */
 	if (is_single_image) {  /* single image */
-		draw_shadedstrip(seq, background_col, BKE_sequence_tx_get_final_left(seq, 0), y1, BKE_sequence_tx_get_final_right(seq, 0), y2);
+		draw_shadedstrip(seq, background_col,
+		                 BKE_sequence_tx_get_final_left(seq, 0), y1,
+		                 BKE_sequence_tx_get_final_right(seq, 0), y2);
 	}
 	else {  /* normal operation */
 		draw_shadedstrip(seq, background_col, x1, y1, x2, y2);
@@ -741,6 +743,17 @@
 		glDisable(GL_BLEND);
 	}
 
+	if (!BKE_seqence_is_valid_check(seq)) {
+		glEnable(GL_POLYGON_STIPPLE);
+
+		/* panic! */
+		glColor4ub(255, 0, 0, 255);
+		glPolygonStipple(stipple_diag_stripes_pos);
+		glRectf(x1, y1, x2, y2);
+
+		glDisable(GL_POLYGON_STIPPLE);
+	}
+
 	get_seq_color3ubv(scene, seq, col);
 	if (G.moving && (seq->flag & SELECT)) {
 		if (seq->flag & SEQ_OVERLAP) {




More information about the Bf-blender-cvs mailing list