[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56192] trunk/blender/source/blender/ editors/screen/screen_edit.c: fix [#35043] Camera view breaks with multiple scenes and the "view center camera" action.

Campbell Barton ideasman42 at gmail.com
Sun Apr 21 18:08:49 CEST 2013


Revision: 56192
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56192
Author:   campbellbarton
Date:     2013-04-21 16:08:49 +0000 (Sun, 21 Apr 2013)
Log Message:
-----------
fix [#35043] Camera view breaks with multiple scenes and the "view center camera" action.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_edit.c

Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c	2013-04-21 13:51:51 UTC (rev 56191)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c	2013-04-21 16:08:49 UTC (rev 56192)
@@ -1460,7 +1460,7 @@
 	if (ed_screen_used(CTX_wm_manager(C), screen))
 		ED_object_editmode_exit(C, EM_FREEDATA | EM_DO_UNDO);
 
-	for (sc = CTX_data_main(C)->screen.first; sc; sc = sc->id.next) {
+	for (sc = bmain->screen.first; sc; sc = sc->id.next) {
 		if ((U.flag & USER_SCENEGLOBAL) || sc == screen) {
 			
 			if (scene != sc->scene) {
@@ -1479,7 +1479,7 @@
 	//  copy_view3d_lock(0);	/* space.c */
 	
 	/* are there cameras in the views that are not in the scene? */
-	for (sc = CTX_data_main(C)->screen.first; sc; sc = sc->id.next) {
+	for (sc = bmain->screen.first; sc; sc = sc->id.next) {
 		if ((U.flag & USER_SCENEGLOBAL) || sc == screen) {
 			ScrArea *sa = sc->areabase.first;
 			while (sa) {
@@ -1494,13 +1494,17 @@
 							v3d->camera = BKE_scene_camera_find(sc->scene);
 							// XXX if (sc == curscreen) handle_view3d_lock();
 							if (!v3d->camera) {
-								ARegion *ar;
-								for (ar = v3d->regionbase.first; ar; ar = ar->next) {
-									if (ar->regiontype == RGN_TYPE_WINDOW) {
-										RegionView3D *rv3d = ar->regiondata;
-
-										if (rv3d->persp == RV3D_CAMOB)
-											rv3d->persp = RV3D_PERSP;
+								ListBase *regionbase[] = {&sa->regionbase, &v3d->regionbase, NULL};
+								int i;
+								for (i = 0; regionbase[i]; i++) {
+									ARegion *ar;
+									for (ar = regionbase[i]->first; ar; ar = ar->next) {
+										if (ar->regiontype == RGN_TYPE_WINDOW) {
+											RegionView3D *rv3d = ar->regiondata;
+											if (rv3d->persp == RV3D_CAMOB) {
+												rv3d->persp = RV3D_PERSP;
+											}
+										}
 									}
 								}
 							}




More information about the Bf-blender-cvs mailing list