FLTK logo

[master] 135ba3a - macOS: Fl::add_timeout() must always create a new timer (#248)

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] 135ba3a - macOS: Fl::add_timeout() must always create a new timer (#248) "Albrecht Schlosser" Jul 08, 2021  
 
commit 135ba3a7e1e40df3df1949eee800eaf8c8b67416
Author:     Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Wed Jul 7 15:47:27 2021 +0200
Commit:     Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Thu Jul 8 10:10:58 2021 +0200

    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.

 src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
index 2caf174..1a36149 100644
--- src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
+++ 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) {
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.