diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-09-02 05:44:37 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2020-09-02 16:00:05 +0300 |
commit | 006ff645388628eb82c47acc3a595a6d80cd7d8d (patch) | |
tree | 9c89991cb177fb7e3708d07ac8bc54d349a83da4 /source/blender/makesrna | |
parent | c4b9e2da8c3c12e69b9a7eab8d9f8a12e65dccaa (diff) |
Fix crash accessing image space properties without an active window
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index d4d35e07c2a..b02bf375349 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1455,11 +1455,14 @@ static bool rna_SpaceImageEditor_show_paint_get(PointerRNA *ptr) static bool rna_SpaceImageEditor_show_uvedit_get(PointerRNA *ptr) { - SpaceImage *sima = (SpaceImage *)(ptr->data); + SpaceImage *sima = ptr->data; bScreen *screen = (bScreen *)ptr->owner_id; + Object *obedit = NULL; wmWindow *win = ED_screen_window_find(screen, G_MAIN->wm.first); - ViewLayer *view_layer = WM_window_get_active_view_layer(win); - Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); + if (win != NULL) { + ViewLayer *view_layer = WM_window_get_active_view_layer(win); + obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); + } return ED_space_image_show_uvedit(sima, obedit); } @@ -1467,22 +1470,28 @@ static bool rna_SpaceImageEditor_show_maskedit_get(PointerRNA *ptr) { SpaceImage *sima = (SpaceImage *)(ptr->data); bScreen *screen = (bScreen *)ptr->owner_id; + Object *obedit = NULL; wmWindow *win = ED_screen_window_find(screen, G_MAIN->wm.first); - ViewLayer *view_layer = WM_window_get_active_view_layer(win); - return ED_space_image_check_show_maskedit(sima, view_layer); + if (win != NULL) { + ViewLayer *view_layer = WM_window_get_active_view_layer(win); + obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); + } + return ED_space_image_check_show_maskedit(sima, obedit); } static void rna_SpaceImageEditor_image_set(PointerRNA *ptr, PointerRNA value, struct ReportList *UNUSED(reports)) { - SpaceImage *sima = (SpaceImage *)(ptr->data); + BLI_assert(BKE_id_is_in_global_main(value.data)); + SpaceImage *sima = ptr->data; bScreen *screen = (bScreen *)ptr->owner_id; + Object *obedit = NULL; wmWindow *win = ED_screen_window_find(screen, G_MAIN->wm.first); - ViewLayer *view_layer = WM_window_get_active_view_layer(win); - Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); - - BLI_assert(BKE_id_is_in_global_main(value.data)); + if (win != NULL) { + ViewLayer *view_layer = WM_window_get_active_view_layer(win); + obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); + } ED_space_image_set(G_MAIN, sima, obedit, (Image *)value.data, false); } |