[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