summaryrefslogtreecommitdiff
path: root/src/debug/HyprDebugOverlay.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug/HyprDebugOverlay.hpp')
-rw-r--r--src/debug/HyprDebugOverlay.hpp44
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