From af01062b0a207c106a6ebb599993fb72a43484c5 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 14 Sep 2020 04:45:54 +0200 Subject: Use manual vsync since nouveau drivers are broken --- src/Vsync.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/Vsync.cpp (limited to 'src/Vsync.cpp') diff --git a/src/Vsync.cpp b/src/Vsync.cpp new file mode 100644 index 0000000..ab88205 --- /dev/null +++ b/src/Vsync.cpp @@ -0,0 +1,20 @@ +#include "../include/Vsync.hpp" +#include +#include + +namespace QuickMedia { + VSync::VSync(int framerate) : target_frame_delta_micro(1000.0 / (double)framerate * 1000.0), overflow(0) { + + } + + void VSync::display(sf::RenderWindow &window) { + sf::Int64 sleep_time_micro = target_frame_delta_micro - timer.getElapsedTime().asMicroseconds(); + window.display(); + if(sleep_time_micro > 0) { + if(usleep(sleep_time_micro) != 0) { + fprintf(stderr, "failed to sleep!\n"); + } + timer.restart(); + } + } +} \ No newline at end of file -- cgit v1.2.3