mirror of https://github.com/bsnes-emu/bsnes.git
61 lines
1.1 KiB
C++
61 lines
1.1 KiB
C++
@implementation CocoaTimer : NSObject
|
|
|
|
-(id) initWith:(phoenix::Timer&)timerReference {
|
|
if(self = [super init]) {
|
|
timer = &timerReference;
|
|
instance = nil;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
-(NSTimer*) instance {
|
|
return instance;
|
|
}
|
|
|
|
-(void) update {
|
|
if(instance) {
|
|
[instance invalidate];
|
|
instance = nil;
|
|
}
|
|
if(timer->state.enabled == false) return;
|
|
instance = [NSTimer
|
|
scheduledTimerWithTimeInterval:timer->state.milliseconds / 1000.0
|
|
target:self selector:@selector(run:) userInfo:nil repeats:YES
|
|
];
|
|
}
|
|
|
|
-(void) run:(NSTimer*)instance {
|
|
if(timer->onActivate) timer->onActivate();
|
|
}
|
|
|
|
@end
|
|
|
|
namespace phoenix {
|
|
|
|
void pTimer::setEnabled(bool enabled) {
|
|
@autoreleasepool {
|
|
[cocoaTimer update];
|
|
}
|
|
}
|
|
|
|
void pTimer::setInterval(unsigned milliseconds) {
|
|
@autoreleasepool {
|
|
[cocoaTimer update];
|
|
}
|
|
}
|
|
|
|
void pTimer::constructor() {
|
|
@autoreleasepool {
|
|
cocoaTimer = [[CocoaTimer alloc] initWith:timer];
|
|
}
|
|
}
|
|
|
|
void pTimer::destructor() {
|
|
@autoreleasepool {
|
|
if([cocoaTimer instance]) [[cocoaTimer instance] invalidate];
|
|
[cocoaTimer release];
|
|
}
|
|
}
|
|
|
|
}
|