]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/timer.mm
check that the version of __sync_sub_and_fetch that returns a value is supported...
[wxWidgets.git] / src / cocoa / timer.mm
index 2dfe2cb30a778bb79380b3e8df3455f0f2c1a167..259011013d42c824054885201fb32717196f3cf1 100644 (file)
 
 #if wxUSE_TIMER
 
-#ifndef WX_PRECOMP
-    #include "wx/timer.h"
-#endif
-
+#include "wx/cocoa/private/timer.h"
 #include "wx/cocoa/autorelease.h"
 
-#import <Foundation/NSTimer.h>
-
-// ============================================================================
-// implementation
-// ============================================================================
+#include "wx/cocoa/objc/objc_uniquifying.h"
 
-IMPLEMENT_CLASS(wxTimer, wxTimerBase)
+#import <Foundation/NSTimer.h>
 
 // ========================================================================
 // 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];
 }