Don't crash on Android
authorPaul Olav Tvete <paul.tvete@digia.com>
Wed, 21 May 2014 12:10:02 +0000 (14:10 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 21 May 2014 14:20:35 +0000 (16:20 +0200)
If the platform plugin does not support the features needed
for QQuickWidget, then don't try to use it. This is a minimal
change to stop applications from crashing: it does not give
the application a way to find out if QQuickWidget is supported,
since that would mean new API, which we can't do in a patch
release.

Task-number: QTBUG-38268
Change-Id: I975a03b105b1d5c21a1d8ae440a5802ce8c1967b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
src/quickwidgets/qquickwidget.cpp

index 7e31c27..687aeab 100644 (file)
@@ -55,6 +55,8 @@
 #include <private/qqmlengine_p.h>
 #include <QtCore/qbasictimer.h>
 #include <QtGui/QOffscreenSurface>
+#include <QtGui/private/qguiapplication_p.h>
+#include <QtGui/qpa/qplatformintegration.h>
 
 #ifdef Q_OS_WIN
 #  include <QtWidgets/QMessageBox>
@@ -89,7 +91,11 @@ void QQuickWidgetPrivate::init(QQmlEngine* e)
     // Do not call create() on offscreenWindow.
     createOffscreenSurface();
 
-    setRenderToTexture();
+    if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::RasterGLSurface))
+        setRenderToTexture();
+    else
+        qWarning("QQuickWidget is not supported on this platform.");
+
     engine = e;
 
     if (engine.isNull())