X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae999b11ec671b5a12a30f24c0aa6b36978b3fd6..d2e66707deb10dea6f92e3e4092f8a43ef942a5d:/src/cocoa/timer.mm diff --git a/src/cocoa/timer.mm b/src/cocoa/timer.mm index 2dfe2cb30a..259011013d 100644 --- a/src/cocoa/timer.mm +++ b/src/cocoa/timer.mm @@ -22,33 +22,27 @@ #if wxUSE_TIMER -#ifndef WX_PRECOMP - #include "wx/timer.h" -#endif - +#include "wx/cocoa/private/timer.h" #include "wx/cocoa/autorelease.h" -#import - -// ============================================================================ -// implementation -// ============================================================================ +#include "wx/cocoa/objc/objc_uniquifying.h" -IMPLEMENT_CLASS(wxTimer, wxTimerBase) +#import // ======================================================================== // wxNSTimerData // ======================================================================== @interface wxNSTimerData : NSObject { - wxTimer* m_timer; + wxCocoaTimerImpl* m_timer; } - (id)init; -- (id)initWithWxTimer:(wxTimer*)theTimer; -- (wxTimer*)timer; +- (id)initWithWxTimer:(wxCocoaTimerImpl*)theTimer; +- (wxCocoaTimerImpl*)timer; - (void)onNotify:(NSTimer *)theTimer; @end // interface wxNSTimerData : NSObject +WX_DECLARE_GET_OBJC_CLASS(wxNSTimerData,NSObject) @implementation wxNSTimerData : NSObject - (id)init @@ -59,7 +53,7 @@ IMPLEMENT_CLASS(wxTimer, wxTimerBase) return self; } -- (id)initWithWxTimer:(wxTimer*)theTimer; +- (id)initWithWxTimer:(wxCocoaTimerImpl*)theTimer; { if(!(self = [super init])) return nil; @@ -67,50 +61,51 @@ IMPLEMENT_CLASS(wxTimer, wxTimerBase) return self; } -- (wxTimer*)timer +- (wxCocoaTimerImpl*)timer { return m_timer; } - (void)onNotify:(NSTimer *)theTimer { - m_timer->Notify(); //wxTimerBase method + m_timer->Notify(); } -@end +@end +WX_IMPLEMENT_GET_OBJC_CLASS(wxNSTimerData,NSObject) // ---------------------------------------------------------------------------- -// wxTimer +// wxCocoaTimerImpl // ---------------------------------------------------------------------------- -wxTimer::~wxTimer() +wxCocoaTimerImpl::~wxCocoaTimerImpl() { Stop(); } -void wxTimer::Init() +void wxCocoaTimerImpl::Init() { m_cocoaNSTimer = NULL; } -bool wxTimer::Start(int millisecs, bool oneShot) +bool wxCocoaTimerImpl::Start(int millisecs, bool oneShot) { Stop(); - + wxAutoNSAutoreleasePool thePool; - wxNSTimerData *timerData = [[wxNSTimerData alloc] initWithWxTimer:this]; - m_cocoaNSTimer = [[NSTimer + wxNSTimerData *timerData = [[WX_GET_OBJC_CLASS(wxNSTimerData) alloc] initWithWxTimer:this]; + m_cocoaNSTimer = [[NSTimer scheduledTimerWithTimeInterval: millisecs / 1000.0 //seconds - target: timerData - selector: @selector(onNotify:) - userInfo: nil - repeats: oneShot == false] retain]; + target: timerData + selector: @selector(onNotify:) + userInfo: nil + repeats: oneShot == false] retain]; [timerData release]; - + return IsRunning(); } -void wxTimer::Stop() +void wxCocoaTimerImpl::Stop() { if (m_cocoaNSTimer) { @@ -121,7 +116,7 @@ void wxTimer::Stop() } } -bool wxTimer::IsRunning() const +bool wxCocoaTimerImpl::IsRunning() const { return m_cocoaNSTimer != NULL && [m_cocoaNSTimer isValid]; }