Commit: 4c6789b2371a681cd40feac74f5b623bcf721593
Author: Julian Eisel
Date:   Tue Jul 26 23:35:25 2016 +0200
Branches: temp_localview_split
https://developer.blender.org/rB4c6789b2371a681cd40feac74f5b623bcf721593

Initial commit for splitting off local-view data from layer visibility

Mostly replacing ugly nested View3D and RegionView3D pointers for now. Actual 
bitfield splitting comes next.

===================================================================

M       source/blender/blenkernel/intern/screen.c
M       source/blender/blenloader/intern/readfile.c
M       source/blender/blenloader/intern/writefile.c
M       source/blender/editors/mesh/editmesh_tools.c
M       source/blender/editors/object/object_add.c
M       source/blender/editors/object/object_relations.c
M       source/blender/editors/render/render_internal.c
M       source/blender/editors/screen/screen_ops.c
M       source/blender/editors/space_view3d/space_view3d.c
M       source/blender/editors/space_view3d/view3d_draw.c
M       source/blender/editors/space_view3d/view3d_edit.c
M       source/blender/editors/space_view3d/view3d_header.c
M       source/blender/editors/space_view3d/view3d_view.c
M       source/blender/makesdna/DNA_object_types.h
M       source/blender/makesdna/DNA_view3d_types.h

===================================================================

