2022-05-28 17:32:19 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "../defines.hpp"
|
|
|
|
|
#include "../helpers/Monitor.hpp"
|
|
|
|
|
#include "../render/Texture.hpp"
|
|
|
|
|
#include <deque>
|
|
|
|
|
#include <cairo/cairo.h>
|
2024-10-19 23:03:29 +01:00
|
|
|
#include <map>
|
2022-05-28 17:32:19 +02:00
|
|
|
|
2023-03-24 19:23:16 +00:00
|
|
|
class CHyprRenderer;
|
|
|
|
|
|
2022-05-28 17:32:19 +02:00
|
|
|
class CHyprMonitorDebugOverlay {
|
2022-12-16 17:17:31 +00:00
|
|
|
public:
|
|
|
|
|
int draw(int offset);
|
2022-05-28 17:32:19 +02:00
|
|
|
|
2024-10-19 23:03:29 +01:00
|
|
|
void renderData(PHLMONITOR pMonitor, float durationUs);
|
|
|
|
|
void renderDataNoOverlay(PHLMONITOR pMonitor, float durationUs);
|
|
|
|
|
void frameData(PHLMONITOR pMonitor);
|
2022-05-28 17:32:19 +02:00
|
|
|
|
2022-12-16 17:17:31 +00:00
|
|
|
private:
|
|
|
|
|
std::deque<float> m_dLastFrametimes;
|
|
|
|
|
std::deque<float> m_dLastRenderTimes;
|
|
|
|
|
std::deque<float> m_dLastRenderTimesNoOverlay;
|
2023-03-03 12:15:59 +00:00
|
|
|
std::deque<float> m_dLastAnimationTicks;
|
2022-05-28 17:32:19 +02:00
|
|
|
std::chrono::high_resolution_clock::time_point m_tpLastFrame;
|
2024-10-19 23:03:29 +01:00
|
|
|
PHLMONITORREF m_pMonitor;
|
2023-11-04 17:03:05 +00:00
|
|
|
CBox m_wbLastDrawnBox;
|
2023-03-24 19:23:16 +00:00
|
|
|
|
|
|
|
|
friend class CHyprRenderer;
|
2022-05-28 17:32:19 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CHyprDebugOverlay {
|
2022-12-16 17:17:31 +00:00
|
|
|
public:
|
2024-06-08 10:07:59 +02:00
|
|
|
CHyprDebugOverlay();
|
2022-05-28 17:32:19 +02:00
|
|
|
void draw();
|
2024-10-19 23:03:29 +01:00
|
|
|
void renderData(PHLMONITOR, float durationUs);
|
|
|
|
|
void renderDataNoOverlay(PHLMONITOR, float durationUs);
|
|
|
|
|
void frameData(PHLMONITOR);
|
2022-05-28 17:32:19 +02:00
|
|
|
|
2022-12-16 17:17:31 +00:00
|
|
|
private:
|
2024-10-19 23:03:29 +01:00
|
|
|
std::map<PHLMONITOR, CHyprMonitorDebugOverlay> m_mMonitorOverlays;
|
2022-05-28 17:32:19 +02:00
|
|
|
|
2024-10-19 23:03:29 +01:00
|
|
|
cairo_surface_t* m_pCairoSurface = nullptr;
|
|
|
|
|
cairo_t* m_pCairo = nullptr;
|
2022-05-28 17:32:19 +02:00
|
|
|
|
2024-10-19 23:03:29 +01:00
|
|
|
SP<CTexture> m_pTexture;
|
2022-05-28 17:32:19 +02:00
|
|
|
|
|
|
|
|
friend class CHyprMonitorDebugOverlay;
|
2023-03-24 19:23:16 +00:00
|
|
|
friend class CHyprRenderer;
|
2022-05-28 17:32:19 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
inline std::unique_ptr<CHyprDebugOverlay> g_pDebugOverlay;
|