From 14667e20336aa98f7576ca6a9f896a97ec2ab60a Mon Sep 17 00:00:00 2001 From: Seth Hillbrand <seth@kipro-pcb.com> Date: Fri, 1 Mar 2024 15:19:13 -0800 Subject: [PATCH] Don't wait for unused events We only need the UI update and mouse/keyboard while updating our DRC window. Waiting for other events gets into a race condition with the schematic editor that can cause a hang Fixes https://gitlab.com/kicad/code/kicad/-/issues/17003 --- pcbnew/dialogs/dialog_drc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pcbnew/dialogs/dialog_drc.cpp b/pcbnew/dialogs/dialog_drc.cpp index 5bd98db330..6e553f864b 100644 --- a/pcbnew/dialogs/dialog_drc.cpp +++ b/pcbnew/dialogs/dialog_drc.cpp @@ -40,6 +40,7 @@ #include <tools/pcb_actions.h> #include <wildcards_and_files_ext.h> #include <pcb_marker.h> +#include <pgm_base.h> #include <wx/filedlg.h> #include <wx/wupdlock.h> #include <widgets/appearance_controls.h> @@ -210,7 +211,7 @@ bool DIALOG_DRC::updateUI() double cur = alg::clamp( 0.0, (double) m_progress.load() / m_maxProgress, 1.0 ); m_gauge->SetValue( KiROUND( cur * 1000.0 ) ); - wxSafeYield( this ); + Pgm().App().SafeYieldFor( this, wxEVT_CATEGORY_NATIVE_EVENTS ); return !m_cancelled; }