#pragma once #include #include #include "MonitorRule.hpp" #include "../../../desktop/DesktopTypes.hpp" #include "../../../helpers/memory/Memory.hpp" #include "../../../helpers/signal/Signal.hpp" namespace Config { class CMonitorRuleManager { public: CMonitorRuleManager(); ~CMonitorRuleManager() = default; void clear(); void add(CMonitorRule&&); void scheduleReload(); void ensureMonitorStatus(); void ensureVRR(PHLMONITOR pMonitor = nullptr); CMonitorRule get(const PHLMONITOR); const std::vector& all(); std::vector& allMut(); private: void performMonitorReload(); std::vector m_rules; bool m_reloadScheduled = false; struct { CHyprSignalListener preChecksRender; } m_listeners; }; UP& monitorRuleMgr(); };