From c15161b71afa8aff8e662df55965bf4cd4450e80 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 28 Jul 2015 14:56:38 -0700 Subject: [PATCH] fix crash in Particle Entities and pendingChanges.updateItem() --- interface/src/Application.cpp | 1 - libraries/entities-renderer/src/EntityTreeRenderer.cpp | 1 - .../src/RenderableParticleEffectEntityItem.cpp | 4 +--- libraries/render/src/render/Scene.cpp | 2 +- 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8605030795..6ea9d91dc2 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3482,7 +3482,6 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se pendingChanges.resetItem(WorldBoxRenderData::_item, worldBoxRenderPayload); } else { - pendingChanges.updateItem(WorldBoxRenderData::_item, [](WorldBoxRenderData& payload) { payload._val++; diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index adc6ae9de2..7812ebfba2 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -93,7 +93,6 @@ void EntityTreeRenderer::clear() { auto scene = _viewState->getMain3DScene(); render::PendingChanges pendingChanges; - foreach(auto entity, _entitiesInScene) { entity->removeFromScene(entity, scene, pendingChanges); } diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 2b4626c2c3..63b83badb7 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -174,7 +174,6 @@ uint32_t toRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { } void RenderableParticleEffectEntityItem::updateRenderItem() { - if (!_scene) { return; } @@ -212,8 +211,7 @@ void RenderableParticleEffectEntityItem::updateRenderItem() { } render::PendingChanges pendingChanges; - pendingChanges.updateItem(_renderItemId, [&](ParticlePayload& payload) { - + pendingChanges.updateItem(_renderItemId, [this](ParticlePayload& payload) { // update vertex buffer auto vertexBuffer = payload.getVertexBuffer(); size_t numBytes = sizeof(Vertex) * _vertices.size(); diff --git a/libraries/render/src/render/Scene.cpp b/libraries/render/src/render/Scene.cpp index 4e1087d142..fb6782e011 100644 --- a/libraries/render/src/render/Scene.cpp +++ b/libraries/render/src/render/Scene.cpp @@ -184,8 +184,8 @@ void Scene::processPendingChangesQueue() { // Now we know for sure that we have enough items in the array to // capture anything coming from the pendingChanges resetItems(consolidatedPendingChanges._resetItems, consolidatedPendingChanges._resetPayloads); - removeItems(consolidatedPendingChanges._removedItems); updateItems(consolidatedPendingChanges._updatedItems, consolidatedPendingChanges._updateFunctors); + removeItems(consolidatedPendingChanges._removedItems); // ready to go back to rendering activities _itemsMutex.unlock();