aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-03-10 10:53:49 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-13 13:39:54 +0100
commitb8afc009afcca84a3fd3d5617dfe96c729c531aa (patch)
tree10bdbfb63b3aee36da0344cd8f05184b06b47f37 /src/quick/items
parentd6e932b3682c7f8cd610d7554a52c9856d7e67c1 (diff)
Consolidate context creation failure handling in Quick.
Add QQuickWidget::sceneGraphError() equivalent to QQuickWindow::sceneGraphError(), move message formatting code to QQuickWindowPrivate. Change-Id: I18cd4d7e0f6ee1011c29375218dc6a044b0d2cf2 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'src/quick/items')
-rw-r--r--src/quick/items/qquickwindow.cpp31
-rw-r--r--src/quick/items/qquickwindow_p.h5
2 files changed, 36 insertions, 0 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index d7a6f071c6..6a56a5dc82 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -65,6 +65,7 @@
#include <QtGui/qstylehints.h>
#include <QtCore/qvarlengtharray.h>
#include <QtCore/qabstractanimation.h>
+#include <QtCore/QLibraryInfo>
#include <QtQml/qqmlincubator.h>
#include <QtQuick/private/qquickpixmapcache_p.h>
@@ -2303,6 +2304,36 @@ bool QQuickWindowPrivate::isRenderable() const
return ((q->isExposed() && q->isVisible())) && q->geometry().isValid();
}
+void QQuickWindowPrivate::contextCreationFailureMessage(const QSurfaceFormat &format,
+ QString *translatedMessage,
+ QString *untranslatedMessage,
+ bool isEs)
+{
+ const QString contextType = QLatin1String(isEs ? "EGL" : "OpenGL");
+ QString formatStr;
+ QDebug(&formatStr) << format;
+#if defined(Q_OS_WIN32)
+ const bool isDebug = QLibraryInfo::isDebugBuild();
+ const QString eglLibName = QLatin1String(isDebug ? "libEGLd.dll" : "libEGL.dll");
+ const QString glesLibName = QLatin1String(isDebug ? "libGLESv2d.dll" : "libGLESv2.dll");
+ //: %1 Context type (Open GL, EGL), ANGLE %2, %3 library names
+ const char msg[] = QT_TRANSLATE_NOOP("QQuickWindow",
+ "Failed to create %1 context for format %2."
+ "This is most likely caused by not having the necessary graphics drivers installed.\n\n"
+ "Install a driver providing OpenGL 2.0 or higher, or, if this is not possible, "
+ "make sure the ANGLE Open GL ES 2.0 emulation libraries (%3, %4 and d3dcompiler_*.dll) "
+ "are available in the application executable's directory or in a location listed in PATH.");
+ *translatedMessage = QQuickWindow::tr(msg).arg(contextType, formatStr, eglLibName, glesLibName);
+ *untranslatedMessage = QString::fromLatin1(msg).arg(contextType, formatStr, eglLibName, glesLibName);
+#else // Q_OS_WIN32
+ //: %1 Context type (Open GL, EGL), %2 format specification
+ const char msg[] = QT_TRANSLATE_NOOP("QQuickWindow",
+ "Failed to create %1 context for format %2");
+ *translatedMessage = QQuickWindow::tr(msg).arg(contextType, formatStr);
+ *untranslatedMessage = QString::fromLatin1(msg).arg(contextType, formatStr);
+#endif // !Q_OS_WIN32
+}
+
/*!
Propagates an event \a e to a QQuickItem \a item on the window.
diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h
index e78f00c22f..421651b483 100644
--- a/src/quick/items/qquickwindow_p.h
+++ b/src/quick/items/qquickwindow_p.h
@@ -242,6 +242,11 @@ public:
static QObject *data_at(QQmlListProperty<QObject> *, int);
static void data_clear(QQmlListProperty<QObject> *);
+ static void contextCreationFailureMessage(const QSurfaceFormat &format,
+ QString *translatedMessage,
+ QString *untranslatedMessage,
+ bool isEs);
+
private:
static void cleanupNodesOnShutdown(QQuickItem *);
};