diff options
| author | Samuel Rødal <[email protected]> | 2013-05-14 13:50:31 +0200 |
|---|---|---|
| committer | The Qt Project <[email protected]> | 2013-05-22 15:23:59 +0200 |
| commit | f3aad61120d5cc8029c7092b1f74e2b5b632f99b (patch) | |
| tree | d2c2a340e1088b445875214c616e7244694d5805 /src/opengl/qgl_qpa.cpp | |
| parent | 3c50917a6ac1ee7fd4707d69a8ca186343c21f91 (diff) | |
Fixed crash associated with reparenting a QGLWidget
We need to make sure that we don't reset() the context when the
QGLWidget is being reparented, as that will lead to the QOpenGLContext
being destroyed and not recreated, leading to a crash in makeCurrent().
Also, don't destroy() the widget if it has not yet been created, as in
that case there's no ParentAboutToChange event sent.
Task-number: QTBUG-31016
Change-Id: I409fff94456802a80bd72b470a6fbaee87505baa
Reviewed-by: Friedemann Kleint <[email protected]>
Reviewed-by: Andy Nichols <[email protected]>
Diffstat (limited to 'src/opengl/qgl_qpa.cpp')
| -rw-r--r-- | src/opengl/qgl_qpa.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp index f3388ee5efc..6e698bf9399 100644 --- a/src/opengl/qgl_qpa.cpp +++ b/src/opengl/qgl_qpa.cpp @@ -362,6 +362,15 @@ void QGLWidgetPrivate::cleanupColormaps() bool QGLWidget::event(QEvent *e) { + Q_D(QGLWidget); + + // A re-parent will destroy the window and re-create it. We should not reset the context while it happens. + if (e->type() == QEvent::ParentAboutToChange) + d->parent_changing = true; + + if (e->type() == QEvent::ParentChange) + d->parent_changing = false; + return QWidget::event(e); } |
