From 5bade2ef9aabb89dc4f9e63d420afabfb6c1e057 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 1 Dec 2016 14:09:36 -0800 Subject: [PATCH 1/2] 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; }; From 12ccbdac0b2ac601225c2dd793a77bd6e362ec23 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 1 Dec 2016 19:46:08 -0800 Subject: [PATCH 2/2] Actually render polylines --- .../entities-renderer/src/RenderablePolyLineEntityItem.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index 4c1f21adb6..a34a1814b4 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -162,9 +162,7 @@ void RenderablePolyLineEntityItem::update(const quint64& now) { memcpy(&_uniformBuffer.edit(), &uniforms, sizeof(PolyLineUniforms)); if (_pointsChanged || _strokeWidthsChanged || _normalsChanged) { QWriteLocker lock(&_quadReadWriteLock); - if (_points.size() < 2 || _normals.size() < 2 || _strokeWidths.size() < 2) { - _empty = true; - } + _empty = (_points.size() < 2 || _normals.size() < 2 || _strokeWidths.size() < 2); if (!_empty) { updateVertices(); updateGeometry();