Commit: fbe89b879c2ff723f0e615443d1f095a1fd846de Author: Peter Kim Date: Sun Feb 27 18:56:06 2022 +0900 Branches: xr-dev https://developer.blender.org/rBfbe89b879c2ff723f0e615443d1f095a1fd846de
XR: Fix crash on executing some action operators Since the XR area does not have any region geometry, hud updates from operators would cause invalid access when updating region sizes. =================================================================== M source/blender/editors/screen/area.c M source/blender/makesdna/DNA_screen_types.h M source/blender/windowmanager/intern/wm_event_system.c =================================================================== diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index a64948b5864..50b994be710 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1972,6 +1972,7 @@ void ED_area_init(wmWindowManager *wm, wmWindow *win, ScrArea *area) static void area_offscreen_init(ScrArea *area) { + area->flag |= AREA_FLAG_OFFSCREEN; area->type = BKE_spacetype_from_id(area->spacetype); if (area->type == NULL) { diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index d48149b2fa6..9bbb930ff9c 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -540,6 +540,8 @@ enum { AREA_FLAG_STACKED_FULLSCREEN = (1 << 7), /** Update action zones (even if the mouse is not intersecting them). */ AREA_FLAG_ACTIONZONES_UPDATE = (1 << 8), + /** For offscreen areas. */ + AREA_FLAG_OFFSCREEN = (1 << 9), }; #define AREAGRID 4 diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 8a19c99f59b..c1c01f23d14 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1023,7 +1023,7 @@ static void wm_operator_finished(bContext *C, wmOperator *op, const bool repeat, if (hud_status != NOP) { if (hud_status == SET) { ScrArea *area = CTX_wm_area(C); - if (area) { + if (area && ((area->flag & AREA_FLAG_OFFSCREEN) == 0)) { ED_area_type_hud_ensure(C, area); } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs