2.5: more G.main changes.
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Sun, 1 Aug 2010 12:57:01 +0000 (12:57 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Sun, 1 Aug 2010 12:57:01 +0000 (12:57 +0000)
source/blender/blenkernel/BKE_scene.h
source/blender/blenkernel/intern/blender.c
source/blender/blenkernel/intern/scene.c
source/blender/collada/DocumentImporter.cpp
source/blender/editors/screen/screen_edit.c
source/blender/editors/space_view3d/view3d_view.c
source/blender/render/intern/source/pipeline.c
source/creator/creator.c

index 878fca8..96ef8d4 100644 (file)
 #ifndef BKE_SCENE_H
 #define BKE_SCENE_H
 
+struct AviCodecData;
+struct Base;
 struct bglMats;
-struct Scene;
+struct Main;
 struct Object;
-struct Base;
-struct Text;
-struct AviCodecData;
 struct QuicktimeCodecData;
 struct RenderData;
+struct Scene;
+struct Text;
 struct Text;
-struct Main;
 
 #define SCE_COPY_EMPTY         0
 #define SCE_COPY_LINK_OB       1
@@ -57,8 +57,8 @@ void free_scene(struct Scene *sce);
 struct Scene *add_scene(char *name);
 struct Base *object_in_scene(struct Object *ob, struct Scene *sce);
 
-void set_scene_bg(struct Scene *sce);
-struct Scene *set_scene_name(char *name);
+void set_scene_bg(struct Main *bmain, struct Scene *sce);
+struct Scene *set_scene_name(struct Main *bmain, char *name);
 
 struct Scene *copy_scene(struct Main *bmain, struct Scene *sce, int type);
 void unlink_scene(struct Main *bmain, struct Scene *sce, struct Scene *newsce);
@@ -78,7 +78,7 @@ void scene_deselect_all(struct Scene *sce);
 void scene_select_base(struct Scene *sce, struct Base *selbase);
 
 /* checks for cycle, returns 1 if it's all OK */
-int scene_check_setscene(struct Scene *sce);
+int scene_check_setscene(struct Main *bmain, struct Scene *sce);
 
 float BKE_curframe(struct Scene *scene);
 
index 64d07db..1a1f3a7 100644 (file)
@@ -313,7 +313,7 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, char *filename)
        BLI_strncpy(G.main->name, filename, FILE_MAX); /* is guaranteed current file */
 
        /* baseflags, groups, make depsgraph, etc */
-       set_scene_bg(CTX_data_scene(C));
+       set_scene_bg(G.main, CTX_data_scene(C));
        
        MEM_freeN(bfd);
 }
index 811f8a8..48cef7e 100644 (file)
@@ -501,7 +501,7 @@ Base *object_in_scene(Object *ob, Scene *sce)
        return NULL;
 }
 
