Details
Description
Deleting last View3D of a window deletes also the render context, which is not recreated properly for the next created view. Use attached example to repro.
A simple workaround is to always have a permanent dummy View3D in windows where you dynamically create and delete views.
call stack:
1 QHash<QSSGRenderPath,QSSGRenderMesh *>::isEmpty qhash.h 799 0x7ff9e4a0c33e 2 QHash<QSSGRenderPath,QSSGRenderMesh *>::find qhash.h 1083 0x7ff9e4a07582 3 QHash<QSSGRenderPath,QSSGRenderMesh *>::constFind qhash.h 1092 0x7ff9e49fe1c7 4 QSSGBufferManager::loadMesh qssgrenderbuffermanager.cpp 1375 0x7ff9e49d6907 5 QSSGBufferManager::loadMesh qssgrenderbuffermanager.cpp 1119 0x7ff9e49d3040 6 QSSGRenderModel::getModelBounds qssgrendermodel.cpp 49 0x7ff9e494e2e5 7 QQuick3DSceneManager::updateBoundingBoxes qquick3dscenemanager.cpp 111 0x7ff9e42b376a 8 QQuick3DSceneRenderer::synchronize qquick3dscenerenderer.cpp 571 0x7ff9e42b9b0c 9 QQuick3DViewport::updatePaintNode qquick3dviewport.cpp 382 0x7ff9e42e0ec5 10 QQuickWindowPrivate::updateDirtyNode qquickwindow.cpp 3755 0x7ff9dc502baf 11 QQuickWindowPrivate::updateDirtyNodes qquickwindow.cpp 3501 0x7ff9dc5019dd 12 QQuickWindowPrivate::syncSceneGraph qquickwindow.cpp 597 0x7ff9dc500837 13 QSGRenderThread::sync qsgthreadedrenderloop.cpp 595 0x7ff9dc40c5d1 14 QSGRenderThread::syncAndRender qsgthreadedrenderloop.cpp 736 0x7ff9dc40bb98 15 QSGRenderThread::run qsgthreadedrenderloop.cpp 995 0x7ff9dc40adf0 16 QThreadPrivate::start qthread_win.cpp 328 0x7ff9e2a8d874 17 BaseThreadInitThunk KERNEL32 0x7ffa487d7974 18 RtlUserThreadStart ntdll 0x7ffa4b60a271
Attachments
For Gerrit Dashboard: QTBUG-87678 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
319719,7 | Fix crash when deleting view3d | dev | qt/qtquick3d | Status: MERGED | +2 | 0 |