mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-05 04:00:48 +02:00
keep tree locked until after endScene
This commit is contained in:
parent
b2f64b9362
commit
d97d1119c7
1 changed files with 25 additions and 23 deletions
|
@ -258,19 +258,20 @@ void EntityTreeRenderer::render(RenderArgs::RenderMode renderMode) {
|
||||||
if (dontRenderAsScene) {
|
if (dontRenderAsScene) {
|
||||||
OctreeRenderer::render(renderMode);
|
OctreeRenderer::render(renderMode);
|
||||||
} else {
|
} else {
|
||||||
|
if (_tree) {
|
||||||
Model::startScene();
|
Model::startScene();
|
||||||
RenderArgs args = { this, _viewFrustum, getSizeScale(), getBoundaryLevelAdjust(), renderMode,
|
RenderArgs args = { this, _viewFrustum, getSizeScale(), getBoundaryLevelAdjust(), renderMode,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||||
if (_tree) {
|
|
||||||
_tree->lockForRead();
|
_tree->lockForRead();
|
||||||
_tree->recurseTreeWithOperation(renderOperation, &args);
|
_tree->recurseTreeWithOperation(renderOperation, &args);
|
||||||
_tree->unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
Model::RenderMode modelRenderMode = renderMode == RenderArgs::SHADOW_RENDER_MODE
|
Model::RenderMode modelRenderMode = renderMode == RenderArgs::SHADOW_RENDER_MODE
|
||||||
? Model::SHADOW_RENDER_MODE : Model::DEFAULT_RENDER_MODE;
|
? Model::SHADOW_RENDER_MODE : Model::DEFAULT_RENDER_MODE;
|
||||||
|
|
||||||
|
// we must call endScene while we still have the tree locked so that no one deletes a model
|
||||||
|
// on us while rendering the scene
|
||||||
Model::endScene(modelRenderMode, &args);
|
Model::endScene(modelRenderMode, &args);
|
||||||
|
_tree->unlock();
|
||||||
|
|
||||||
// stats...
|
// stats...
|
||||||
_meshesConsidered = args._meshesConsidered;
|
_meshesConsidered = args._meshesConsidered;
|
||||||
|
@ -290,6 +291,7 @@ void EntityTreeRenderer::render(RenderArgs::RenderMode renderMode) {
|
||||||
_translucentMeshPartsRendered = args._translucentMeshPartsRendered;
|
_translucentMeshPartsRendered = args._translucentMeshPartsRendered;
|
||||||
_opaqueMeshPartsRendered = args._opaqueMeshPartsRendered;
|
_opaqueMeshPartsRendered = args._opaqueMeshPartsRendered;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
deleteReleasedModels(); // seems like as good as any other place to do some memory cleanup
|
deleteReleasedModels(); // seems like as good as any other place to do some memory cleanup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue