diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-02-21 21:26:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-21 21:26:53 +0100 |
| commit | f4b148df1e2d8edc96bd878a4cfde32ca6515ac8 (patch) | |
| tree | c8c4976280c0bbf450b572df33f312bdb6caab44 /src/managers/ANRManager.hpp | |
| parent | 0e24f9c0d55fcd9a5b2461a865d0e5dc2ea195c8 (diff) | |
anr: add xwayland support (#9456)
Adds XWayland support to ANR dialogs
Diffstat (limited to 'src/managers/ANRManager.hpp')
| -rw-r--r-- | src/managers/ANRManager.hpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/managers/ANRManager.hpp b/src/managers/ANRManager.hpp index 7d67e872..26319776 100644 --- a/src/managers/ANRManager.hpp +++ b/src/managers/ANRManager.hpp @@ -5,20 +5,22 @@ #include <chrono> #include <hyprutils/os/Process.hpp> #include <hyprutils/os/FileDescriptor.hpp> -#include <map> #include "./eventLoop/EventLoopTimer.hpp" #include "../helpers/signal/Signal.hpp" #include <atomic> #include <thread> +#include <vector> class CXDGWMBase; +class CXWaylandSurface; class CANRManager { public: CANRManager(); void onResponse(SP<CXDGWMBase> wmBase); - bool isNotResponding(SP<CXDGWMBase> wmBase); + void onResponse(SP<CXWaylandSurface> xwaylandSurface); + bool isNotResponding(PHLWINDOW pWindow); private: bool m_active = false; @@ -27,8 +29,12 @@ class CANRManager { void onTick(); struct SANRData { + SANRData(PHLWINDOW pWindow); ~SANRData(); + WP<CXWaylandSurface> xwaylandSurface; + WP<CXDGWMBase> xdgBase; + int missedResponses = 0; std::thread dialogThread; SP<Hyprutils::OS::CProcess> dialogProc; @@ -38,9 +44,19 @@ class CANRManager { void runDialog(const std::string& title, const std::string& appName, const std::string appClass, pid_t dialogWmPID); bool isThreadRunning(); void killDialog() const; + bool isDefunct() const; + bool fitsWindow(PHLWINDOW pWindow) const; + pid_t getPid() const; + void ping(); }; - std::map<WP<CXDGWMBase>, SP<SANRData>> m_data; + void onResponse(SP<SANRData> data); + bool isNotResponding(SP<SANRData> data); + SP<SANRData> dataFor(PHLWINDOW pWindow); + SP<SANRData> dataFor(SP<CXDGWMBase> wmBase); + SP<SANRData> dataFor(SP<CXWaylandSurface> pXwaylandSurface); + + std::vector<SP<SANRData>> m_data; }; inline UP<CANRManager> g_pANRManager;
\ No newline at end of file |
