event_posted_context.perform = macPostedEventCallback;
m_macEventPosted = CFRunLoopSourceCreate(NULL,0,&event_posted_context);
CFRunLoopAddSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
+ // run loop takes ownership
+ CFRelease(m_macEventPosted);
#endif
UMAShowArrowCursor() ;
#ifdef __WXMAC_OSX__
if (m_macEventPosted)
- CFRelease(m_macEventPosted);
- m_macEventPosted = NULL;
+ {
+ CFRunLoopRemoveSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
+ m_macEventPosted = NULL;
+ }
#endif
// One last chance for pending objects to be cleaned up
// Override to process unhandled events as you please
}
+CFMutableArrayRef GetAutoReleaseArray()
+{
+ static CFMutableArrayRef array = 0;
+ if ( array == 0)
+ array= CFArrayCreateMutable(kCFAllocatorDefault,0,&kCFTypeArrayCallBacks);
+ return array;
+}
+
void wxApp::MacHandleOneEvent( WXEVENTREF evr )
{
EventTargetRef theTarget;
#if wxUSE_THREADS
wxMutexGuiLeaveOrEnter();
#endif // wxUSE_THREADS
+
+ CFArrayRemoveAllValues( GetAutoReleaseArray() );
+}
+
+void wxApp::MacAddToAutorelease( void* cfrefobj )
+{
+ CFArrayAppendValue( GetAutoReleaseArray(), cfrefobj );
}
long wxMacTranslateKey(unsigned char key, unsigned char code)