diff --git a/src/osx/core/evtloop_cf.cpp b/src/osx/core/evtloop_cf.cpp index 3b85b35085..ad9a5da15e 100644 --- a/src/osx/core/evtloop_cf.cpp +++ b/src/osx/core/evtloop_cf.cpp @@ -146,7 +146,7 @@ wxCFEventLoop::AddSourceForFD(int WXUNUSED(fd), #endif // wxUSE_EVENTLOOP_SOURCE -void wxObserverCallBack(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info) +extern "C" void wxObserverCallBack(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info) { wxCFEventLoop * eventloop = static_cast(info); if ( eventloop ) @@ -196,8 +196,9 @@ wxCFEventLoop::wxCFEventLoop() bzero( &ctxt, sizeof(ctxt) ); ctxt.info = this; m_runLoopObserver = CFRunLoopObserverCreate( kCFAllocatorDefault, kCFRunLoopBeforeTimers | kCFRunLoopBeforeWaiting , true /* repeats */, 0, - wxObserverCallBack, &ctxt ); + wxObserverCallBack, &ctxt ); CFRunLoopAddObserver(m_runLoop, m_runLoopObserver, kCFRunLoopCommonModes); + CFRelease(m_runLoopObserver); } wxCFEventLoop::~wxCFEventLoop() @@ -213,9 +214,7 @@ CFRunLoopRef wxCFEventLoop::CFGetCurrentRunLoop() const void wxCFEventLoop::WakeUp() { - extern void wxMacWakeUp(); - - wxMacWakeUp(); + CFRunLoopWakeUp(m_runLoop); } bool wxCFEventLoop::YieldFor(long eventsToProcess)