summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2021-07-07 15:47:27 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2021-07-08 10:10:58 +0200
commit135ba3a7e1e40df3df1949eee800eaf8c8b67416 (patch)
treedb84d448c616a6745b0cd8547db6e1542560910d
parent87475c20d6cc81912e58f21369b101271d4732f6 (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.cxx13
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) {