Remove sm_cocoaDelegate singleton. We need per-instance data anyway so we

may as well make it the target instead of the userInfo.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35942 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott 2005-10-18 16:02:51 +00:00
parent 06c2bab085
commit ae999b11ec
2 changed files with 6 additions and 21 deletions

View File

@ -40,7 +40,6 @@ protected:
private:
WX_NSTimer m_cocoaNSTimer;
static const wxObjcAutoRefFromAlloc<struct objc_object *> sm_cocoaDelegate;
DECLARE_ABSTRACT_CLASS(wxTimer)
};

View File

@ -36,16 +36,6 @@
IMPLEMENT_CLASS(wxTimer, wxTimerBase)
// ========================================================================
// wxNSTimerDelegate
// ========================================================================
@interface wxNSTimerDelegate : NSObject
{
}
- (void)onNotify:(NSTimer *)theTimer;
@end // interface wxNSTimerDelegate : NSObject
// ========================================================================
// wxNSTimerData
// ========================================================================
@ -57,6 +47,7 @@ IMPLEMENT_CLASS(wxTimer, wxTimerBase)
- (id)init;
- (id)initWithWxTimer:(wxTimer*)theTimer;
- (wxTimer*)timer;
- (void)onNotify:(NSTimer *)theTimer;
@end // interface wxNSTimerData : NSObject
@implementation wxNSTimerData : NSObject
@ -80,13 +71,10 @@ IMPLEMENT_CLASS(wxTimer, wxTimerBase)
{
return m_timer;
}
@end
@implementation wxNSTimerDelegate : NSObject
- (void)onNotify:(NSTimer *)theTimer
{
wxNSTimerData* theData = [theTimer userInfo];
[theData timer]->Notify(); //wxTimerBase method
m_timer->Notify(); //wxTimerBase method
}
@end
@ -94,8 +82,6 @@ IMPLEMENT_CLASS(wxTimer, wxTimerBase)
// wxTimer
// ----------------------------------------------------------------------------
const wxObjcAutoRefFromAlloc<struct objc_object*> wxTimer::sm_cocoaDelegate = [[wxNSTimerDelegate alloc] init];
wxTimer::~wxTimer()
{
Stop();
@ -112,14 +98,14 @@ bool wxTimer::Start(int millisecs, bool oneShot)
wxAutoNSAutoreleasePool thePool;
wxNSTimerData *userInfo = [[wxNSTimerData alloc] initWithWxTimer:this];
wxNSTimerData *timerData = [[wxNSTimerData alloc] initWithWxTimer:this];
m_cocoaNSTimer = [[NSTimer
scheduledTimerWithTimeInterval: millisecs / 1000.0 //seconds
target: wxTimer::sm_cocoaDelegate
target: timerData
selector: @selector(onNotify:)
userInfo: userInfo
userInfo: nil
repeats: oneShot == false] retain];
[userInfo release];
[timerData release];
return IsRunning();
}