From a17e68fd66e9232f3d4e74543680b52277578f04 Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Mon, 23 Aug 2010 12:29:03 +0300 Subject: QWidget metadata has not been set up yet in QWidgetPrivate::init. q->inherits("QGLWidget") gives incorrect result, so use QWidgetPrivate::isGLWidget variable instead. Reviewed-by: Jason Barron --- src/gui/kernel/qwidget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 8b8641f..3d2bfe2 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -1275,9 +1275,9 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f) //give potential windows a bigger "pre-initial" size; create_sys() will give them a new size later #ifdef Q_OS_SYMBIAN - if(q->inherits("QGLWidget")) { + if (isGLWidget) { // Don't waste GPU mem for unnecessary large egl surface - data.crect = parentWidget ? QRect(0,0,2,2) : QRect(0,0,2,2); + data.crect = QRect(0,0,2,2); } else { data.crect = parentWidget ? QRect(0,0,100,30) : QRect(0,0,360,640); } -- cgit v0.12 From 1d13522190346b20bf079ae48ce919c9e15a2c7a Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Mon, 23 Aug 2010 12:54:49 +0300 Subject: On Symbian QGLWidget::glDraw() must do nothing if widget isn't visible. Otherwise application crashes because rendering to invisible window surface will panic eventually. Reviewed-by: Trond --- src/opengl/qgl.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 51187cf..9e69816 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -4445,6 +4445,11 @@ void QGLWidget::glDraw() Q_D(QGLWidget); if (!isValid()) return; +#ifdef Q_OS_SYMBIAN + // Crashes on Symbian if trying to render to invisible surfaces + if (!isVisible() && d->glcx->device()->devType() == QInternal::Widget) + return; +#endif makeCurrent(); #ifndef QT_OPENGL_ES if (d->glcx->deviceIsPixmap()) -- cgit v0.12