-void set_scene_bg(Scene *scene)
+void set_scene_bg(Main *bmain, Scene *scene)
 {
        Scene *sce;
        Base *base;
@@ -511,18 +511,18 @@ void set_scene_bg(Scene *scene)
        int flag;
        
        /* check for cyclic sets, for reading old files but also for definite security (py?) */
-       scene_check_setscene(scene);
+       scene_check_setscene(bmain, scene);
        
        /* can happen when switching modes in other scenes */
        if(scene->obedit && !(scene->obedit->mode & OB_MODE_EDIT))
                scene->obedit= NULL;
 
        /* deselect objects (for dataselect) */
-       for(ob= G.main->object.first; ob; ob= ob->id.next)
+       for(ob= bmain->object.first; ob; ob= ob->id.next)
                ob->flag &= ~(SELECT|OB_FROMGROUP);
 
        /* group flags again */
-       for(group= G.main->group.first; group; group= group->id.next) {
+       for(group= bmain->group.first; group; group= group->id.next) {
                go= group->gobject.first;
                while(go) {
                        if(go->ob) go->ob->flag |= OB_FROMGROUP;
@@ -531,12 +531,12 @@ void set_scene_bg(Scene *scene)
        }
 
        /* sort baselist */
-       DAG_scene_sort(G.main, scene);
+       DAG_scene_sort(bmain, scene);
        
        /* ensure dags are built for sets */
        for(sce= scene->set; sce; sce= sce->set)
                if(sce->theDag==NULL)
-                       DAG_scene_sort(G.main, sce);
+                       DAG_scene_sort(bmain, sce);
 
        /* copy layers and flags from bases to objects */
        for(base= scene->base.first; base; base= base->next) {
@@ -558,11 +558,11 @@ void set_scene_bg(Scene *scene)
 }
 
 /* called from creator.c */
-Scene *set_scene_name(char *name)
+Scene *set_scene_name(Main *bmain, char *name)
 {
        Scene *sce= (Scene *)find_id("SC", name);
        if(sce) {
-               set_scene_bg(sce);
+               set_scene_bg(bmain, sce);
                printf("Scene switch: '%s' in file: '%s'\n", name, G.sce);
                return sce;
        }
@@ -871,7 +871,7 @@ void scene_select_base(Scene *sce, Base *selbase)
 }
 
 /* checks for cycle, returns 1 if it's all OK */
-int scene_check_setscene(Scene *sce)
+int scene_check_setscene(Main *bmain, Scene *sce)
 {
        Scene *scene;
        int a, totscene;
@@ -879,7 +879,7 @@ int scene_check_setscene(Scene *sce)
        if(sce->set==NULL) return 1;
        
        totscene= 0;
-       for(scene= G.main->scene.first; scene; scene= scene->id.next)
+       for(scene= bmain->scene.first; scene; scene= scene->id.next)
                totscene++;
        
        for(a=0, scene=sce; scene->set; scene=scene->set, a++) {
index a415b90..2f1568f 100644 (file)
@@ -216,6 +216,7 @@ static int set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space
                return false;
 
        Object workob;
+       Main *bmain = CTX_data_main(C);
        Scene *sce = CTX_data_scene(C);
 
        ob->parent = par;
@@ -243,8 +244,8 @@ static int set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space
        ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA;
        par->recalc |= OB_RECALC_OB;
 
-       DAG_scene_sort(sce);
-       DAG_ids_flush_update(0);
+       DAG_scene_sort(bmain, sce);
+       DAG_ids_flush_update(bmain, 0);
        WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
 
        return true;
@@ -611,6 +612,7 @@ private:
                void link_armature(bContext *C, Object *ob, std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid,
                                                   TransformReader *tm)
                {
+                       Main *bmain = CTX_data_main(C);
                        Scene *scene = CTX_data_scene(C);
 
                        ModifierData *md = ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Armature);
@@ -630,8 +632,8 @@ private:
 
                        ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA;
 
-                       DAG_scene_sort(scene);
-                       DAG_ids_flush_update(0);
+                       DAG_scene_sort(bmain, scene);
+                       DAG_ids_flush_update(bmain, 0);
                        WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
 #endif
 
@@ -3132,7 +3134,7 @@ public:
                        where_is_object(scene, job);
 
                        // after parenting and layer change
-                       DAG_scene_sort(scene);
+                       DAG_scene_sort(CTX_data_main(C), scene);
 
                        joint_objects[node->getUniqueId()] = job;
                }
index 78ec4fe..8cee4a2 100644 (file)
@@ -1426,7 +1426,7 @@ void ED_screen_set_scene(bContext *C, Scene *scene)
        }
        
        CTX_data_scene_set(C, scene);
-       set_scene_bg(scene);
+       set_scene_bg(CTX_data_main(C), scene);
        
        ED_update_for_newframe(C, 1);
        
index 4de6a27..5e00d17 100644 (file)
@@ -1805,7 +1805,7 @@ static int game_engine_exec(bContext *C, wmOperator *op)
        RestoreState(C);
 
        //XXX restore_all_scene_cfra(scene_cfra_store);
-       set_scene_bg(startscene);
+       set_scene_bg(CTX_data_main(C), startscene);
        //XXX scene_update_for_newframe(bmain, scene, scene->lay);
        
        ED_area_tag_redraw(CTX_wm_area(C));
index 0db1bdc..dbb117d 100644 (file)
@@ -2146,7 +2146,7 @@ static void render_scene(Render *re, Scene *sce, int cfra)
        resc->lay= sce->lay;
        
        /* ensure scene has depsgraph, base flags etc OK */
-       set_scene_bg(sce);
+       set_scene_bg(re->main, sce);
 
        /* copy callbacks */
        resc->display_draw= re->display_draw;
index 132c427..415f106 100644 (file)
@@ -734,7 +734,7 @@ static int set_scene(int argc, char **argv, void *data)
 {
        if(argc > 1) {
                bContext *C= data;
-               Scene *sce= set_scene_name(argv[1]);
+               Scene *sce= set_scene_name(CTX_data_main(C), argv[1]);
                if(sce) {
                        CTX_data_scene_set(C, sce);
                }