diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 5f50446b9e8..94f71cd52ff 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -800,8 +800,7 @@ void Qt5InformationNodeInstanceServer::doRender3DEditView() #else if (m_render2D) { // Render 2D content, as it might be used by 3D content - grabWindow(); - m_render2D = false; + m_render2D = !renderWindow(); } renderImage = grabRenderControl(m_editView3DData); #endif diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp index a669aad6fc9..3e75228b86c 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp @@ -308,6 +308,25 @@ QImage Qt5NodeInstanceServer::grabRenderControl(RenderViewData &viewData) return renderImage; } +// This method simply renders the window without grabbing it +bool Qt5NodeInstanceServer::renderWindow() +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + if (!m_viewData.rootItem || (m_viewData.bufferDirty && !initRhi(m_viewData))) + return false; + + m_viewData.renderControl->polishItems(); + m_viewData.renderControl->beginFrame(); + m_viewData.renderControl->sync(); + m_viewData.renderControl->render(); + m_viewData.renderControl->endFrame(); + return true; +#else + Q_UNUSED(viewData) +#endif + return false; +} + QImage Qt5NodeInstanceServer::grabWindow() { if (m_viewData.rootItem) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h index e6a2754f997..9a7d43635df 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h @@ -94,6 +94,7 @@ protected: virtual bool initRhi(RenderViewData &viewData); virtual QImage grabRenderControl(RenderViewData &viewData); + virtual bool renderWindow(); private: RenderViewData m_viewData;