diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2023-04-21 17:28:43 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2023-04-21 14:59:34 +0000 |
commit | c95ade272b88af4835446f085440066bd5e34ccf (patch) | |
tree | 0eaa706c114304df67699479ed7a3c2b202b5b70 | |
parent | 7af8c225d11ac2dcfcebdecdc91f01b944c580c0 (diff) | |
download | qt-creator-c95ade272b88af4835446f085440066bd5e34ccf.tar.gz |
QmlDesigner: Abort lights baking if no response from quick3d side
Fixes: QDS-9666
Change-Id: I8721e1076bda7113dca9afde9998548e232a2186
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
3 files changed, 7 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/components/edit3d/bakelightsconnectionmanager.cpp b/src/plugins/qmldesigner/components/edit3d/bakelightsconnectionmanager.cpp index 201ca1d2e9..d2a6f3d332 100644 --- a/src/plugins/qmldesigner/components/edit3d/bakelightsconnectionmanager.cpp +++ b/src/plugins/qmldesigner/components/edit3d/bakelightsconnectionmanager.cpp @@ -34,7 +34,7 @@ void BakeLightsConnectionManager::dispatchCommand(const QVariant &command, m_progressCallback(cmd.data().toString()); break; case PuppetToCreatorCommand::BakeLightsAborted: - m_finishedCallback(tr("Baking aborted!")); + m_finishedCallback(tr("Baking aborted: %1").arg(cmd.data().toString())); break; case PuppetToCreatorCommand::BakeLightsFinished: m_finishedCallback(tr("Baking finished!")); diff --git a/src/tools/qml2puppet/qml2puppet/instances/qt5bakelightsnodeinstanceserver.cpp b/src/tools/qml2puppet/qml2puppet/instances/qt5bakelightsnodeinstanceserver.cpp index 9a8fc9489a..d7a8b313ac 100644 --- a/src/tools/qml2puppet/qml2puppet/instances/qt5bakelightsnodeinstanceserver.cpp +++ b/src/tools/qml2puppet/qml2puppet/instances/qt5bakelightsnodeinstanceserver.cpp @@ -93,6 +93,7 @@ void Qt5BakeLightsNodeInstanceServer::bakeLights() QQuick3DLightmapBaker::Callback callback = [this](QQuick3DLightmapBaker::BakingStatus status, std::optional<QString> msg, QQuick3DLightmapBaker::BakingControl *) { + m_callbackReceived = true; switch (status) { case QQuick3DLightmapBaker::BakingStatus::Progress: case QQuick3DLightmapBaker::BakingStatus::Warning: @@ -224,8 +225,11 @@ void Qt5BakeLightsNodeInstanceServer::render() } else { rootNodeInstance().updateDirtyNodeRecursive(); renderWindow(); - if (m_bakingStarted) + if (m_bakingStarted) { slowDownRenderTimer(); // No more renders needed + if (!m_callbackReceived) + abort(tr("No bakeable models detected.")); + } } } #endif diff --git a/src/tools/qml2puppet/qml2puppet/instances/qt5bakelightsnodeinstanceserver.h b/src/tools/qml2puppet/qml2puppet/instances/qt5bakelightsnodeinstanceserver.h index fc99adc902..0a92ccdf8f 100644 --- a/src/tools/qml2puppet/qml2puppet/instances/qt5bakelightsnodeinstanceserver.h +++ b/src/tools/qml2puppet/qml2puppet/instances/qt5bakelightsnodeinstanceserver.h @@ -45,6 +45,7 @@ private: QQuick3DViewport *m_view3D = nullptr; bool m_bakingStarted = false; + bool m_callbackReceived = false; int m_renderCount = 0; QProcess *m_denoiser = nullptr; QTemporaryDir m_workingDir; |