From: Gunnar Sletta Date: Fri, 25 Nov 2011 13:02:12 +0000 (+0100) Subject: Introduce QWindowSystemInterface::handleSynchronousCloseEvent X-Git-Tag: qt-v5.0.0-alpha1~2528 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ac188d9582af49fd1bd8de992fddd4740abb5ce3;p=profile%2Fivi%2Fqtbase.git Introduce QWindowSystemInterface::handleSynchronousCloseEvent And use it from the Cocoa backend. In general, for threaded GL rendering to work, any function that affect the surface must be synchronous, so the implementor (such as QQuickCanvas) can pick it up and block until the GL context has released the surface. Otherwise, we will crash. Change-Id: Id8484dac7452fe96fa80ade4ea321145f32124b4 Reviewed-by: Samuel Rødal --- diff --git a/src/gui/kernel/qwindowsysteminterface_qpa.cpp b/src/gui/kernel/qwindowsysteminterface_qpa.cpp index 4a704d8..17a5bb4 100644 --- a/src/gui/kernel/qwindowsysteminterface_qpa.cpp +++ b/src/gui/kernel/qwindowsysteminterface_qpa.cpp @@ -108,6 +108,14 @@ void QWindowSystemInterface::handleCloseEvent(QWindow *tlw) } } +void QWindowSystemInterface::handleSynchronousCloseEvent(QWindow *tlw) +{ + if (tlw) { + QWindowSystemInterfacePrivate::CloseEvent e(tlw); + QGuiApplicationPrivate::processWindowSystemEvent(&e); + } +} + /*! \a tlw == 0 means that \a ev is in global coords only diff --git a/src/gui/kernel/qwindowsysteminterface_qpa.h b/src/gui/kernel/qwindowsysteminterface_qpa.h index 7102a0f..04e8a6e 100644 --- a/src/gui/kernel/qwindowsysteminterface_qpa.h +++ b/src/gui/kernel/qwindowsysteminterface_qpa.h @@ -98,6 +98,7 @@ public: static void handleGeometryChange(QWindow *w, const QRect &newRect); static void handleSynchronousGeometryChange(QWindow *w, const QRect &newRect); static void handleCloseEvent(QWindow *w); + static void handleSynchronousCloseEvent(QWindow *w); static void handleEnterEvent(QWindow *w); static void handleLeaveEvent(QWindow *w); static void handleWindowActivated(QWindow *w); diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 9caade6..de38db5 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -233,7 +233,7 @@ void QCocoaWindow::windowDidResize() void QCocoaWindow::windowWillClose() { - QWindowSystemInterface::handleCloseEvent(window()); + QWindowSystemInterface::handleSynchronousCloseEvent(window()); } void QCocoaWindow::setCurrentContext(QCocoaGLContext *context)