diff options
author | Kim Motoyoshi Kalland <kim.kalland@nokia.com> | 2009-10-16 15:53:10 (GMT) |
---|---|---|
committer | Kim Motoyoshi Kalland <kim.kalland@nokia.com> | 2009-10-16 16:03:42 (GMT) |
commit | 4a0e3170c779a6a37954c3dfcfd0b9f0ce144701 (patch) | |
tree | 4ce0a56d99f079df6d593f66ef99b6691d901595 /src | |
parent | 943290b3e72c9d9081ad95489a4319889e1a073a (diff) | |
download | Qt-4a0e3170c779a6a37954c3dfcfd0b9f0ce144701.zip Qt-4a0e3170c779a6a37954c3dfcfd0b9f0ce144701.tar.gz Qt-4a0e3170c779a6a37954c3dfcfd0b9f0ce144701.tar.bz2 |
Fixed crash in the Boxes demo when using -graphicssystem opengl.
QGLWindowSurface::flush() assumed that updateGeometry() had been
called, but in some cases it hadn't. It would therefore dereference a
null pointer and crash. This has been fixed by returning from flush()
if updateGeometry() has not been called. This fixes the symptom rather
than the bug, so we still need to find out why it hasn't been called.
Reviewed-by: Trond
Diffstat (limited to 'src')
-rw-r--r-- | src/opengl/qwindowsurface_gl.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp index 7f8577a..e6afed8 100644 --- a/src/opengl/qwindowsurface_gl.cpp +++ b/src/opengl/qwindowsurface_gl.cpp @@ -428,6 +428,12 @@ void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint & return; } + //### Find out why d_ptr->geometry_updated isn't always false. + // flush() should not be called when d_ptr->geometry_updated is true. It assumes that either + // d_ptr->fbo or d_ptr->pb is allocated and has the correct size. + if (d_ptr->geometry_updated) + return; + QWidget *parent = widget->internalWinId() ? widget : widget->nativeParentWidget(); Q_ASSERT(parent); |