From 83f787ba2137594f12c7bd0659dc3c2fb973598f Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sun, 10 Dec 2006 13:19:50 +0000 Subject: [PATCH] switching to autorelease git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43894 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/toolbar.cpp | 10 +++++++--- src/mac/carbon/utils.cpp | 6 ++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/mac/carbon/toolbar.cpp b/src/mac/carbon/toolbar.cpp index d3fcb494ac..61fdc4325a 100644 --- a/src/mac/carbon/toolbar.cpp +++ b/src/mac/carbon/toolbar.cpp @@ -19,6 +19,7 @@ #include "wx/wx.h" #endif +#include "wx/app.h" #include "wx/mac/uma.h" #include "wx/geometry.h" @@ -115,7 +116,8 @@ public: { CFIndex count = CFGetRetainCount( m_toolbarItemRef ) ; wxASSERT_MSG( count == 1 , wxT("Reference Count of native tool was not 1 in wxToolBarTool destructor") ); - CFRelease( m_toolbarItemRef ); + wxTheApp->MacAddToAutorelease(m_toolbarItemRef); + CFRelease(m_toolbarItemRef); m_toolbarItemRef = NULL; } #endif @@ -615,9 +617,11 @@ static pascal OSStatus ControlToolbarItemHandler( EventHandlerCallRef inCallRef, // we've increased the ref count when creating this, so we decrease manually again in case // it was never really installed and deinstalled HIViewRef viewRef = object->viewRef ; - if( viewRef && CFGetRetainCount( viewRef ) > 1 ) + if( viewRef && IsValidControlHandle( viewRef) ) { - CFRelease( viewRef ) ; + CFIndex count = CFGetRetainCount( viewRef ) ; + if ( count >= 1 ) + CFRelease( viewRef ) ; } free( object ) ; result = noErr; diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp index 8e7cf1af16..85a38d0b49 100644 --- a/src/mac/carbon/utils.cpp +++ b/src/mac/carbon/utils.cpp @@ -865,10 +865,8 @@ void wxMacControl::Dispose() { wxASSERT_MSG( IsValidControlHandle(m_controlRef) , wxT("Invalid Control Handle (maybe already released) in Dispose") ); - CFIndex count = CFGetRetainCount( m_controlRef ) ; - wxASSERT_MSG( count == 1 , wxT("Reference Count of native control was not 1 in Dispose") ); - - ::DisposeControl( m_controlRef ); + // we cannot check the ref count here anymore, as autorelease objects might delete their refs later + CFRelease(m_controlRef); m_controlRef = NULL; } -- 2.45.2