From 0b13f94a653538a5b91a003a7ff5353843346c81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 19 May 2014 21:09:13 +0200 Subject: [PATCH] Use std::reference_wrapper instead of raw pointer for non-null reference. --- src/Magnum/MeshView.cpp | 24 ++++++++++++------------ src/Magnum/MeshView.h | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Magnum/MeshView.cpp b/src/Magnum/MeshView.cpp index a4994d0cb..ee67b9a04 100644 --- a/src/Magnum/MeshView.cpp +++ b/src/Magnum/MeshView.cpp @@ -43,9 +43,9 @@ void MeshView::draw(AbstractShaderProgram& shader, std::initializer_listget()._original; + const Mesh* original = &meshes.begin()->get()._original.get(); for(MeshView& mesh: meshes) - CORRADE_ASSERT(mesh._original == original, "MeshView::draw(): all meshes must be views of the same original mesh", ); + CORRADE_ASSERT(&mesh._original.get() == original, "MeshView::draw(): all meshes must be views of the same original mesh", ); #endif #ifndef MAGNUM_TARGET_GLES @@ -60,7 +60,7 @@ void MeshView::multiDrawImplementationDefault(std::initializer_liststate().mesh; - Mesh& original = *meshes.begin()->get()._original; + Mesh& original = meshes.begin()->get()._original; Containers::Array count{meshes.size()}; Containers::Array indices{meshes.size()}; Containers::Array baseVertex{meshes.size()}; @@ -126,16 +126,16 @@ void MeshView::multiDrawImplementationDefault(std::initializer_list> meshes) { for(MeshView& mesh: meshes) { #ifndef MAGNUM_TARGET_GLES2 - mesh._original->drawInternal(mesh._count, mesh._baseVertex, mesh._instanceCount, mesh._indexOffset, mesh._indexStart, mesh._indexEnd); + mesh._original.drawInternal(mesh._count, mesh._baseVertex, mesh._instanceCount, mesh._indexOffset, mesh._indexStart, mesh._indexEnd); #else - mesh._original->drawInternal(mesh._count, mesh._baseVertex, mesh._instanceCount, mesh._indexOffset); + mesh._original.drawInternal(mesh._count, mesh._baseVertex, mesh._instanceCount, mesh._indexOffset); #endif } } #endif MeshView& MeshView::setIndexRange(Int first) { - _indexOffset = _original->_indexOffset + first*_original->indexSize(); + _indexOffset = _original.get()._indexOffset + first*_original.get().indexSize(); return *this; } @@ -143,22 +143,22 @@ void MeshView::draw(AbstractShaderProgram& shader) { shader.use(); #ifndef MAGNUM_TARGET_GLES - _original->drawInternal(_count, _baseVertex, _instanceCount, _baseInstance, _indexOffset, _indexStart, _indexEnd); + _original.get().drawInternal(_count, _baseVertex, _instanceCount, _baseInstance, _indexOffset, _indexStart, _indexEnd); #elif !defined(MAGNUM_TARGET_GLES2) - _original->drawInternal(_count, _baseVertex, _instanceCount, _indexOffset, _indexStart, _indexEnd); + _original.get().drawInternal(_count, _baseVertex, _instanceCount, _indexOffset, _indexStart, _indexEnd); #else - _original->drawInternal(_count, _baseVertex, _instanceCount, _indexOffset); + _original.get().drawInternal(_count, _baseVertex, _instanceCount, _indexOffset); #endif } #ifdef MAGNUM_BUILD_DEPRECATED void MeshView::draw() { #ifndef MAGNUM_TARGET_GLES - _original->drawInternal(_count, _baseVertex, _instanceCount, _baseInstance, _indexOffset, _indexStart, _indexEnd); + _original.get().drawInternal(_count, _baseVertex, _instanceCount, _baseInstance, _indexOffset, _indexStart, _indexEnd); #elif !defined(MAGNUM_TARGET_GLES2) - _original->drawInternal(_count, _baseVertex, _instanceCount, _indexOffset, _indexStart, _indexEnd); + _original.get().drawInternal(_count, _baseVertex, _instanceCount, _indexOffset, _indexStart, _indexEnd); #else - _original->drawInternal(_count, _baseVertex, _instanceCount, _indexOffset); + _original.get().drawInternal(_count, _baseVertex, _instanceCount, _indexOffset); #endif } #endif diff --git a/src/Magnum/MeshView.h b/src/Magnum/MeshView.h index b3446e575..fc9fcd01c 100644 --- a/src/Magnum/MeshView.h +++ b/src/Magnum/MeshView.h @@ -259,7 +259,7 @@ class MAGNUM_EXPORT MeshView { static MAGNUM_LOCAL void multiDrawImplementationDefault(std::initializer_list> meshes); static MAGNUM_LOCAL void multiDrawImplementationFallback(std::initializer_list> meshes); - Mesh* _original; + std::reference_wrapper _original; Int _count, _baseVertex, _instanceCount; #ifndef MAGNUM_TARGET_GLES @@ -271,7 +271,7 @@ class MAGNUM_EXPORT MeshView { #endif }; -inline MeshView::MeshView(Mesh& original): _original(&original), _count(0), _baseVertex(0), _instanceCount{1}, +inline MeshView::MeshView(Mesh& original): _original(original), _count(0), _baseVertex(0), _instanceCount{1}, #ifndef MAGNUM_TARGET_GLES _baseInstance{0}, #endif