Cocoa: fix memory leaks
Change-Id: I2e805aa64c65b90d33924ea4a8671735dee581fd Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
This commit is contained in:
parent
715902051a
commit
8e22d05dc9
@ -66,6 +66,8 @@ class QT_PREPEND_NAMESPACE(QCocoaWindow);
|
||||
- (BOOL)canBecomeKeyWindow;
|
||||
@end
|
||||
|
||||
@class QNSWindowDelegate;
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
// QCocoaWindow
|
||||
//
|
||||
@ -157,6 +159,7 @@ public: // for QNSView
|
||||
|
||||
QNSView *m_contentView;
|
||||
NSWindow *m_nsWindow;
|
||||
QNSWindowDelegate *m_nsWindowDelegate;
|
||||
Qt::WindowFlags m_windowFlags;
|
||||
Qt::WindowState m_synchedWindowState;
|
||||
Qt::WindowModality m_windowModality;
|
||||
|
@ -186,6 +186,7 @@ static bool isMouseEvent(NSEvent *ev)
|
||||
QCocoaWindow::QCocoaWindow(QWindow *tlw)
|
||||
: QPlatformWindow(tlw)
|
||||
, m_nsWindow(0)
|
||||
, m_nsWindowDelegate(0)
|
||||
, m_synchedWindowState(Qt::WindowActive)
|
||||
, m_windowModality(Qt::NonModal)
|
||||
, m_inConstructor(true)
|
||||
@ -217,6 +218,7 @@ QCocoaWindow::~QCocoaWindow()
|
||||
clearNSWindow(m_nsWindow);
|
||||
[m_contentView release];
|
||||
[m_nsWindow release];
|
||||
[m_nsWindowDelegate release];
|
||||
}
|
||||
|
||||
void QCocoaWindow::setGeometry(const QRect &rect)
|
||||
@ -619,6 +621,8 @@ void QCocoaWindow::recreateWindow(const QPlatformWindow *parentWindow)
|
||||
[m_nsWindow close];
|
||||
[m_nsWindow release];
|
||||
m_nsWindow = 0;
|
||||
[m_nsWindowDelegate release];
|
||||
m_nsWindowDelegate = 0;
|
||||
}
|
||||
|
||||
if (!parentWindow) {
|
||||
@ -697,8 +701,8 @@ NSWindow * QCocoaWindow::createNSWindow()
|
||||
|
||||
void QCocoaWindow::setNSWindow(NSWindow *window)
|
||||
{
|
||||
QNSWindowDelegate *delegate = [[QNSWindowDelegate alloc] initWithQCocoaWindow:this];
|
||||
[window setDelegate:delegate];
|
||||
m_nsWindowDelegate = [[QNSWindowDelegate alloc] initWithQCocoaWindow:this];
|
||||
[window setDelegate:m_nsWindowDelegate];
|
||||
[window setAcceptsMouseMovedEvents:YES];
|
||||
|
||||
// Prevent Cocoa from releasing the window on close. Qt
|
||||
|
@ -193,7 +193,10 @@ QMacPasteboard::hasOSType(int c_flavor) const
|
||||
const int type_count = CFArrayGetCount(types);
|
||||
for (int i = 0; i < type_count; ++i) {
|
||||
CFStringRef flavor = (CFStringRef)CFArrayGetValueAtIndex(types, i);
|
||||
const int os_flavor = UTGetOSTypeFromString(UTTypeCopyPreferredTagWithClass(flavor, kUTTagClassOSType));
|
||||
CFStringRef preferredTag = UTTypeCopyPreferredTagWithClass(flavor, kUTTagClassOSType);
|
||||
const int os_flavor = UTGetOSTypeFromString(preferredTag);
|
||||
if (preferredTag)
|
||||
CFRelease(preferredTag);
|
||||
if (os_flavor == c_flavor) {
|
||||
#ifdef DEBUG_PASTEBOARD
|
||||
qDebug(" - Found!");
|
||||
|
@ -263,6 +263,7 @@ static CGImageRef qt_mac_toCGImage(QImage *qImage, bool isMask, uchar **dataCopy
|
||||
kCGRenderingIntentDefault);
|
||||
CGColorSpaceRelease(cgColourSpaceRef);
|
||||
}
|
||||
CGDataProviderRelease(cgDataProviderRef);
|
||||
return cgImage;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user