iOS: Send expose event when a window changes the geometry.

When the EAGLView view changes its layout, it must send the expose event
along with the geometry change. It is important to notify the render loop
of the scene graph that the windows's geometry has changed. The render loop
is waiting for the WM_Expose event and updates the scene's window size accordingly.
See QSGRenderThread::event for reference.
Without this notification, the geometry of window is updated, but the scene is rendered
incorrectly, for example when the orientation of screen changes.

Change-Id: If102014313de455cb1f44d772b478d2feae6dacf
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
This commit is contained in:
Maciej Kujalowicz 2013-11-04 18:55:02 +01:00 committed by The Qt Project
parent d60e0c3bc1
commit f45e12f91a

View File

@ -142,6 +142,7 @@
QRect geometry = fromCGRect(self.frame);
m_qioswindow->QPlatformWindow::setGeometry(geometry);
QWindowSystemInterface::handleGeometryChange(m_qioswindow->window(), geometry);
QWindowSystemInterface::handleExposeEvent(m_qioswindow->window(), geometry);
// If we have a new size here we need to resize the FBO's corresponding buffers,
// but we defer that to when the application calls makeCurrent.