From 35a3e7cc16f8312c5a750041adf67d2e086d059b Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Thu, 26 Dec 2019 17:19:05 +0100 Subject: Fix Fl::add_timeout() under Linux (STR 3516) See comment 14 (excerpt): "The current implementation basically handles add_timeout() the same way as repeat_timeout(), i.e. add_timeout() *calls* repeat_timeout(). However, repeat_timeout() intentionally *corrects* the timeout value by the value found in the global variable 'missed_timeout_by' which is set when the timer expires, directly before the timer callback is called. This variable is never reset." This commit resets the variable as necessary in Fl::add_timeout(). --- src/drivers/X11/Fl_X11_Screen_Driver.cxx | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.cxx b/src/drivers/X11/Fl_X11_Screen_Driver.cxx index 75467b71b..b93d22ac6 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Screen_Driver.cxx @@ -635,6 +635,7 @@ const char *Fl_X11_Screen_Driver::get_system_scheme() void Fl_X11_Screen_Driver::add_timeout(double time, Fl_Timeout_Handler cb, void *argp) { elapse_timeouts(); + missed_timeout_by = 0; repeat_timeout(time, cb, argp); } -- cgit v1.2.3