[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27356] trunk/blender/source/blender: remove for bad-level-call & some minor changes to make camera switching neater .

Campbell Barton ideasman42 at gmail.com
Tue Mar 9 08:41:06 CET 2010


Revision: 27356
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27356
Author:   campbellbarton
Date:     2010-03-09 08:41:04 +0100 (Tue, 09 Mar 2010)

Log Message:
-----------
remove for bad-level-call & some minor changes to make camera switching neater.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_scene.h
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/scene.c
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/editors/render/render_opengl.c
    trunk/blender/source/blender/editors/screen/screen_edit.c
    trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/blenkernel/BKE_scene.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_scene.h	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/blenkernel/BKE_scene.h	2010-03-09 07:41:04 UTC (rev 27356)
@@ -66,7 +66,8 @@
 
 int next_object(struct Scene *scene, int val, struct Base **base, struct Object **ob);
 struct Object *scene_find_camera(struct Scene *sc);
-struct Object *scene_find_camera_switch(struct Scene *scene); // DURIAN_CAMERA_SWITCH
+struct Object *scene_camera_switch_find(struct Scene *scene); // DURIAN_CAMERA_SWITCH
+int scene_camera_switch_update(struct Scene *scene);
 
 char *scene_find_marker_name(struct Scene *scene, int frame);
 char *scene_find_last_marker_name(struct Scene *scene, int frame);

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-03-09 07:41:04 UTC (rev 27356)
@@ -233,6 +233,10 @@
 struct Sequence *sequencer_add_sound_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
 struct Sequence *sequencer_add_movie_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
 
+/* view3d draw callback, run when not in background view */
+typedef struct ImBuf *(*SequencerDrawView)(struct Scene *, int, int);
+extern SequencerDrawView sequencer_view3d_cb;
+
 /* copy/paste */
 extern ListBase seqbase_clipboard;
 extern int seqbase_clipboard_frame;

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2010-03-09 07:41:04 UTC (rev 27356)
@@ -722,7 +722,7 @@
 }
 
 #ifdef DURIAN_CAMERA_SWITCH
-Object *scene_find_camera_switch(Scene *scene)
+Object *scene_camera_switch_find(Scene *scene)
 {
 	TimeMarker *m;
 	int cfra = scene->r.cfra;
@@ -743,6 +743,18 @@
 }
 #endif
 
