diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2022-10-06 21:00:35 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2022-10-06 22:04:11 +0300 |
commit | 0d0e2dc0a8de1ba8d5adb71d3495fc35d0f399ba (patch) | |
tree | 311d292b1b94018fe3ab887ae8a527e2b8089061 | |
parent | be8ee05dcba6987fd4098cc61d414b0b8cef4b3e (diff) |
DRW: fix use of potentially uninitialized variable
Bug introduced in rB6774cae3f25b.
This causes undefined behavior in `DRW_state_draw_support()` making
overlay depth drawing unpredictable.
-rw-r--r-- | source/blender/draw/DRW_engine.h | 12 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 31 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.cc | 5 |
3 files changed, 14 insertions, 34 deletions
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h index dec7a22aadb..8c5f1b70cc0 100644 --- a/source/blender/draw/DRW_engine.h +++ b/source/blender/draw/DRW_engine.h @@ -126,14 +126,10 @@ void DRW_draw_select_loop(struct Depsgraph *depsgraph, void DRW_draw_depth_loop(struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, - struct GPUViewport *viewport); -/** - * Converted from #ED_view3d_draw_depth_gpencil (legacy drawing). - */ -void DRW_draw_depth_loop_gpencil(struct Depsgraph *depsgraph, - struct ARegion *region, - struct View3D *v3d, - struct GPUViewport *viewport); + struct GPUViewport *viewport, + const bool use_gpencil, + const bool use_basic, + const bool use_overlay); /** * Clears the Depth Buffer and draws only the specified object. */ diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index b6ca56d36fc..3272edef750 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -2592,13 +2592,13 @@ void DRW_draw_select_loop(struct Depsgraph *depsgraph, /** * object mode select-loop, see: ED_view3d_draw_depth_loop (legacy drawing). */ -static void drw_draw_depth_loop_impl(struct Depsgraph *depsgraph, - ARegion *region, - View3D *v3d, - GPUViewport *viewport, - const bool use_gpencil, - const bool use_basic, - const bool use_overlay) +void DRW_draw_depth_loop(struct Depsgraph *depsgraph, + ARegion *region, + View3D *v3d, + GPUViewport *viewport, + const bool use_gpencil, + const bool use_basic, + const bool use_overlay) { Scene *scene = DEG_get_evaluated_scene(depsgraph); RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->shading.type); @@ -2714,23 +2714,6 @@ static void drw_draw_depth_loop_impl(struct Depsgraph *depsgraph, drw_manager_exit(&DST); } -void DRW_draw_depth_loop(struct Depsgraph *depsgraph, - ARegion *region, - View3D *v3d, - GPUViewport *viewport) -{ - drw_draw_depth_loop_impl( - depsgraph, region, v3d, viewport, false, true, DRW_state_draw_support()); -} - -void DRW_draw_depth_loop_gpencil(struct Depsgraph *depsgraph, - ARegion *region, - View3D *v3d, - GPUViewport *viewport) -{ - drw_draw_depth_loop_impl(depsgraph, region, v3d, viewport, true, false, false); -} - void DRW_draw_select_id(Depsgraph *depsgraph, ARegion *region, View3D *v3d, const rcti *rect) { SELECTID_Context *sel_ctx = DRW_select_engine_context_get(); diff --git a/source/blender/editors/space_view3d/view3d_draw.cc b/source/blender/editors/space_view3d/view3d_draw.cc index 33129dfff5d..8a86889f2d0 100644 --- a/source/blender/editors/space_view3d/view3d_draw.cc +++ b/source/blender/editors/space_view3d/view3d_draw.cc @@ -2362,10 +2362,11 @@ void ED_view3d_depth_override(Depsgraph *depsgraph, if (viewport != nullptr) { switch (mode) { case V3D_DEPTH_NO_GPENCIL: - DRW_draw_depth_loop(depsgraph, region, v3d, viewport); + DRW_draw_depth_loop( + depsgraph, region, v3d, viewport, false, true, (v3d->flag2 & V3D_HIDE_OVERLAYS) == 0); break; case V3D_DEPTH_GPENCIL_ONLY: - DRW_draw_depth_loop_gpencil(depsgraph, region, v3d, viewport); + DRW_draw_depth_loop(depsgraph, region, v3d, viewport, true, false, false); break; case V3D_DEPTH_OBJECT_ONLY: DRW_draw_depth_object( |