X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad9835c97c10c0d7de345e3a7a7c0fc2776eb2cb..ff42758536f8d573409bf6c35528497ba36b4d0e:/src/mac/carbon/timer.cpp diff --git a/src/mac/carbon/timer.cpp b/src/mac/carbon/timer.cpp index c17eb429fc..28179a84f4 100644 --- a/src/mac/carbon/timer.cpp +++ b/src/mac/carbon/timer.cpp @@ -11,11 +11,13 @@ #include "wx/wxprec.h" +#if wxUSE_TIMER + #ifndef WX_PRECOMP #include "wx/dynarray.h" #endif -#include "wx/timer.h" +#include "wx/mac/private/timer.h" #ifdef __WXMAC__ #include "wx/mac/private.h" @@ -25,26 +27,23 @@ #include #endif -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxEvtHandler) - #define wxMAC_USE_CARBON_TIMER 1 #if wxMAC_USE_CARBON_TIMER struct MacTimerInfo { - wxTimer* m_timer; + wxCarbonTimerImpl* m_timer; EventLoopTimerUPP m_proc; EventLoopTimerRef m_timerRef; }; -static pascal void wxProcessTimer( EventLoopTimerRef theTimer, void *data ); static pascal void wxProcessTimer( EventLoopTimerRef theTimer, void *data ) { if ( data == NULL ) return; - wxTimer* timer = (wxTimer*)data; + wxCarbonTimerImpl* timer = (wxCarbonTimerImpl*)data; if ( timer->IsOneShot() ) timer->Stop(); @@ -52,7 +51,8 @@ static pascal void wxProcessTimer( EventLoopTimerRef theTimer, void *data ) timer->Notify(); } -void wxTimer::Init() +wxCarbonTimerImpl::wxCarbonTimerImpl(wxTimer *timer) + : wxTimerImpl(timer) { m_info = new MacTimerInfo(); m_info->m_timer = this; @@ -60,24 +60,19 @@ void wxTimer::Init() m_info->m_timerRef = kInvalidID; } -bool wxTimer::IsRunning() const +bool wxCarbonTimerImpl::IsRunning() const { return ( m_info->m_timerRef != kInvalidID ); } -wxTimer::~wxTimer() +wxCarbonTimerImpl::~wxCarbonTimerImpl() { - Stop(); - if (m_info != NULL) - { - delete m_info; - m_info = NULL; - } + delete m_info; } -bool wxTimer::Start( int milliseconds, bool mode ) +bool wxCarbonTimerImpl::Start( int milliseconds, bool mode ) { - (void)wxTimerBase::Start(milliseconds, mode); + (void)wxTimerImpl::Start(milliseconds, mode); wxCHECK_MSG( m_milli > 0, false, wxT("invalid value for timer timeout") ); wxCHECK_MSG( m_info->m_timerRef == NULL, false, wxT("attempting to restart a timer") ); @@ -97,7 +92,7 @@ bool wxTimer::Start( int milliseconds, bool mode ) return true; } -void wxTimer::Stop() +void wxCarbonTimerImpl::Stop() { if (m_info->m_timerRef) RemoveEventLoopTimer( m_info->m_timerRef ); @@ -108,13 +103,13 @@ void wxTimer::Stop() m_info->m_timerRef = kInvalidID; } -#else +#else // !wxMAC_USE_CARBON_TIMER typedef struct MacTimerInfo { TMTask m_task; wxMacNotifierTableRef m_table; - wxTimer* m_timer; + wxCarbonTimerImpl* m_timer; }; static void wxProcessTimer( unsigned long event, void *data ); @@ -136,8 +131,8 @@ static void wxProcessTimer( unsigned long event, void *data ) if ( data == NULL ) return; - wxTimer* timer = (wxTimer*) data; - if ( timer->IsOneShot() ) + wxCarbonTimerImpl* timer = (wxCarbonTimerImpl*) data; + if ( timer->m_oneShot ) timer->Stop(); gTimersInProcess.Add( timer ); @@ -153,7 +148,7 @@ static void wxProcessTimer( unsigned long event, void *data ) } } -void wxTimer::Init() +void wxCarbonTimerImpl::Init() { m_info = new MacTimerInfo(); m_info->m_task.tmAddr = NULL; @@ -164,14 +159,14 @@ void wxTimer::Init() m_info->m_timer = this; } -bool wxTimer::IsRunning() const +bool wxCarbonTimerImpl::IsRunning() const { // as the qType may already indicate it is elapsed, but it // was not handled internally yet return ( m_info->m_task.tmAddr != NULL ); } -wxTimer::~wxTimer() +wxCarbonTimerImpl::~wxCarbonTimerImpl() { Stop(); if (m_info != NULL) @@ -185,7 +180,7 @@ wxTimer::~wxTimer() gTimersInProcess.RemoveAt( index ); } -bool wxTimer::Start( int milliseconds, bool mode ) +bool wxCarbonTimerImpl::Start( int milliseconds, bool mode ) { (void)wxTimerBase::Start( milliseconds, mode ); @@ -203,7 +198,7 @@ bool wxTimer::Start( int milliseconds, bool mode ) return true; } -void wxTimer::Stop() +void wxCarbonTimerImpl::Stop() { if ( m_info->m_task.tmAddr ) { @@ -215,4 +210,7 @@ void wxTimer::Stop() wxMacRemoveAllNotifiersForData( wxMacGetNotifierTable(), this ); } -#endif +#endif // wxMAC_USE_CARBON_TIMER/!wxMAC_USE_CARBON_TIMER + +#endif // wxUSE_TIMER +