From 2504619a6a1cec9061031d09b4e70fd9a6edc645 Mon Sep 17 00:00:00 2001 From: taylorza Date: Sun, 30 Nov 2025 02:20:20 -0500 Subject: [PATCH 1/2] Fix for #14600 --- src/osd/modules/debugger/debugwin.cpp | 35 +++++++++++++++------------ 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/osd/modules/debugger/debugwin.cpp b/src/osd/modules/debugger/debugwin.cpp index 1ad713a967c9c..e14dc5bb0f84c 100644 --- a/src/osd/modules/debugger/debugwin.cpp +++ b/src/osd/modules/debugger/debugwin.cpp @@ -206,23 +206,28 @@ void debugger_windows::wait_for_debugger(device_t &device, bool firststop) // get and process messages MSG message; - GetMessage(&message, nullptr, 0, 0); - switch (message.message) + // Crude implementation of GetMessage with timeout + if (MsgWaitForMultipleObjects(0, nullptr, false, 16, QS_ALLINPUT) == WAIT_OBJECT_0) { - // check for F10 -- we need to capture that ourselves - case WM_SYSKEYDOWN: - case WM_SYSKEYUP: - if (message.wParam == VK_F4 && message.message == WM_SYSKEYDOWN) - SendMessage(GetAncestor(GetFocus(), GA_ROOT), WM_CLOSE, 0, 0); - if (message.wParam == VK_F10) - SendMessage(GetAncestor(GetFocus(), GA_ROOT), (message.message == WM_SYSKEYDOWN) ? WM_KEYDOWN : WM_KEYUP, message.wParam, message.lParam); - break; - - // process everything else - default: - winwindow_dispatch_message(*m_machine, message); - break; + if (PeekMessage(&message, nullptr, 0, 0, PM_REMOVE)) { + switch (message.message) + { + // check for F10 -- we need to capture that ourselves + case WM_SYSKEYDOWN: + case WM_SYSKEYUP: + if (message.wParam == VK_F4 && message.message == WM_SYSKEYDOWN) + SendMessage(GetAncestor(GetFocus(), GA_ROOT), WM_CLOSE, 0, 0); + if (message.wParam == VK_F10) + SendMessage(GetAncestor(GetFocus(), GA_ROOT), (message.message == WM_SYSKEYDOWN) ? WM_KEYDOWN : WM_KEYUP, message.wParam, message.lParam); + break; + + // process everything else + default: + winwindow_dispatch_message(*m_machine, message); + break; + } + } } // mark the debugger as active From d64dde24fb08c79cc3ac19cea42c6d389053f7b9 Mon Sep 17 00:00:00 2001 From: taylorza Date: Sun, 30 Nov 2025 10:04:35 -0500 Subject: [PATCH 2/2] Ensuring pending messages are serviced --- src/osd/modules/debugger/debugwin.cpp | 35 ++++++++++++--------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/osd/modules/debugger/debugwin.cpp b/src/osd/modules/debugger/debugwin.cpp index e14dc5bb0f84c..ab9416528e35f 100644 --- a/src/osd/modules/debugger/debugwin.cpp +++ b/src/osd/modules/debugger/debugwin.cpp @@ -207,26 +207,23 @@ void debugger_windows::wait_for_debugger(device_t &device, bool firststop) // get and process messages MSG message; - // Crude implementation of GetMessage with timeout - if (MsgWaitForMultipleObjects(0, nullptr, false, 16, QS_ALLINPUT) == WAIT_OBJECT_0) + if (PeekMessage(&message, nullptr, 0, 0, PM_REMOVE)) { - if (PeekMessage(&message, nullptr, 0, 0, PM_REMOVE)) { - switch (message.message) - { - // check for F10 -- we need to capture that ourselves - case WM_SYSKEYDOWN: - case WM_SYSKEYUP: - if (message.wParam == VK_F4 && message.message == WM_SYSKEYDOWN) - SendMessage(GetAncestor(GetFocus(), GA_ROOT), WM_CLOSE, 0, 0); - if (message.wParam == VK_F10) - SendMessage(GetAncestor(GetFocus(), GA_ROOT), (message.message == WM_SYSKEYDOWN) ? WM_KEYDOWN : WM_KEYUP, message.wParam, message.lParam); - break; - - // process everything else - default: - winwindow_dispatch_message(*m_machine, message); - break; - } + switch (message.message) + { + // check for F10 -- we need to capture that ourselves + case WM_SYSKEYDOWN: + case WM_SYSKEYUP: + if (message.wParam == VK_F4 && message.message == WM_SYSKEYDOWN) + SendMessage(GetAncestor(GetFocus(), GA_ROOT), WM_CLOSE, 0, 0); + if (message.wParam == VK_F10) + SendMessage(GetAncestor(GetFocus(), GA_ROOT), (message.message == WM_SYSKEYDOWN) ? WM_KEYDOWN : WM_KEYUP, message.wParam, message.lParam); + break; + + // process everything else + default: + winwindow_dispatch_message(*m_machine, message); + break; } }