diff options
Diffstat (limited to 'src/debug/HyprDebugOverlay.hpp')
| -rw-r--r-- | src/debug/HyprDebugOverlay.hpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/debug/HyprDebugOverlay.hpp b/src/debug/HyprDebugOverlay.hpp new file mode 100644 index 00000000..aa476bf7 --- /dev/null +++ b/src/debug/HyprDebugOverlay.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include "../defines.hpp" +#include "../helpers/Monitor.hpp" +#include "../render/Texture.hpp" +#include <deque> +#include <cairo/cairo.h> +#include <unordered_map> + +class CHyprMonitorDebugOverlay { +public: + int draw(int offset); + + void renderData(SMonitor* pMonitor, float µs); + void frameData(SMonitor* pMonitor); + +private: + std::deque<float> m_dLastFrametimes; + std::deque<float> m_dLastRenderTimes; + std::chrono::high_resolution_clock::time_point m_tpLastFrame; + SMonitor* m_pMonitor = nullptr; + wlr_box m_wbLastDrawnBox; +}; + +class CHyprDebugOverlay { +public: + + void draw(); + void renderData(SMonitor*, float µs); + void frameData(SMonitor*); + +private: + + std::unordered_map<SMonitor*, CHyprMonitorDebugOverlay> m_mMonitorOverlays; + + cairo_surface_t* m_pCairoSurface = nullptr; + cairo_t* m_pCairo = nullptr; + + CTexture m_tTexture; + + friend class CHyprMonitorDebugOverlay; +}; + +inline std::unique_ptr<CHyprDebugOverlay> g_pDebugOverlay;
\ No newline at end of file |
