diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-05-28 17:32:19 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-05-28 17:32:19 +0200 |
| commit | 8c10857f14e6c91f3b3099b9508e1f4d68c2d276 (patch) | |
| tree | ad71ebd03a25f0b1832bcb93b2c39567c54b5d4d /src/debug/HyprDebugOverlay.hpp | |
| parent | 9b6960eb554f320492fd1414ecb9e52a3ad3b7d4 (diff) | |
Added a debug overlay
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 |
