[Bf-blender-cvs] [4c6789b] temp_localview_split: Initial commit for splitting off local-view data from layer visibility

Julian Eisel noreply at git.blender.org
Tue Jul 26 23:42:32 CEST 2016


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. @@




More information about the Bf-blender-cvs mailing list