Fix crash in QCocoaBackingStore.
QWindow->handle() may be null during construction, and also during calls to resize(). Get and check the pointer at each call instead of caching it in the constructor. Change-Id: Icd950b55e16fdd2077e3b7fe3c3393d8b89b5903 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
This commit is contained in:
parent
65ae2151c3
commit
fb8cd418fb
@ -63,7 +63,6 @@ public:
|
||||
bool scroll(const QRegion &area, int dx, int dy);
|
||||
|
||||
private:
|
||||
QCocoaWindow *m_cocoaWindow;
|
||||
QImage *m_image;
|
||||
};
|
||||
|
||||
|
@ -50,7 +50,6 @@ QT_BEGIN_NAMESPACE
|
||||
QCocoaBackingStore::QCocoaBackingStore(QWindow *window)
|
||||
: QPlatformBackingStore(window)
|
||||
{
|
||||
m_cocoaWindow = static_cast<QCocoaWindow *>(window->handle());
|
||||
m_image = new QImage(window->geometry().size(),QImage::Format_ARGB32_Premultiplied);
|
||||
}
|
||||
|
||||
@ -72,14 +71,19 @@ void QCocoaBackingStore::flush(QWindow *widget, const QRegion ®ion, const QPo
|
||||
|
||||
QRect geo = region.boundingRect();
|
||||
NSRect rect = NSMakeRect(geo.x(), geo.y(), geo.width(), geo.height());
|
||||
[m_cocoaWindow->m_contentView displayRect:rect];
|
||||
QCocoaWindow *cocoaWindow = static_cast<QCocoaWindow *>(window()->handle());
|
||||
if (cocoaWindow)
|
||||
[cocoaWindow->m_contentView displayRect:rect];
|
||||
}
|
||||
|
||||
void QCocoaBackingStore::resize(const QSize &size, const QRegion &)
|
||||
{
|
||||
delete m_image;
|
||||
m_image = new QImage(size, QImage::Format_ARGB32_Premultiplied);
|
||||
[static_cast<QNSView *>(m_cocoaWindow->m_contentView) setImage:m_image];
|
||||
|
||||
QCocoaWindow *cocoaWindow = static_cast<QCocoaWindow *>(window()->handle());
|
||||
if (cocoaWindow)
|
||||
[static_cast<QNSView *>(cocoaWindow->m_contentView) setImage:m_image];
|
||||
}
|
||||
|
||||
bool QCocoaBackingStore::scroll(const QRegion &area, int dx, int dy)
|
||||
|
Loading…
Reference in New Issue
Block a user