Implement a Wayland Vsync source using frame callbacks

This commit is contained in:
Cameron Gutman
2022-11-12 13:03:42 -06:00
parent 394f28339e
commit e3d51fd7f7
4 changed files with 150 additions and 12 deletions
@@ -0,0 +1,29 @@
#pragma once
#include "pacer.h"
#include <wayland-client-core.h>
#include <wayland-client-protocol.h>
class WaylandVsyncSource : public IVsyncSource
{
public:
WaylandVsyncSource(Pacer* pacer);
virtual ~WaylandVsyncSource();
virtual bool initialize(SDL_Window* window, int displayFps);
private:
static void frameDone(void* data, struct wl_callback* oldCb, uint32_t time);
static const struct wl_callback_listener s_FrameListener;
Pacer* m_Pacer;
int m_DisplayFps;
wl_display* m_Display;
wl_surface* m_Surface;
wl_callback* m_Callback;
uint32_t m_LastFrameTime;
};