From b2b96fff13e11c49175a29b9bc2d2b78ba6a1eb1 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 4 Feb 2024 01:53:30 +0000 Subject: [PATCH] Disable threaded rendering when showing widget outlines Because these are drawn outside the window boundary, so it is not technically thread-safe due to non-deterministic drawing order --- src/viewport.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/viewport.cpp b/src/viewport.cpp index c0d4ffd2d6..3f55134aa1 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -3965,7 +3965,8 @@ void ViewportDoDraw(Viewport *vp, int left, int top, int right, int bottom, uint } _viewport_drawer_jobs++; - if (unlikely(HasBit(_viewport_debug_flags, VDF_DISABLE_THREAD))) { + extern bool _draw_widget_outlines; + if (unlikely(_draw_widget_outlines || HasBit(_viewport_debug_flags, VDF_DISABLE_THREAD))) { ViewportDoDrawRenderJob(vp, _vdd.release()); } else { _general_worker_pool.EnqueueJob([](void *data1, void *data2, void *data3) { @@ -4021,7 +4022,8 @@ static void ViewportDoDrawRenderJob(Viewport *vp, ViewportDrawerDynamic *vdd) vdd->draw_jobs_active.store((uint)vdd->parent_sprite_sets.size(), std::memory_order_relaxed); for (uint i = 1; i < (uint)vdd->parent_sprite_sets.size(); i++) { - if (unlikely(HasBit(_viewport_debug_flags, VDF_DISABLE_THREAD))) { + extern bool _draw_widget_outlines; + if (unlikely(_draw_widget_outlines || HasBit(_viewport_debug_flags, VDF_DISABLE_THREAD))) { ViewportDoDrawRenderSubJob(vp, vdd, i); } else { _general_worker_pool.EnqueueJob([](void *data1, void *data2, void *data3) {