+int scene_camera_switch_update(Scene *scene)
+{
+#ifdef DURIAN_CAMERA_SWITCH
+	Object *camera= scene_camera_switch_find(scene);
+	if(camera) {
+		scene->camera= camera;
+		return 1;
+	}
+#endif
+	return 0;
+}
+
 char *scene_find_marker_name(Scene *scene, int frame)
 {
 	ListBase *markers= &scene->markers;

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-03-09 07:41:04 UTC (rev 27356)
@@ -81,7 +81,7 @@
 #define SELECT 1
 ListBase seqbase_clipboard;
 int seqbase_clipboard_frame;
-void *sequencer_view3d_cb= NULL; /* NULL in background mode */
+SequencerDrawView sequencer_view3d_cb= NULL; /* NULL in background mode */
 
 
 void printf_strip(Sequence *seq)
@@ -1940,8 +1940,6 @@
 static TStripElem* do_build_seq_array_recursively(Scene *scene,
 				ListBase *seqbasep, int cfra, int chanshown, int render_size);
 
-extern ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, int width, int height);
-
 static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra,
 			      int build_proxy_run, int render_size)
 {
@@ -2160,16 +2158,12 @@
 
 			seq->scene->r.cfra= frame;
 
-			if(G.background==0 && (seq->flag & SEQ_USE_SCENE_OPENGL) && have_seq==0) {
+			if(sequencer_view3d_cb && (seq->flag & SEQ_USE_SCENE_OPENGL) && have_seq==0) {
 				/* opengl offscreen render */
 
-#ifdef DURIAN_CAMERA_SWITCH
-				Object *camera= scene_find_camera_switch(seq->scene);
-				if(camera)
-					seq->scene->camera= camera;
-#endif
+				scene_camera_switch_update(seq->scene);
 				scene_update_for_newframe(seq->scene, seq->scene->lay);
-				se->ibuf= ED_view3d_draw_offscreen_imbuf_simple(seq->scene, seqrectx, seqrecty); // BAD LEVEL CALL! DONT ALLOW THIS FOR MORE THEN A FEW DAYS, USE A CALLBACK!!! - campell
+				se->ibuf= sequencer_view3d_cb(seq->scene, seqrectx, seqrecty);
 			}
 			else {
 				RenderResult rres;

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2010-03-09 07:41:04 UTC (rev 27356)
@@ -30,28 +30,30 @@
 
 /* ********* exports for space_view3d/ module ********** */
 struct ARegion;
+struct bContext;
+struct BezTriple;
+struct bglMats;
 struct BoundBox;
-struct View3D;
-struct RegionView3D;
-struct ViewContext;
-struct bglMats;
 struct BPoint;
-struct Nurb;
-struct BezTriple;
-struct EditVert;
 struct EditEdge;
 struct EditFace;
+struct EditVert;
 struct ImBuf;
-struct Scene;
-struct bContext;
 struct Main;
+struct Nurb;
+struct Object;
 struct rcti;
+struct RegionView3D;
+struct Scene;
+struct View3D;
+struct ViewContext;
 
+
 /* for derivedmesh drawing callbacks, for view3d_select, .... */
 typedef struct ViewContext {
 	Scene *scene;
-	Object *obact;
-	Object *obedit;
+	struct Object *obact;
+	struct Object *obedit;
 	struct ARegion *ar;
 	struct View3D *v3d;
 	struct RegionView3D *rv3d;

Modified: trunk/blender/source/blender/editors/render/render_opengl.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_opengl.c	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/editors/render/render_opengl.c	2010-03-09 07:41:04 UTC (rev 27356)
@@ -292,10 +292,8 @@
 	if(oglrender->rv3d->persp==RV3D_CAMOB && oglrender->v3d->camera && oglrender->v3d->scenelock) {
 		/* since scene_update_for_newframe() is used rather
 		 * then ED_update_for_newframe() the camera needs to be set */
-		Object *camera= scene_find_camera_switch(scene);
-
-		if(camera)
-			oglrender->v3d->camera= scene->camera= camera;
+		if(scene_camera_switch_update(scene))
+			oglrender->v3d->camera= scene->camera;
 	}
 
 	/* render into offscreen buffer */

Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c	2010-03-09 07:41:04 UTC (rev 27356)
@@ -1715,7 +1715,7 @@
 	Scene *scene= CTX_data_scene(C);
 	
 #ifdef DURIAN_CAMERA_SWITCH
-	void *camera= scene_find_camera_switch(scene);
+	void *camera= scene_camera_switch_find(scene);
 	if(camera && scene->camera != camera) {
 
 		if(camera && scene->camera && (camera != scene->camera)) {

Modified: trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c	2010-03-09 07:41:04 UTC (rev 27356)
@@ -29,36 +29,29 @@
 #include <string.h>
 #include <stdio.h>
 
-#include "DNA_object_types.h"
 #include "DNA_space_types.h"
 #include "DNA_scene_types.h"
-#include "DNA_screen_types.h"
 
 #include "MEM_guardedalloc.h"
 
 #include "BLI_blenlib.h"
 #include "BLI_math.h"
-#include "BLI_rand.h"
 
-#include "BKE_colortools.h"
 #include "BKE_context.h"
 #include "BKE_screen.h"
 #include "BKE_sequencer.h"
+#include "BKE_global.h"
 
 #include "ED_space_api.h"
 #include "ED_screen.h"
+#include "ED_view3d.h" /* only for sequencer view3d drawing callback */
 
-#include "BIF_gl.h"
-
 #include "WM_api.h"
 #include "WM_types.h"
 
-#include "UI_interface.h"
 #include "UI_resources.h"
 #include "UI_view2d.h"
 
-#include "ED_markers.h"
-
 #include "sequencer_intern.h"	// own include
 
 /* ******************** manage regions ********************* */
@@ -540,5 +533,10 @@
 	BLI_addhead(&st->regiontypes, art);
 	
 	BKE_spacetype_register(st);
+
+	/* set the sequencer callback when not in background mode */
+	if(G.background==0) {
+		sequencer_view3d_cb= ED_view3d_draw_offscreen_imbuf_simple;
+	}
 }
 

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2010-03-09 07:09:38 UTC (rev 27355)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2010-03-09 07:41:04 UTC (rev 27356)
@@ -2584,11 +2584,7 @@
 /* main loop: doing sequence + fields + blur + 3d render + compositing */
 static void do_render_all_options(Render *re)
 {
-#ifdef DURIAN_CAMERA_SWITCH
-	Object *camera= scene_find_camera_switch(re->scene);
-	if(camera)
-		re->scene->camera= camera;
-#endif
+	scene_camera_switch_update(re->scene);
 
 	re->i.starttime= PIL_check_seconds_timer();
 





More information about the Bf-blender-cvs mailing list