[Bf-blender-cvs] [94a064c0e95] master: Fix T64045: Crash activating fullscreen workspace

Julian Eisel noreply at git.blender.org
Sat May 4 15:33:14 CEST 2019


Commit: 94a064c0e95871cd23fd6208f56f4e016a418327
Author: Julian Eisel
Date:   Sat May 4 15:27:31 2019 +0200
Branches: master
https://developer.blender.org/rB94a064c0e95871cd23fd6208f56f4e016a418327

Fix T64045: Crash activating fullscreen workspace

See d83a72ec104ce9.

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

M	source/blender/editors/screen/screen_edit.c
M	source/blender/editors/screen/workspace_edit.c

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

diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 2ce9d732eb7..07a87982890 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -884,9 +884,11 @@ static bScreen *screen_fullscreen_find_associated_normal_screen(const Main *bmai
 {
   for (bScreen *screen_iter = bmain->screens.first; screen_iter;
        screen_iter = screen_iter->id.next) {
-    ScrArea *sa = screen_iter->areabase.first;
-    if (sa && sa->full == screen) {
-      return screen_iter;
+    if ((screen_iter != screen) && ELEM(screen_iter->state, SCREENMAXIMIZED, SCREENFULL)) {
+      ScrArea *sa = screen_iter->areabase.first;
+      if (sa && sa->full == screen) {
+        return screen_iter;
+      }
     }
   }
 
@@ -905,9 +907,7 @@ bScreen *screen_change_prepare(
     return NULL;
   }
 
-  if (ELEM(screen_new->state, SCREENMAXIMIZED, SCREENFULL)) {
-    screen_new = screen_fullscreen_find_associated_normal_screen(bmain, screen_new);
-  }
+  screen_new = screen_fullscreen_find_associated_normal_screen(bmain, screen_new);
 
   /* check for valid winid */
   if (!(screen_new->winid == 0 || screen_new->winid == win->winid)) {
diff --git a/source/blender/editors/screen/workspace_edit.c b/source/blender/editors/screen/workspace_edit.c
index 6294a64af0f..2dfa05cf6b0 100644
--- a/source/blender/editors/screen/workspace_edit.c
+++ b/source/blender/editors/screen/workspace_edit.c
@@ -165,7 +165,9 @@ bool ED_workspace_change(WorkSpace *workspace_new, bContext *C, wmWindowManager
   }
 
   screen_new = screen_change_prepare(screen_old, screen_new, bmain, C, win);
-  BLI_assert(BKE_workspace_layout_screen_get(layout_new) == screen_new);
+  if (BKE_workspace_layout_screen_get(layout_new) != screen_new) {
+    layout_new = BKE_workspace_layout_find(workspace_new, screen_new);
+  }
 
   if (screen_new == NULL) {
     return false;



More information about the Bf-blender-cvs mailing list