hardcode 5ms window for rendering

This commit is contained in:
Nick Fisher
2024-03-04 08:35:00 +08:00
parent b8314dcdd8
commit 1680573a1e

View File

@@ -45,7 +45,7 @@ public:
float elapsed = float(std::chrono::duration_cast<std::chrono::milliseconds>(now - last).count());
while(elapsed < 3 * _frameIntervalInMilliseconds / 4) {
while(elapsed < _frameIntervalInMilliseconds - 5) {
std::function<void()> task;
std::unique_lock<std::mutex> lock(_access);
@@ -70,6 +70,25 @@ public:
// Log("Took %f milliseconds for render", float(std::chrono::duration_cast<std::chrono::milliseconds>(frameEnd - frameStart).count()));
}
elapsed = float(std::chrono::duration_cast<std::chrono::milliseconds>(now - last).count());
while(elapsed < _frameIntervalInMilliseconds) {
std::function<void()> task;
std::unique_lock<std::mutex> lock(_access);
if (_tasks.empty()) {
_cond.wait_for(lock, std::chrono::duration<float, std::milli>(1));
now = std::chrono::high_resolution_clock::now();
elapsed = float(std::chrono::duration_cast<std::chrono::milliseconds>(now - last).count());
continue;
}
task = std::move(_tasks.front());
_tasks.pop_front();
task();
now = std::chrono::high_resolution_clock::now();
elapsed = float(std::chrono::duration_cast<std::chrono::milliseconds>(now - last).count());
}
last = now;
}
});
@@ -139,6 +158,7 @@ public:
void setFrameIntervalInMilliseconds(float frameIntervalInMilliseconds) {
_frameIntervalInMilliseconds = frameIntervalInMilliseconds;
Log("Set _frameIntervalInMilliseconds to %f", _frameIntervalInMilliseconds);
}
template <class Rt>