blob: 375ecc2c0f08856dd1df74825a397710b33ab70d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#pragma once
#include "../defines.hpp"
#include "../render/Texture.hpp"
#include <cairo/cairo.h>
#include <map>
#include <deque>
namespace Render {
class IHyprRenderer;
}
class CHyprMonitorDebugOverlay {
public:
int draw(int offset);
void renderData(PHLMONITOR pMonitor, float durationUs);
void renderDataNoOverlay(PHLMONITOR pMonitor, float durationUs);
void frameData(PHLMONITOR pMonitor);
private:
std::deque<float> m_lastFrametimes;
std::deque<float> m_lastRenderTimes;
std::deque<float> m_lastRenderTimesNoOverlay;
std::deque<float> m_lastAnimationTicks;
std::chrono::high_resolution_clock::time_point m_lastFrame;
PHLMONITORREF m_monitor;
CBox m_lastDrawnBox;
friend class Render::IHyprRenderer;
};
class CHyprDebugOverlay {
public:
CHyprDebugOverlay();
void draw();
void renderData(PHLMONITOR, float durationUs);
void renderDataNoOverlay(PHLMONITOR, float durationUs);
void frameData(PHLMONITOR);
private:
std::map<PHLMONITORREF, CHyprMonitorDebugOverlay> m_monitorOverlays;
cairo_surface_t* m_cairoSurface = nullptr;
cairo_t* m_cairo = nullptr;
SP<Render::ITexture> m_texture;
friend class CHyprMonitorDebugOverlay;
friend class Render::IHyprRenderer;
};
inline UP<CHyprDebugOverlay> g_pDebugOverlay;
|