From 9608629d7ee42dd65437d2e7fad5c91438d7de4b Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 26 Feb 2015 13:00:39 +0100 Subject: OSX: fix leaks due to missing NSAutoreleasePool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit env OBJC_DEBUG_MISSING_POOLS=YES qtcreator Change-Id: Ibbe5f42af5b94a439be3f0dd0f2b6e34bb1afd3f Reviewed-by: Morten Johan Sørvig --- src/widgets/styles/qmacstyle_mac.mm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/widgets/styles/qmacstyle_mac.mm') diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 394d06843b..4f9ed2c325 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -93,6 +93,18 @@ QT_USE_NAMESPACE +namespace { +class AutoReleasePool +{ +public: + AutoReleasePool(): pool([[NSAutoreleasePool alloc] init]) {} + ~AutoReleasePool() { [pool release]; } + +private: + NSAutoreleasePool *pool; +}; +} + @interface QT_MANGLE_NAMESPACE(NotificationReceiver) : NSObject { QMacStylePrivate *mPrivate; } @@ -2122,6 +2134,8 @@ QMacStyle::QMacStyle() : QCommonStyle(*new QMacStylePrivate) { Q_D(QMacStyle); + AutoReleasePool pool; + d->receiver = [[NotificationReceiver alloc] initWithPrivate:d]; NotificationReceiver *receiver = static_cast(d->receiver); @@ -2137,6 +2151,8 @@ QMacStyle::QMacStyle() QMacStyle::~QMacStyle() { Q_D(QMacStyle); + AutoReleasePool pool; + [reinterpret_cast(d->nsscroller) release]; NotificationReceiver *receiver = static_cast(d->receiver); @@ -2152,6 +2168,7 @@ QMacStyle::~QMacStyle() */ QPixmap QMacStylePrivate::generateBackgroundPattern() const { + AutoReleasePool pool; QPixmap px(4, 4); QMacCGContext cg(&px); HIThemeSetFill(kThemeBrushDialogBackgroundActive, 0, cg, kHIThemeOrientationNormal); @@ -2749,6 +2766,8 @@ QPalette QMacStyle::standardPalette() const int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *hret) const { + AutoReleasePool pool; + SInt32 ret = 0; switch (sh) { case SH_Slider_SnapToValue: -- cgit v1.2.3