summaryrefslogtreecommitdiff
path: root/src/debug/HyprDebugOverlay.hpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-28 17:32:19 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-28 17:32:19 +0200
commit8c10857f14e6c91f3b3099b9508e1f4d68c2d276 (patch)
treead71ebd03a25f0b1832bcb93b2c39567c54b5d4d /src/debug/HyprDebugOverlay.hpp
parent9b6960eb554f320492fd1414ecb9e52a3ad3b7d4 (diff)
Added a debug overlay
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