[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