summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--main/draw.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/main/draw.cpp b/main/draw.cpp
index 6894973e..732c9cee 100644
--- a/main/draw.cpp
+++ b/main/draw.cpp
@@ -199,7 +199,7 @@ void main_impl::do_update()
_frame_time = _frame_time*(1-alpha) + alpha*dt;
}
static size_t ctr = 0;
- if (dt >= 1.f/55 && dt_expected.value < 1e-1f)
+ if (dt >= 1.f/55 && !dt_expected.do_sleep)
fm_debug("%zu frame took %.1f milliseconds", ctr++, dt*1e3f);
}
else
@@ -239,15 +239,16 @@ void main_impl::drawEvent()
swapBuffers();
redraw();
+ timeline.nextFrame();
if (dt_expected.do_sleep)
{
constexpr float ε = 1e-3f;
- const float Δt൦ = timeline.currentFrameDuration(), sleep_secs = dt_expected.value - Δt൦ - dt_expected.jitter;
+ const float Δt൦ = timeline.previousFrameDuration(), sleep_secs = dt_expected.value - Δt൦ - dt_expected.jitter;
if (sleep_secs > ε)
std::this_thread::sleep_for(std::chrono::nanoseconds((long long)(sleep_secs * 1e9f)));
//fm_debug("jitter:%.1f sleep:%.0f", dt_expected.jitter*1000, sleep_secs*1000);
- const float Δt = timeline.currentFrameDuration() - dt_expected.value;
+ const float Δt = timeline.previousFrameDuration() - dt_expected.value;
constexpr float α = .1f;
dt_expected.jitter = std::fmax(dt_expected.jitter + Δt * α,
dt_expected.jitter * (1-α) + Δt * α);
@@ -255,8 +256,6 @@ void main_impl::drawEvent()
}
else
dt_expected.jitter = 0;
-
- timeline.nextFrame();
}
ArrayView<const clickable> main_impl::clickable_scenery() const noexcept