Cocoa: Add autorelease pools.
A couple of cases where we call Cococa APIs without
having an autorelease pool in place surfaced after
removing the global autorelease pool in 1a218a7
.
(This happens when when Qt API is called before
app.exec() has started the Cocoa event loop.)
Add local autorelease pools to prevent memory leaks.
Change-Id: I0c4be3ff102aaff4539235857f95ab29fdbc9d70
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
This commit is contained in:
parent
6802e3165e
commit
82b73ab03a
@ -159,6 +159,8 @@ static QString familyNameFromPostScriptName(QHash<QString, QString> &psNameToFam
|
||||
|
||||
void QCoreTextFontDatabase::populateFontDatabase()
|
||||
{
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
QCFType<CTFontCollectionRef> collection = CTFontCollectionCreateFromAvailableFonts(0);
|
||||
if (! collection)
|
||||
return;
|
||||
@ -243,8 +245,6 @@ void QCoreTextFontDatabase::populateFontDatabase()
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSArray *languages = [defaults stringArrayForKey: @"AppleLanguages"];
|
||||
|
||||
NSAutoreleasePool *pool = [NSAutoreleasePool new];
|
||||
|
||||
NSDictionary *fallbackDict = [NSDictionary dictionaryWithContentsOfFile: @"/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreText.framework/Resources/DefaultFontFallbacks.plist"];
|
||||
|
||||
for (NSString *style in [fallbackDict allKeys]) {
|
||||
|
@ -40,6 +40,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "qcocoabackingstore.h"
|
||||
#include "qcocoaautoreleasepool.h"
|
||||
|
||||
#include <QtCore/qdebug.h>
|
||||
#include <QtGui/QPainter>
|
||||
@ -80,6 +81,7 @@ void QCocoaBackingStore::flush(QWindow *widget, const QRegion ®ion, const QPo
|
||||
{
|
||||
Q_UNUSED(widget);
|
||||
Q_UNUSED(offset);
|
||||
QCocoaAutoReleasePool pool;
|
||||
|
||||
QRect geo = region.boundingRect();
|
||||
|
||||
|
@ -90,6 +90,8 @@ QCocoaIntegration::QCocoaIntegration()
|
||||
: mFontDb(new QCoreTextFontDatabase())
|
||||
, mEventDispatcher(new QCocoaEventDispatcher())
|
||||
{
|
||||
QCocoaAutoReleasePool pool;
|
||||
|
||||
qApp->setAttribute(Qt::AA_DontUseNativeMenuBar, false);
|
||||
|
||||
NSApplication *cocoaApplication = [NSApplication sharedApplication];
|
||||
|
@ -129,6 +129,7 @@ void QCocoaWindow::setGeometry(const QRect &rect)
|
||||
|
||||
void QCocoaWindow::setVisible(bool visible)
|
||||
{
|
||||
QCocoaAutoReleasePool pool;
|
||||
if (visible) {
|
||||
// The parent window might have moved while this window was hidden,
|
||||
// update the window geometry if there is a parent.
|
||||
@ -146,6 +147,8 @@ void QCocoaWindow::setVisible(bool visible)
|
||||
|
||||
void QCocoaWindow::setWindowTitle(const QString &title)
|
||||
{
|
||||
QCocoaAutoReleasePool pool;
|
||||
|
||||
CFStringRef windowTitle = QCFString::toCFStringRef(title);
|
||||
[m_nsWindow setTitle: const_cast<NSString *>(reinterpret_cast<const NSString *>(windowTitle))];
|
||||
CFRelease(windowTitle);
|
||||
@ -164,6 +167,8 @@ void QCocoaWindow::lower()
|
||||
|
||||
void QCocoaWindow::propagateSizeHints()
|
||||
{
|
||||
QCocoaAutoReleasePool pool;
|
||||
|
||||
[m_nsWindow setMinSize : qt_mac_toNSSize(window()->minimumSize())];
|
||||
[m_nsWindow setMaxSize : qt_mac_toNSSize(window()->maximumSize())];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user