From e2165ba02812e99dbd32c70cc6c11e2072a29ec0 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Wed, 26 May 2010 20:04:00 +0000 Subject: Fl_cocoa.mm: removed 4 more Carbon calls (related to timers) Tested OK with clock, scroll and tabs demos. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7614 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_cocoa.mm | 52 +++++++++++++++++++--------------------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 33dda8694..9eddf3e3d 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -44,10 +44,7 @@ "_GetKeys", referenced from: Fl::get_key(int) in Fl_get_key.o - - "_InstallEventLoopTimer", referenced from: - Fl::add_timeout(double, void (*)(void*), void*)in Fl.o - + "_GetEventParameter", referenced from: carbonTextHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) in Fl.o @@ -56,18 +53,7 @@ "_GetEventDispatcherTarget", referenced from: fl_open_display() in Fl.o - - "_SetEventLoopTimerNextFireTime", referenced from: - Fl::add_timeout(double, void (*)(void*), void*)in Fl.o - - "_RemoveEventLoopTimer", referenced from: - Fl::add_timeout(double, void (*)(void*), void*)in Fl.o - delete_timer(MacTimeout&) in Fl.o - - "_GetMainEventLoop", referenced from: - Fl::add_timeout(double, void (*)(void*), void*)in Fl.o - - */ +*/ #ifndef FL_DOXYGEN @@ -569,8 +555,7 @@ static void breakMacEventLoop() struct MacTimeout { Fl_Timeout_Handler callback; void* data; - EventLoopTimerRef timer; - EventLoopTimerUPP upp; + CFRunLoopTimerRef timer; char pending; }; static MacTimeout* mac_timers; @@ -594,13 +579,12 @@ static void realloc_timers() static void delete_timer(MacTimeout& t) { if (t.timer) { - RemoveEventLoopTimer(t.timer); - DisposeEventLoopTimerUPP(t.upp); + CFRelease(t.timer); memset(&t, 0, sizeof(MacTimeout)); } } -static void do_timer(EventLoopTimerRef timer, void* data) +static void do_timer(CFRunLoopTimerRef timer, void* data) { for (int i = 0; i < mac_timer_used; ++i) { MacTimeout& t = mac_timers[i]; @@ -2639,7 +2623,7 @@ void Fl::add_timeout(double time, Fl_Timeout_Handler cb, void* data) MacTimeout& t = mac_timers[i]; // if so, simply change the fire interval if (t.callback == cb && t.data == data) { - SetEventLoopTimerNextFireTime(t.timer, (EventTimerInterval)time); + CFRunLoopTimerSetNextFireDate(t.timer, CFAbsoluteTimeGetCurrent() + time ); t.pending = 1; return; } @@ -2663,21 +2647,23 @@ void Fl::add_timeout(double time, Fl_Timeout_Handler cb, void* data) } // now install a brand new timer MacTimeout& t = mac_timers[timer_id]; - EventTimerInterval fireDelay = (EventTimerInterval)time; - EventLoopTimerUPP timerUPP = NewEventLoopTimerUPP(do_timer); - EventLoopTimerRef timerRef = 0; - OSStatus err = InstallEventLoopTimer(GetMainEventLoop(), fireDelay, 0, timerUPP, data, &timerRef); - if (err == noErr) { + CFRunLoopTimerContext context = {0, data, NULL,NULL,NULL}; + CFRunLoopTimerRef timerRef = CFRunLoopTimerCreate(kCFAllocatorDefault, + CFAbsoluteTimeGetCurrent() + time, + 1E30, + 0, + 0, + do_timer, + &context + ); + if (timerRef) { + CFRunLoopAddTimer(CFRunLoopGetCurrent(), + timerRef, + kCFRunLoopDefaultMode); t.callback = cb; t.data = data; t.timer = timerRef; - t.upp = timerUPP; t.pending = 1; - } else { - if (timerRef) - RemoveEventLoopTimer(timerRef); - if (timerUPP) - DisposeEventLoopTimerUPP(timerUPP); } } -- cgit v1.2.3