CocoaPlugin: add missing auto release pools
authorRichard Moe Gustavsen <richard.gustavsen@nokia.com>
Thu, 6 Sep 2012 10:20:34 +0000 (12:20 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 12 Sep 2012 08:14:10 +0000 (10:14 +0200)
Add auto release pools to the entry functions of the plugin
that leads to mem leaks. By adding them as early as possible
in the callstack, we avoid creating to many pools

Change-Id: I715e06bd8d3280c6877340fc724eb1afbf804ae1
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
src/plugins/platforms/cocoa/qcocoamenu.mm
src/plugins/platforms/cocoa/qcocoamenubar.mm

index a39263e..efe6d2f 100644 (file)
@@ -109,6 +109,7 @@ QCocoaMenu::QCocoaMenu() :
 
 QCocoaMenu::~QCocoaMenu()
 {
+    QCocoaAutoReleasePool pool;
     [m_nativeItem setSubmenu:nil];
     [m_nativeMenu release];
     [m_delegate release];
@@ -125,6 +126,7 @@ void QCocoaMenu::setText(const QString &text)
 
 void QCocoaMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before)
 {
+    QCocoaAutoReleasePool pool;
     QCocoaMenuItem *cocoaItem = static_cast<QCocoaMenuItem *>(menuItem);
     QCocoaMenuItem *beforeItem = static_cast<QCocoaMenuItem *>(before);
 
@@ -168,6 +170,7 @@ void QCocoaMenu::insertNative(QCocoaMenuItem *item, QCocoaMenuItem *beforeItem)
 
 void QCocoaMenu::removeMenuItem(QPlatformMenuItem *menuItem)
 {
+    QCocoaAutoReleasePool pool;
     QCocoaMenuItem *cocoaItem = static_cast<QCocoaMenuItem *>(menuItem);
     Q_ASSERT(m_menuItems.contains(cocoaItem));
     m_menuItems.removeOne(cocoaItem);
@@ -187,6 +190,7 @@ QCocoaMenuItem *QCocoaMenu::itemOrNull(int index) const
 
 void QCocoaMenu::syncMenuItem(QPlatformMenuItem *menuItem)
 {
+    QCocoaAutoReleasePool pool;
     QCocoaMenuItem *cocoaItem = static_cast<QCocoaMenuItem *>(menuItem);
     Q_ASSERT(m_menuItems.contains(cocoaItem));
 
index dd22e61..e57a339 100644 (file)
@@ -83,6 +83,7 @@ QCocoaMenuBar::~QCocoaMenuBar()
 
 void QCocoaMenuBar::insertMenu(QPlatformMenu *platformMenu, QPlatformMenu *before)
 {
+    QCocoaAutoReleasePool pool;
     QCocoaMenu *menu = static_cast<QCocoaMenu *>(platformMenu);
     QCocoaMenu *beforeMenu = static_cast<QCocoaMenu *>(before);
 #ifdef QT_COCOA_ENABLE_MENU_DEBUG