From bfacc426518c1a3a6892ad1a1728b3b38bc6801a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 8 Jul 2025 18:38:41 +0200 Subject: [PATCH] Fix: EEVEE/Workbench crash rendering without an active object Regression from 62568d16e51b62ce3, this was crashing most of the EEVEE and Workbench render tests. Pull Request: https://projects.blender.org/blender/blender/pulls/141624 --- source/blender/draw/intern/draw_manager.hh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/draw/intern/draw_manager.hh b/source/blender/draw/intern/draw_manager.hh index b14ca09a625..3afd6f6ceba 100644 --- a/source/blender/draw/intern/draw_manager.hh +++ b/source/blender/draw/intern/draw_manager.hh @@ -327,7 +327,7 @@ inline ResourceHandleRange Manager::unique_handle(const ObjectRef &ref) inline ResourceHandleRange Manager::resource_handle(const ObjectRef &ref, float inflate_bounds) { bool is_active_object = (ref.dupli_object ? ref.dupli_parent : ref.object) == object_active; - bool is_edit_mode = DRW_object_is_in_edit_mode(object_active) && + bool is_edit_mode = object_active && DRW_object_is_in_edit_mode(object_active) && ref.object->mode == object_active->mode; matrix_buf.current().get_or_resize(resource_len_).sync(*ref.object); bounds_buf.current().get_or_resize(resource_len_).sync(*ref.object, inflate_bounds); @@ -341,7 +341,7 @@ inline ResourceHandle Manager::resource_handle(const ObjectRef &ref, const float3 *bounds_half_extent) { bool is_active_object = (ref.dupli_object ? ref.dupli_parent : ref.object) == object_active; - bool is_edit_mode = DRW_object_is_in_edit_mode(object_active) && + bool is_edit_mode = object_active && DRW_object_is_in_edit_mode(object_active) && ref.object->mode == object_active->mode; if (model_matrix) { matrix_buf.current().get_or_resize(resource_len_).sync(*model_matrix); @@ -381,7 +381,8 @@ inline ResourceHandle Manager::resource_handle_for_psys(const ObjectRef &ref, const float4x4 &model_matrix) { bool is_active_object = (ref.dupli_object ? ref.dupli_parent : ref.object) == object_active; - bool matches_active_object_edit_mode = object_active->mode == eObjectMode::OB_MODE_EDIT && + bool matches_active_object_edit_mode = object_active && + object_active->mode == eObjectMode::OB_MODE_EDIT && ref.object->mode == object_active->mode; matrix_buf.current().get_or_resize(resource_len_).sync(model_matrix); bounds_buf.current().get_or_resize(resource_len_).sync();