attempt to fix material crash

This commit is contained in:
SamGondelman 2019-05-17 14:47:38 -07:00
parent 024dfbf8b7
commit 0039fb2f54

View file

@ -1577,9 +1577,11 @@ void Model::applyMaterialMapping() {
priorityMapPerResource[shapeID] = ++_priorityMap[shapeID]; priorityMapPerResource[shapeID] = ++_priorityMap[shapeID];
} }
auto materialLoaded = [this, networkMaterialResource, shapeIDs, priorityMapPerResource, renderItemsKey, primitiveMode, useDualQuaternionSkinning, std::weak_ptr<Model> weakSelf = shared_from_this();
modelMeshRenderItemIDs, modelMeshRenderItemShapes, shouldInvalidatePayloadShapeKeyMap]() { auto materialLoaded = [networkMaterialResource, shapeIDs, priorityMapPerResource, renderItemsKey, primitiveMode, useDualQuaternionSkinning,
if (networkMaterialResource->isFailed() || networkMaterialResource->parsedMaterials.names.size() == 0) { modelMeshRenderItemIDs, modelMeshRenderItemShapes, shouldInvalidatePayloadShapeKeyMap, weakSelf]() {
std::shared_ptr<Model> self = weakSelf.lock();
if (!self || networkMaterialResource->isFailed() || networkMaterialResource->parsedMaterials.names.size() == 0) {
return; return;
} }
render::Transaction transaction; render::Transaction transaction;
@ -1607,8 +1609,8 @@ void Model::applyMaterialMapping() {
bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKeyMap.at(meshIndex); bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKeyMap.at(meshIndex);
graphics::MaterialLayer material = graphics::MaterialLayer(networkMaterial, priorityMapPerResource.at(shapeID)); graphics::MaterialLayer material = graphics::MaterialLayer(networkMaterial, priorityMapPerResource.at(shapeID));
{ {
std::unique_lock<std::mutex> lock(_materialMappingMutex); std::unique_lock<std::mutex> lock(self->_materialMappingMutex);
_materialMapping[shapeID].push_back(material); self->_materialMapping[shapeID].push_back(material);
} }
transaction.updateItem<ModelMeshPartPayload>(itemID, [material, renderItemsKey, transaction.updateItem<ModelMeshPartPayload>(itemID, [material, renderItemsKey,
invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning](ModelMeshPartPayload& data) { invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning](ModelMeshPartPayload& data) {