From 144885d89fc4689e8dde85822b0d3302db397b20 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Wed, 11 Jun 2025 17:00:16 +0200 Subject: [PATCH] anr: make dialog disappear if the app dies fixes #10514 --- src/managers/ANRManager.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/managers/ANRManager.cpp b/src/managers/ANRManager.cpp index e4e62ea8..65e0dea1 100644 --- a/src/managers/ANRManager.cpp +++ b/src/managers/ANRManager.cpp @@ -35,6 +35,22 @@ CANRManager::CANRManager() { m_data.emplace_back(makeShared(window)); }); + static auto P1 = g_pHookSystem->hookDynamic("closeWindow", [this](void* self, SCallbackInfo& info, std::any data) { + auto window = std::any_cast(data); + + for (const auto& d : m_data) { + if (!d->fitsWindow(window)) + continue; + + // kill the dialog, act as if we got a "ping" in case there's more than one + // window from this client, in which case the dialog will re-appear. + d->killDialog(); + d->missedResponses = 0; + d->dialogSaidWait = false; + return; + } + }); + m_timer->updateTimeout(TIMER_TIMEOUT); }