FIX: extra frame request

Do not freeze bargraph in Siplify dialog when no mouse move.
This commit is contained in:
Filip Sykala 2021-08-17 15:28:08 +02:00
parent 090728b9d5
commit 11c91d781e
4 changed files with 22 additions and 35 deletions

View file

@ -2780,11 +2780,10 @@ void GLCanvas3D::on_timer(wxTimerEvent& evt)
void GLCanvas3D::on_render_timer(wxTimerEvent& evt)
{
// no need to do anything here
// right after this event is recieved, idle event is fired
//m_dirty = true;
//wxWakeUpIdle();
m_dirty = true;
// wxWakeUpIdle();
// no need to wake up idle
// right after this event, idle event is fired
}
@ -2802,21 +2801,15 @@ void GLCanvas3D::schedule_extra_frame(int miliseconds)
return;
}
}
// Start timer
int64_t now = timestamp_now();
int remaining_time = m_render_timer.GetInterval();
// Timer is not running
if (! m_render_timer.IsRunning()) {
m_extra_frame_requested_delayed = miliseconds;
if (!m_render_timer.IsRunning()) {
m_render_timer.StartOnce(miliseconds);
m_render_timer_start = now;
// Timer is running - restart only if new period is shorter than remaning period
} else {
const int64_t remaining_time = (m_render_timer_start + m_extra_frame_requested_delayed) - now;
if (miliseconds + 20 < remaining_time) {
m_render_timer.Stop();
m_extra_frame_requested_delayed = miliseconds;
m_render_timer.StartOnce(miliseconds);
m_render_timer_start = now;
}
}
}