diff --git a/source/blender/blenkernel/intern/screen.c 
b/source/blender/blenkernel/intern/screen.c
index 857bd54..5166123 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -511,7 +511,7 @@ ScrArea *BKE_screen_find_area_xy(bScreen *sc, const int 
spacetype, int x, int y)
 unsigned int BKE_screen_view3d_layer_active_ex(const View3D *v3d, const Scene 
*scene, bool use_localvd)
 {
        unsigned int lay;
-       if ((v3d == NULL) || (v3d->scenelock && !v3d->localvd)) {
+       if ((v3d == NULL) || (v3d->scenelock && !v3d->localviewd)) {
                lay = scene->layact;
        }
        else {
@@ -519,7 +519,7 @@ unsigned int BKE_screen_view3d_layer_active_ex(const View3D 
*v3d, const Scene *s
        }
 
        if (use_localvd) {
-               if (v3d && v3d->localvd) {
+               if (v3d && v3d->localviewd) {
                        lay |= v3d->lay;
                }
        }
@@ -552,7 +552,7 @@ void BKE_screen_view3d_sync(View3D *v3d, struct Scene 
*scene)
 {
        int bit;
 
-       if (v3d->scenelock && v3d->localvd == NULL) {
+       if (v3d->scenelock && v3d->localviewd == NULL) {
                v3d->lay = scene->lay;
                v3d->camera = scene->camera;
 
diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index 4ef30fe..f538087 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6245,8 +6245,8 @@ static void lib_link_screen(FileData *fd, Main *main)
                                                        bgpic->ima = 
newlibadr_us(fd, sc->id.lib, bgpic->ima);
                                                        bgpic->clip = 
newlibadr_us(fd, sc->id.lib, bgpic->clip);
                                                }
-                                               if (v3d->localvd) {
-                                                       v3d->localvd->camera = 
newlibadr(fd, sc->id.lib, v3d->localvd->camera);
+                                               if (v3d->localviewd) {
+                                                       v3d->localviewd->camera 
= newlibadr(fd, sc->id.lib, v3d->localviewd->camera);
                                                }
                                        }
                                        else if (sl->spacetype == SPACE_IPO) {
@@ -6562,11 +6562,11 @@ void blo_lib_link_screen_restore(Main *newmain, bScreen 
*curscreen, Scene *cursc
                                                        id_us_plus((ID 
*)bgpic->clip);
                                                }
                                        }
-                                       if (v3d->localvd) {
+                                       if (v3d->localviewd) {
                                                /*Base *base;*/
-                                               
-                                               v3d->localvd->camera = 
sc->scene->camera;
-                                               
+
+                                               v3d->localviewd->camera = 
sc->scene->camera;
+
                                                /* localview can become invalid 
during undo/redo steps, so we exit it when no could be found */
 #if 0                                  /* XXX  regionlocalview ? */
                                                for (base= 
sc->scene->base.first; base; base= base->next) {
@@ -6829,7 +6829,7 @@ static void direct_link_region(FileData *fd, ARegion *ar, 
int spacetype)
                        if (spacetype == SPACE_VIEW3D) {
                                RegionView3D *rv3d = ar->regiondata;
 
-                               rv3d->localvd = newdataadr(fd, rv3d->localvd);
+                               rv3d->localviewd = newdataadr(fd, 
rv3d->localviewd);
                                rv3d->clipbb = newdataadr(fd, rv3d->clipbb);
 
                                rv3d->depths = NULL;
@@ -6984,7 +6984,7 @@ static bool direct_link_screen(FileData *fd, bScreen *sc)
                                        v3d->gpd = newdataadr(fd, v3d->gpd);
                                        direct_link_gpencil(fd, v3d->gpd);
                                }
-                               v3d->localvd = newdataadr(fd, v3d->localvd);
+                               v3d->localviewd = newdataadr(fd, 
v3d->localviewd);
                                BLI_listbase_clear(&v3d->afterdraw_transp);
                                BLI_listbase_clear(&v3d->afterdraw_xray);
                                BLI_listbase_clear(&v3d->afterdraw_xraytransp);
diff --git a/source/blender/blenloader/intern/writefile.c 
b/source/blender/blenloader/intern/writefile.c
index 88f1c4d..ec342ee 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -2898,8 +2898,8 @@ static void write_region(WriteData *wd, ARegion *ar, int 
spacetype)
                                        RegionView3D *rv3d = ar->regiondata;
                                        writestruct(wd, DATA, RegionView3D, 1, 
rv3d);
 
-                                       if (rv3d->localvd) {
-                                               writestruct(wd, DATA, 
RegionView3D, 1, rv3d->localvd);
+                                       if (rv3d->localviewd) {
+                                               writestruct(wd, DATA, 
LocalViewRegionData, 1, rv3d->localviewd);
                                        }
                                        if (rv3d->clipbb) {
                                                writestruct(wd, DATA, BoundBox, 
1, rv3d->clipbb);
@@ -3034,8 +3034,8 @@ static void write_screens(WriteData *wd, ListBase 
*scrbase)
                                        for (bgpic = v3d->bgpicbase.first; 
bgpic; bgpic = bgpic->next) {
                                                writestruct(wd, DATA, BGpic, 1, 
bgpic);
                                        }
-                                       if (v3d->localvd) {
-                                               writestruct(wd, DATA, View3D, 
1, v3d->localvd);
+                                       if (v3d->localviewd) {
+                                               writestruct(wd, DATA, 
LocalViewAreaData, 1, v3d->localviewd); /* TODO */
                                        }
 
                                        if (v3d->fx_settings.ssao) {
diff --git a/source/blender/editors/mesh/editmesh_tools.c 
b/source/blender/editors/mesh/editmesh_tools.c
index 3a7a8fb..c27d540 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -4705,7 +4705,7 @@ static void sort_bmelem_flag(Scene *scene, Object *ob,
                float mat[4][4];
                float fact = reverse ? -1.0 : 1.0;
 
-               if (v3d && v3d->localvd)
+               if (v3d && v3d->localviewd)
                        copy_v3_v3(cur, v3d->cursor);
                else
                        copy_v3_v3(cur, scene->cursor);
diff --git a/source/blender/editors/object/object_add.c 
b/source/blender/editors/object/object_add.c
index cc62821..98a69a2 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -344,7 +344,7 @@ bool ED_object_add_generic_get_opts(bContext *C, wmOperator 
*op, const char view
 
                /* in local view we additionally add local view layers,
                 * not part of operator properties */
-               if (v3d && v3d->localvd)
+               if (v3d && v3d->localviewd)
                        *layer |= v3d->lay;
        }
 
diff --git a/source/blender/editors/object/object_relations.c 
b/source/blender/editors/object/object_relations.c
index 6b16e19..b283916 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1337,7 +1337,7 @@ static unsigned int move_to_layer_init(bContext *C, 
wmOperator *op)
 static int move_to_layer_invoke(bContext *C, wmOperator *op, const wmEvent 
*event)
 {
        View3D *v3d = CTX_wm_view3d(C);
-       if (v3d && v3d->localvd) {
+       if (v3d && v3d->localviewd) {
                return WM_operator_confirm_message(C, op, "Move out of Local 
View");
        }
        else {
@@ -1359,7 +1359,7 @@ static int move_to_layer_exec(bContext *C, wmOperator *op)
 
        if (lay == 0) return OPERATOR_CANCELLED;
 
-       if (v3d && v3d->localvd) {
+       if (v3d && v3d->localviewd) {
                /* now we can move out of localview. */
                /* note: layers are set in bases, library objects work for this 
*/
                CTX_DATA_BEGIN (C, Base *, base, selected_bases)
diff --git a/source/blender/editors/render/render_internal.c 
b/source/blender/editors/render/render_internal.c
index 1203889..91414aa 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -921,8 +921,8 @@ static int screen_render_invoke(bContext *C, wmOperator 
*op, const wmEvent *even
                else if (camera_override && camera_override != scene->camera)
                        rj->v3d_override = true;
 
-               if (v3d->localvd)
-                       rj->lay_override |= v3d->localvd->lay;
+//             if (v3d->localviewd)
+//                     rj->lay_override |= v3d->localvd->lay; /* TODO */
        }
 
        /* Lock the user interface depending on render settings. */
diff --git a/source/blender/editors/screen/screen_ops.c 
b/source/blender/editors/screen/screen_ops.c
index 6dbb5db..636be2f 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -2995,10 +2995,10 @@ static void SCREEN_OT_redo_last(wmOperatorType *ot)
 
 static void view3d_localview_update_rv3d(struct RegionView3D *rv3d)
 {
-       if (rv3d->localvd) {
-               rv3d->localvd->view = rv3d->view;
-               rv3d->localvd->persp = rv3d->persp;
-               copy_qt_qt(rv3d->localvd->viewquat, rv3d->viewquat);
+       if (rv3d->localviewd) {
+               rv3d->localviewd->view = rv3d->view;
+               rv3d->localviewd->persp = rv3d->persp;
+               copy_qt_qt(rv3d->localviewd->viewquat, rv3d->viewquat);
        }
 }
 
diff --git a/source/blender/editors/space_view3d/space_view3d.c 
b/source/blender/editors/space_view3d/space_view3d.c
index 96dda65..b934ea4 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -416,7 +416,8 @@ static void view3d_free(SpaceLink *sl)
        }
        BLI_freelistN(&vd->bgpicbase);
 
-       if (vd->localvd) MEM_freeN(vd->localvd);
+       if (vd->localviewd)
+               MEM_freeN(vd->localviewd);
        
        if (vd->properties_storage) MEM_freeN(vd->properties_storage);
        
@@ -449,10 +450,9 @@ static SpaceLink *view3d_duplicate(SpaceLink *sl)
        
        /* clear or remove stuff from old */
 
-       if (v3dn->localvd) {
-               v3dn->localvd = NULL;
+       if (v3dn->localviewd) {
+               v3dn->localviewd = NULL;
                v3dn->properties_storage = NULL;
-               v3dn->lay = v3do->localvd->lay & 0xFFFFFF;
        }
 
        if (v3dn->drawtype == OB_RENDER)
@@ -720,8 +720,10 @@ static void view3d_main_region_free(ARegion *ar)
        RegionView3D *rv3d = ar->regiondata;
        
        if (rv3d) {
-               if (rv3d->localvd) MEM_freeN(rv3d->localvd);
-               if (rv3d->clipbb) MEM_freeN(rv3d->clipbb);
+               if (rv3d->localviewd)
+                       MEM_freeN(rv3d->localviewd);
+               if (rv3d->clipbb)
+                       MEM_freeN(rv3d->clipbb);
 
                if (rv3d->render_engine)
                        RE_engine_free(rv3d->render_engine);
@@ -752,8 +754,8 @@ static void *view3d_main_region_duplicate(void *poin)
                RegionView3D *rv3d = poin, *new;
        
                new = MEM_dupallocN(rv3d);
-               if (rv3d->localvd)
-                       new->localvd = MEM_dupallocN(rv3d->localvd);
+               if (rv3d->localviewd)
+                       new->localviewd = MEM_dupallocN(rv3d->localviewd);
                if (rv3d->clipbb)
                        new->clipbb = MEM_dupallocN(rv3d->clipbb);
                
@@ -1402,61 +1404,60 @@ static int view3d_context(const bContext *C, const char 
*member, bContextDataRes
 
 static void view3d_id_remap(ScrArea *sa, SpaceLink *slink, ID *old_id, ID 
*new_id)
 {
-       View3D *v3d;
-       ARegion *ar;
-       bool is_local = false;
+       View3D *v3d = (View3D *)slink;
+       bool has_localview = v3d->localviewd != NULL;
 
        if (!ELEM(GS(old_id->name), ID_OB, ID_MA, ID_IM, ID_MC)) {
                return;
        }
 
-       for (v3d = (View3D *)slink; v3d; v3d = v3d->localvd, is_local = true) {
-               if ((ID *)v3d->camera == old_id) {
-                       v3d->camera = (Object *)new_id;
-                       if (!new_id) {
-                               for (ar = sa->regionbase.first; ar; ar = 
ar->next) {
-                                       if (ar->regiontype == RGN_TYPE_WINDOW) {
-                                               RegionView3D *rv3d = is_local ? 
((RegionView3D *)ar->regiondata)->localvd : ar->regiondata;
-                                               if (rv3d && (rv3d->persp == 
RV3D_CAMOB)) {
-                                                       rv3d->persp = 
RV3D_PERSP;
+       if ((ID *)v3d->camera == old_id) {
+               v3d->ca

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to