From 5bade2ef9aabb89dc4f9e63d420afabfb6c1e057 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 1 Dec 2016 14:09:36 -0800 Subject: [PATCH] Add locking around the code that reads polyline entity data and builds GPU structures for them --- .../src/RenderablePolyLineEntityItem.cpp | 13 +++++++++---- .../src/RenderablePolyLineEntityItem.h | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index 286efb5fb8..4c1f21adb6 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -161,8 +161,14 @@ void RenderablePolyLineEntityItem::update(const quint64& now) { uniforms.color = toGlm(getXColor()); memcpy(&_uniformBuffer.edit(), &uniforms, sizeof(PolyLineUniforms)); if (_pointsChanged || _strokeWidthsChanged || _normalsChanged) { - updateVertices(); - updateGeometry(); + QWriteLocker lock(&_quadReadWriteLock); + if (_points.size() < 2 || _normals.size() < 2 || _strokeWidths.size() < 2) { + _empty = true; + } + if (!_empty) { + updateVertices(); + updateGeometry(); + } } } @@ -170,8 +176,7 @@ void RenderablePolyLineEntityItem::update(const quint64& now) { void RenderablePolyLineEntityItem::render(RenderArgs* args) { checkFading(); - QWriteLocker lock(&_quadReadWriteLock); - if (_points.size() < 2 || _normals.size () < 2 || _strokeWidths.size() < 2) { + if (_empty) { return; } diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h index 44b29bdec1..eca6b7035a 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.h @@ -50,6 +50,7 @@ protected: gpu::BufferPointer _verticesBuffer; gpu::BufferView _uniformBuffer; unsigned int _numVertices; + bool _empty { true }; QVector _vertices; };