X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1dcca9b51ebfbc1bd743918a2eb6eed37416dd13..90e95e61175953284a40c73f1d62ccc18ef4c748:/src/osx/core/evtloop_cf.cpp diff --git a/src/osx/core/evtloop_cf.cpp b/src/osx/core/evtloop_cf.cpp index fac4858a10..20f01f8fd6 100644 --- a/src/osx/core/evtloop_cf.cpp +++ b/src/osx/core/evtloop_cf.cpp @@ -25,8 +25,6 @@ #include "wx/evtloop.h" -#if wxUSE_EVENTLOOP_SOURCE - #ifndef WX_PRECOMP #include "wx/log.h" #include "wx/app.h" @@ -48,7 +46,8 @@ // wxCFEventLoopSource and wxCFEventLoop implementation // ============================================================================ -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 +#if wxUSE_EVENTLOOP_SOURCE + namespace { @@ -136,18 +135,6 @@ wxCFEventLoopSource::~wxCFEventLoopSource() CFRelease(m_cffd); } -#else // OS X < 10.5 - -wxEventLoopSource * -wxCFEventLoop::AddSourceForFD(int WXUNUSED(fd), - wxEventLoopSourceHandler * WXUNUSED(handler), - int WXUNUSED(flags)) -{ - return NULL; -} - -#endif // MAC_OS_X_VERSION_MAX_ALLOWED - #endif // wxUSE_EVENTLOOP_SOURCE void wxCFEventLoop::OSXCommonModeObserverCallBack(CFRunLoopObserverRef observer, int activity, void *info) @@ -182,7 +169,7 @@ void wxCFEventLoop::CommonModeObserverCallBack(CFRunLoopObserverRef WXUNUSED(obs if ( activity & kCFRunLoopBeforeWaiting ) { - if ( ProcessIdle() ) + if ( m_processIdleEvents && ProcessIdle() ) { WakeUp(); } @@ -214,6 +201,7 @@ wxCFEventLoop::DefaultModeObserverCallBack(CFRunLoopObserverRef WXUNUSED(observe wxCFEventLoop::wxCFEventLoop() { m_shouldExit = false; + m_processIdleEvents = true; m_runLoop = CFGetCurrentRunLoop(); @@ -223,18 +211,19 @@ wxCFEventLoop::wxCFEventLoop() m_commonModeRunLoopObserver = CFRunLoopObserverCreate( kCFAllocatorDefault, kCFRunLoopBeforeTimers | kCFRunLoopBeforeWaiting , true /* repeats */, 0, (CFRunLoopObserverCallBack) wxCFEventLoop::OSXCommonModeObserverCallBack, &ctxt ); CFRunLoopAddObserver(m_runLoop, m_commonModeRunLoopObserver, kCFRunLoopCommonModes); - CFRelease(m_commonModeRunLoopObserver); m_defaultModeRunLoopObserver = CFRunLoopObserverCreate( kCFAllocatorDefault, kCFRunLoopBeforeTimers | kCFRunLoopBeforeWaiting , true /* repeats */, 0, (CFRunLoopObserverCallBack) wxCFEventLoop::OSXDefaultModeObserverCallBack, &ctxt ); CFRunLoopAddObserver(m_runLoop, m_defaultModeRunLoopObserver, kCFRunLoopDefaultMode); - CFRelease(m_defaultModeRunLoopObserver); } wxCFEventLoop::~wxCFEventLoop() { CFRunLoopRemoveObserver(m_runLoop, m_commonModeRunLoopObserver, kCFRunLoopCommonModes); CFRunLoopRemoveObserver(m_runLoop, m_defaultModeRunLoopObserver, kCFRunLoopDefaultMode); + + CFRelease(m_defaultModeRunLoopObserver); + CFRelease(m_commonModeRunLoopObserver); } @@ -452,6 +441,20 @@ void wxCFEventLoop::Exit(int rc) DoStop(); } +wxCFEventLoopPauseIdleEvents::wxCFEventLoopPauseIdleEvents() +{ + wxCFEventLoop* cfl = dynamic_cast(wxEventLoopBase::GetActive()); + if ( cfl ) + cfl->SetProcessIdleEvents(false); +} + +wxCFEventLoopPauseIdleEvents::~wxCFEventLoopPauseIdleEvents() +{ + wxCFEventLoop* cfl = dynamic_cast(wxEventLoopBase::GetActive()); + if ( cfl ) + cfl->SetProcessIdleEvents(true); +} + // TODO Move to thread_osx.cpp #if wxUSE_THREADS