diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-11-27 14:10:38 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-11-28 13:44:16 +0100 |
commit | d4cab2523cae58bd864770552da0332afe45585c (patch) | |
tree | 077b78e2061a7598f4bb3cdafd524d1f6d82e9ed /src/quick/scenegraph/qsgrenderloop.cpp | |
parent | a6fe62fcb4ee219cdf0ddea7936545785d896015 (diff) |
Make the initialization failure dialog sensible with QRhi
So on Windows one now gets a message box with a reasonable message,
instead of the OpenGL nonsense. Then the application closes when pressing
Abort etc.
On other platforms there is a qFatal, printing the same message.
Involves simplifying the OpenGL version a bit since passing isES type of
flags through multiple layers is not justified here.
Task-number: QTBUG-80365
Change-Id: Ie3ea1e9395a283f7e95eda78c1d3894797ff0acf
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'src/quick/scenegraph/qsgrenderloop.cpp')
-rw-r--r-- | src/quick/scenegraph/qsgrenderloop.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/quick/scenegraph/qsgrenderloop.cpp b/src/quick/scenegraph/qsgrenderloop.cpp index 5be7fbefe3..fb460f28d6 100644 --- a/src/quick/scenegraph/qsgrenderloop.cpp +++ b/src/quick/scenegraph/qsgrenderloop.cpp @@ -324,15 +324,19 @@ void QSGRenderLoop::setInstance(QSGRenderLoop *instance) s_instance = instance; } -void QSGRenderLoop::handleContextCreationFailure(QQuickWindow *window, - bool isEs) +void QSGRenderLoop::handleContextCreationFailure(QQuickWindow *window) { QString translatedMessage; QString untranslatedMessage; - QQuickWindowPrivate::contextCreationFailureMessage(window->requestedFormat(), + if (QSGRhiSupport::instance()->isRhiEnabled()) { + QQuickWindowPrivate::rhiCreationFailureMessage(QSGRhiSupport::instance()->rhiBackendName(), &translatedMessage, - &untranslatedMessage, - isEs); + &untranslatedMessage); + } else { + QQuickWindowPrivate::contextCreationFailureMessage(window->requestedFormat(), + &translatedMessage, + &untranslatedMessage); + } // If there is a slot connected to the error signal, emit it and leave it to // the application to do something with the message. If nothing is connected, // show a message on our own and terminate. @@ -551,7 +555,7 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window) } else { if (!data.rhiDeviceLost) { data.rhiDoomed = true; - handleContextCreationFailure(window, false); + handleContextCreationFailure(window); } // otherwise no error, will retry on a subsequent rendering attempt } @@ -562,10 +566,9 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window) if (qt_gl_global_share_context()) gl->setShareContext(qt_gl_global_share_context()); if (!gl->create()) { - const bool isEs = gl->isOpenGLES(); delete gl; gl = nullptr; - handleContextCreationFailure(window, isEs); + handleContextCreationFailure(window); } else { if (!offscreenSurface) { offscreenSurface = new QOffscreenSurface; |