diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2021-07-07 15:47:27 +0200 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2021-07-08 10:10:58 +0200 |
| commit | 135ba3a7e1e40df3df1949eee800eaf8c8b67416 (patch) | |
| tree | db84d448c616a6745b0cd8547db6e1542560910d | |
| parent | 87475c20d6cc81912e58f21369b101271d4732f6 (diff) | |
macOS: Fl::add_timeout() must always create a new timer (#248)
The old version would reschedule an existing timer if a matching timer
existed already which was unique to macOS.
The new behavior is consistent on all platforms and allows to create
multiple timer entries with the same callback and userdata.
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx index 2caf174d2..1a36149e2 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx +++ b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx @@ -465,18 +465,7 @@ static void do_timer(CFRunLoopTimerRef timer, void* data) void Fl_Cocoa_Screen_Driver::add_timeout(double time, Fl_Timeout_Handler cb, void* data) { - // check, if this timer slot exists already - for (int i = 0; i < mac_timer_used; ++i) { - MacTimeout& t = mac_timers[i]; - // if so, simply change the fire interval - if (t.callback == cb && t.data == data) { - t.next_timeout = CFAbsoluteTimeGetCurrent() + time; - CFRunLoopTimerSetNextFireDate(t.timer, t.next_timeout ); - t.pending = 1; - return; - } - } - // no existing timer to use. Create a new one: + // always create a new timer entry fl_intptr_t timer_id = -1; // find an empty slot in the timer array for (int i = 0; i < mac_timer_used; ++i) { |
