Fix Fl::add_timeout() in draw() under Linux (STR 3188)

Timeouts queued during Fl_Widget::draw() - called by Fl::flush() -
would not be serviced unless other events were processed. For
Details see STR 3188.
This commit is contained in:
Albrecht Schlosser 2019-12-09 17:53:58 +01:00
parent 61a86d1941
commit 0a124ac7e1
2 changed files with 5 additions and 0 deletions

View File

@ -105,6 +105,7 @@ Changes in FLTK 1.4.0 Released: ??? ?? 2019
Other Improvements
- (add new items here)
- Fix Fl::add_timeout() in draw() under Linux (STR 3188)
- Class Fl_Native_File_Chooser uses in priority the file chooser dialog
of GTK version 3 when available on the running X11 platform, and falls back
to version 2 when V3 is not available. In contrast, GTK version 2 was used

View File

@ -480,6 +480,10 @@ double Fl_X11_Screen_Driver::wait(double time_to_wait)
Fl::flush();
if (Fl::idle && !in_idle) // 'idle' may have been set within flush()
time_to_wait = 0.0;
else if (first_timeout && first_timeout->time < time_to_wait) {
// another timeout may have been queued within flush(), see STR #3188
time_to_wait = first_timeout->time >= 0.0 ? first_timeout->time : 0.0;
}
return this->poll_or_select_with_delay(time_to_wait);
}
}