From 4d538c945354aa63f19ffd698f77f27d99f91e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 16:06:21 +0200 Subject: [PATCH] GCC 4.4 compatibility: std::reference_wrapper-related issues. --- src/Magnum/Shaders/Flat.cpp | 2 +- src/Magnum/Shaders/MeshVisualizer.cpp | 2 +- src/Magnum/Shaders/Phong.cpp | 2 +- src/Magnum/Shaders/VertexColor.cpp | 2 +- src/Magnum/Test/AbstractShaderProgramGLTest.cpp | 14 +++++++++----- src/Magnum/Test/MeshGLTest.cpp | 8 ++++---- src/Magnum/Test/PrimitiveQueryGLTest.cpp | 4 ++-- src/Magnum/Test/SampleQueryGLTest.cpp | 5 +++-- src/Magnum/TextureTools/DistanceField.cpp | 4 ++-- 9 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/Magnum/Shaders/Flat.cpp b/src/Magnum/Shaders/Flat.cpp index 67375357c..af1008b26 100644 --- a/src/Magnum/Shaders/Flat.cpp +++ b/src/Magnum/Shaders/Flat.cpp @@ -70,7 +70,7 @@ template Flat::Flat(const Flags flags): tran std::initializer_list> ss{std::ref(frag), std::ref(vert)}; CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile(ss)); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported(version)) diff --git a/src/Magnum/Shaders/MeshVisualizer.cpp b/src/Magnum/Shaders/MeshVisualizer.cpp index 25f2d8dd0..86f87b7f2 100644 --- a/src/Magnum/Shaders/MeshVisualizer.cpp +++ b/src/Magnum/Shaders/MeshVisualizer.cpp @@ -88,7 +88,7 @@ MeshVisualizer::MeshVisualizer(const Flags flags): flags(flags), transformationP #endif Shader::compile({std::ref(vert), std::ref(frag)}); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); #ifndef MAGNUM_TARGET_GLES if(geom) attachShader(*geom); #endif diff --git a/src/Magnum/Shaders/Phong.cpp b/src/Magnum/Shaders/Phong.cpp index 5c8666724..a7ca30dc5 100644 --- a/src/Magnum/Shaders/Phong.cpp +++ b/src/Magnum/Shaders/Phong.cpp @@ -67,7 +67,7 @@ Phong::Phong(const Flags flags): transformationMatrixUniform(0), projectionMatri /* GCC 4.4 has explicit std::reference_wrapper constructor */ CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({std::ref(vert), std::ref(frag)})); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported(version)) diff --git a/src/Magnum/Shaders/VertexColor.cpp b/src/Magnum/Shaders/VertexColor.cpp index 879333e42..b925d636b 100644 --- a/src/Magnum/Shaders/VertexColor.cpp +++ b/src/Magnum/Shaders/VertexColor.cpp @@ -73,7 +73,7 @@ template VertexColor::VertexColor(): transfo std::initializer_list> ss{std::ref(frag), std::ref(vert)}; CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile(ss)); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported(version)) diff --git a/src/Magnum/Test/AbstractShaderProgramGLTest.cpp b/src/Magnum/Test/AbstractShaderProgramGLTest.cpp index c848ddc10..f9a1e21a1 100644 --- a/src/Magnum/Test/AbstractShaderProgramGLTest.cpp +++ b/src/Magnum/Test/AbstractShaderProgramGLTest.cpp @@ -190,7 +190,8 @@ void AbstractShaderProgramGLTest::create() { CORRADE_VERIFY(fragCompiled); MyPublicShader program; - program.attachShaders({vert, frag}); + /* GCC 4.4 has explicit std::reference_wrapper constructor */ + program.attachShaders({std::ref(vert), std::ref(frag)}); MAGNUM_VERIFY_NO_ERROR(); @@ -231,7 +232,8 @@ void AbstractShaderProgramGLTest::createMultipleOutputs() { CORRADE_VERIFY(fragCompiled); MyPublicShader program; - program.attachShaders({vert, frag}); + /* GCC 4.4 has explicit std::reference_wrapper constructor */ + program.attachShaders({std::ref(vert), std::ref(frag)}); MAGNUM_VERIFY_NO_ERROR(); @@ -268,7 +270,8 @@ void AbstractShaderProgramGLTest::createMultipleOutputsIndexed() { CORRADE_VERIFY(fragCompiled); MyPublicShader program; - program.attachShaders({vert, frag}); + /* GCC 4.4 has explicit std::reference_wrapper constructor */ + program.attachShaders({std::ref(vert), std::ref(frag)}); MAGNUM_VERIFY_NO_ERROR(); @@ -311,9 +314,10 @@ MyShader::MyShader() { vert.addSource(rs.get("MyShader.vert")); frag.addSource(rs.get("MyShader.frag")); - Shader::compile({vert, frag}); + /* GCC 4.4 has explicit std::reference_wrapper constructor */ + Shader::compile({std::ref(vert), std::ref(frag)}); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); bindAttributeLocation(0, "position"); link(); diff --git a/src/Magnum/Test/MeshGLTest.cpp b/src/Magnum/Test/MeshGLTest.cpp index bf5a34c2a..ab8b82fd0 100644 --- a/src/Magnum/Test/MeshGLTest.cpp +++ b/src/Magnum/Test/MeshGLTest.cpp @@ -386,7 +386,7 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion) /* GCC 4.4 has explicit std::reference_wrapper constructor */ CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({std::ref(vert), std::ref(frag)})); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); bindAttributeLocation(0, "value"); @@ -416,7 +416,7 @@ IntegerShader::IntegerShader(const std::string& type) { /* GCC 4.4 has explicit std::reference_wrapper constructor */ CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({std::ref(vert), std::ref(frag)})); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); bindAttributeLocation(0, "value"); @@ -442,7 +442,7 @@ DoubleShader::DoubleShader(const std::string& type, const std::string& outputTyp /* GCC 4.4 has explicit std::reference_wrapper constructor */ CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({std::ref(vert), std::ref(frag)})); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); bindAttributeLocation(0, "value"); @@ -1127,7 +1127,7 @@ MultipleShader::MultipleShader() { /* GCC 4.4 has explicit std::reference_wrapper constructor */ CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({std::ref(vert), std::ref(frag)})); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); bindAttributeLocation(Position::Location, "position"); bindAttributeLocation(Normal::Location, "normal"); diff --git a/src/Magnum/Test/PrimitiveQueryGLTest.cpp b/src/Magnum/Test/PrimitiveQueryGLTest.cpp index c85a70f05..312403852 100644 --- a/src/Magnum/Test/PrimitiveQueryGLTest.cpp +++ b/src/Magnum/Test/PrimitiveQueryGLTest.cpp @@ -69,9 +69,9 @@ void PrimitiveQueryGLTest::query() { vert.addSource(rs.get("MyShader.vert")); frag.addSource(rs.get("MyShader.frag")); - CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); + CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({std::ref(vert), std::ref(frag)})); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); CORRADE_INTERNAL_ASSERT_OUTPUT(link()); } diff --git a/src/Magnum/Test/SampleQueryGLTest.cpp b/src/Magnum/Test/SampleQueryGLTest.cpp index e3f305f2b..5210e9ddc 100644 --- a/src/Magnum/Test/SampleQueryGLTest.cpp +++ b/src/Magnum/Test/SampleQueryGLTest.cpp @@ -80,9 +80,10 @@ MyShader::MyShader() { vert.addSource(rs.get("MyShader.vert")); frag.addSource(rs.get("MyShader.frag")); - CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); + /* GCC 4.4 has explicit std::reference_wrapper constructor */ + CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({std::ref(vert), std::ref(frag)})); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); CORRADE_INTERNAL_ASSERT_OUTPUT(link()); } diff --git a/src/Magnum/TextureTools/DistanceField.cpp b/src/Magnum/TextureTools/DistanceField.cpp index 42aadc390..a9ecc4af2 100644 --- a/src/Magnum/TextureTools/DistanceField.cpp +++ b/src/Magnum/TextureTools/DistanceField.cpp @@ -92,9 +92,9 @@ DistanceFieldShader::DistanceFieldShader(): radiusUniform(0), scalingUniform(1) .addSource(rs.get("DistanceFieldShader.vert")); frag.addSource(rs.get("DistanceFieldShader.frag")); - CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); + CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({std::ref(vert), std::ref(frag)})); - attachShaders({vert, frag}); + attachShaders({std::ref(vert), std::ref(frag)}); /* Older GLSL doesn't have gl_VertexID, vertices must be supplied explicitly */ #ifndef MAGNUM_TARGET_GLES