[Libreoffice-commits] core.git: Branch 'feature/chart-opengl2' - 18 commits - chart2/inc chart2/Library_chartopengl.mk chart2/Module_chart2.mk chart2/source config_host.mk.in configure.ac download.lst glm/Makefile glm/Module_glm.mk glm/README glm/UnpackedTarball_glm.mk glm/Wshadow-unix.patch glm/Wshadow-windows.patch include/svx Makefile.fetch RepositoryExternal.mk Repository.mk RepositoryModule_host.mk svx/source

YangZhang yangzhang at multicorewareinc.com
Mon Dec 23 09:36:56 PST 2013


 Makefile.fetch                                   |    1 
 Repository.mk                                    |    1 
 RepositoryExternal.mk                            |   17 
 RepositoryModule_host.mk                         |    1 
 chart2/Library_chartopengl.mk                    |    3 
 chart2/Module_chart2.mk                          |    2 
 chart2/inc/ChartModel.hxx                        |    3 
 chart2/source/inc/InternalDataProvider.hxx       |    1 
 chart2/source/view/inc/AbstractShapeFactory.hxx  |    7 
 chart2/source/view/inc/DummyXShape.hxx           |   42 
 chart2/source/view/inc/OpenglShapeFactory.hxx    |    3 
 chart2/source/view/inc/ShapeFactory.hxx          |    4 
 chart2/source/view/main/AbstractShapeFactory.cxx |    3 
 chart2/source/view/main/DrawModelWrapper.cxx     |    4 
 chart2/source/view/main/DummyXShape.cxx          |   74 
 chart2/source/view/main/OpenGLRender.cxx         | 1004 ++++++++
 chart2/source/view/main/OpenGLRender.hxx         |  214 +
 chart2/source/view/main/OpenglShapeFactory.cxx   |  121 -
 config_host.mk.in                                |    1 
 configure.ac                                     |    5 
 download.lst                                     |    2 
 glm/Makefile                                     |    7 
 glm/Module_glm.mk                                |   20 
 glm/README                                       |    3 
 glm/UnpackedTarball_glm.mk                       |   16 
 glm/Wshadow-unix.patch                           | 2659 +++++++++++++++++++++++
 glm/Wshadow-windows.patch                        | 2659 +++++++++++++++++++++++
 include/svx/unoshape.hxx                         |   23 
 svx/source/unodraw/unoshap4.cxx                  |    8 
 29 files changed, 6850 insertions(+), 58 deletions(-)

New commits:
commit 2332f6c7e4650dfd77205e7741286553808d825f
Author: YangZhang <yangzhang at multicorewareinc.com>
Date:   Fri Dec 20 17:41:24 2013 +0800

    Fix warning of OpenGL
    
    Change-Id: Iceb26e5245470fe9a23c41f0b448481aa7a1a1eb

diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx
index ffe7293..92489c3 100644
--- a/chart2/source/view/main/OpenGLRender.cxx
+++ b/chart2/source/view/main/OpenGLRender.cxx
@@ -197,7 +197,7 @@ static const GLfloat g_color_buffer_data[] = {
     0.982f,  0.099f,  0.879f
 };
 #endif
-int static checkGLError(char *file, int line)
+int static checkGLError(const char *file, int line)
 {
     GLenum glErr;
     int    retCode = 0;
@@ -220,6 +220,13 @@ int static checkGLError(char *file, int line)
 
 #define CHECK_GL_ERROR() checkGLError(__FILE__, __LINE__)
 
+#define CHECK_GL_FRAME_BUFFER_STATUS() \
+    status = glCheckFramebufferStatus(GL_FRAMEBUFFER);\
+    if( status != GL_FRAMEBUFFER_COMPLETE ) {\
+    printf(" error at line(%d) '%d'\n", __LINE__, status );\
+    return -1;\
+    }
+
 GLint OpenGLRender::LoadShaders(const char *vertexShader,const char *fragmentShader)
 {
     // Create the shaders
@@ -439,7 +446,8 @@ int OpenGLRender::RenderModelf2FBO(float *vertexArray, unsigned int vertexArrayS
     //create render buffer object
     CreateRenderObj(m_iWidth, m_iHeight);
     //create fbo
-    CreateFrameBufferObj();
+    if ( CreateFrameBufferObj() !=0 )
+        return -1;
     //fill vertex buffer
     glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer);
     glBufferData(GL_ARRAY_BUFFER, vertexArraySize, vertexArray, GL_STATIC_DRAW);
@@ -487,12 +495,8 @@ int OpenGLRender::RenderModelf2FBO(float *vertexArray, unsigned int vertexArrayS
     glDisableVertexAttribArray(m_VertexID);
     glDisableVertexAttribArray(m_ColorID);
     glUseProgram(0);
-    int result = 0;
-    GLenum fbResult = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-    if( fbResult != GL_FRAMEBUFFER_COMPLETE )
-    {
-        result = -1;
-    }
+    GLenum status;
+    CHECK_GL_FRAME_BUFFER_STATUS();
 #if 0
     sal_uInt8 *buf = (sal_uInt8 *)malloc(m_iWidth * m_iHeight * 3 + BMP_HEADER_LEN);
     CreateBMPHeader(buf, m_iWidth, -m_iHeight);
@@ -515,12 +519,12 @@ int OpenGLRender::RenderModelf2FBO(float *vertexArray, unsigned int vertexArrayS
     Bitmap::ScopedWriteAccess pAlphaWriteAccess( aAlpha );
 
     size_t nCurPos = 0;
-    for( size_t y = 0; y < m_iHeight; ++y)
+    for( int y = 0; y < m_iHeight; ++y)
     {
         Scanline pScan = pWriteAccess->GetScanline(y);
         Scanline pAlphaScan = pAlphaWriteAccess->GetScanline(y);
 
-        for( size_t x = 0; x < m_iWidth; ++x )
+        for( int x = 0; x < m_iWidth; ++x )
         {
             *pScan++ = buf[nCurPos];
             *pScan++ = buf[nCurPos+1];
@@ -588,7 +592,8 @@ int OpenGLRender::RenderLine2FBO(int wholeFlag)
         //create render buffer object
         CreateRenderObj(m_iWidth, m_iHeight);
         //create fbo
-        CreateFrameBufferObj();
+        if ( CreateFrameBufferObj() !=0 )
+            return -1;
     }
     //bind fbo
     glBindFramebuffer(GL_FRAMEBUFFER, m_FboID[m_iFboIdx % 2]);
@@ -633,12 +638,8 @@ int OpenGLRender::RenderLine2FBO(int wholeFlag)
         free(pointList.pointBuf);
     }
     m_iPointNum = 0;
-    int result = 0;
-    GLenum fbResult = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-    if( fbResult != GL_FRAMEBUFFER_COMPLETE )
-    {
-        result = -1;
-    }
+    GLenum status;
+    CHECK_GL_FRAME_BUFFER_STATUS();
 #if 0
     sal_uInt8 *buf = (sal_uInt8 *)malloc(m_iWidth * m_iHeight * 3 + BMP_HEADER_LEN);
     CreateBMPHeader(buf, m_iWidth, m_iHeight);
@@ -651,21 +652,21 @@ int OpenGLRender::RenderLine2FBO(int wholeFlag)
     boost::scoped_array<sal_uInt8> buf(new sal_uInt8[m_iWidth * m_iHeight * 4]);
     glReadPixels(0, 0, m_iWidth, m_iHeight, GL_BGR, GL_UNSIGNED_BYTE, buf.get());
     BitmapEx aBmp;
-    aBmp.Expand(m_iWidth, m_iHeight);
+    aBmp.SetSizePixel(Size(m_iWidth, m_iHeight));
 
-    Bitmap aBitmap( Size( m_iWidth, m_iHeight ), 24 );
-    Bitmap aAlpha( Size( m_iWidth, m_iHeight ), 24 );
+    Bitmap aBitmap( aBmp.GetBitmap() );
+    Bitmap aAlpha( aBmp.GetAlpha().GetBitmap() );
 
     Bitmap::ScopedWriteAccess pWriteAccess( aBitmap );
     Bitmap::ScopedWriteAccess pAlphaWriteAccess( aAlpha );
 
     size_t nCurPos = 0;
-    for( size_t y = 0; y < m_iHeight; ++y)
+    for( int y = 0; y < m_iHeight; ++y)
     {
         Scanline pScan = pWriteAccess->GetScanline(y);
         Scanline pAlphaScan = pAlphaWriteAccess->GetScanline(y);
 
-        for( size_t x = 0; x < m_iWidth; ++x )
+        for( int x = 0; x < m_iWidth; ++x )
         {
             *pScan++ = buf[nCurPos];
             *pScan++ = buf[nCurPos+1];
@@ -847,32 +848,32 @@ int OpenGLRender::CreateFrameBufferObj()
     GLenum status;
     // create a framebuffer object, you need to delete them when program exits.
     glGenFramebuffers(1, &m_FboID[0]);
-    status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+    CHECK_GL_FRAME_BUFFER_STATUS();
     glBindFramebuffer(GL_FRAMEBUFFER, m_FboID[0]);
     glBindTexture(GL_TEXTURE_2D, m_TextureObj[0]);
     // attach a texture to FBO color attachement point
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_TextureObj[0], 0);
-    status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+    CHECK_GL_FRAME_BUFFER_STATUS();
     glBindTexture(GL_TEXTURE_2D, 0);
     // attach a renderbuffer to depth attachment point
     glBindRenderbuffer(GL_RENDERBUFFER, m_RboID[0]);
     glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_RboID[0]);
-    status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+    CHECK_GL_FRAME_BUFFER_STATUS();
     glBindRenderbuffer(GL_RENDERBUFFER, 0);
     glBindFramebuffer(GL_FRAMEBUFFER, 0);
 
     glGenFramebuffers(1, &m_FboID[1]);
-    status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+    CHECK_GL_FRAME_BUFFER_STATUS();
     glBindFramebuffer(GL_FRAMEBUFFER, m_FboID[1]);
     glBindTexture(GL_TEXTURE_2D, m_TextureObj[1]);
     // attach a texture to FBO color attachement point
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_TextureObj[1], 0);
-    status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+    CHECK_GL_FRAME_BUFFER_STATUS();
     glBindTexture(GL_TEXTURE_2D, 0);
     // attach a renderbuffer to depth attachment point
     glBindRenderbuffer(GL_RENDERBUFFER, m_RboID[1]);
     glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_RboID[1]);
-    status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+    CHECK_GL_FRAME_BUFFER_STATUS();
     glBindRenderbuffer(GL_RENDERBUFFER, 0);
     glBindFramebuffer(GL_FRAMEBUFFER, 0);
 
commit a7bfc7cb3fd29883b03e6c5bfca6b583263bda27
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Dec 18 20:04:34 2013 +0100

    fix crash when creating bitmaps
    
    Change-Id: I72982abcfcb0edff35a7000944146e8d924c120f

diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx
index 7ae8fd3..ffe7293 100644
--- a/chart2/source/view/main/OpenGLRender.cxx
+++ b/chart2/source/view/main/OpenGLRender.cxx
@@ -651,10 +651,10 @@ int OpenGLRender::RenderLine2FBO(int wholeFlag)
     boost::scoped_array<sal_uInt8> buf(new sal_uInt8[m_iWidth * m_iHeight * 4]);
     glReadPixels(0, 0, m_iWidth, m_iHeight, GL_BGR, GL_UNSIGNED_BYTE, buf.get());
     BitmapEx aBmp;
-    aBmp.SetSizePixel(Size(m_iWidth, m_iHeight));
+    aBmp.Expand(m_iWidth, m_iHeight);
 
-    Bitmap aBitmap( aBmp.GetBitmap() );
-    Bitmap aAlpha( aBmp.GetAlpha().GetBitmap() );
+    Bitmap aBitmap( Size( m_iWidth, m_iHeight ), 24 );
+    Bitmap aAlpha( Size( m_iWidth, m_iHeight ), 24 );
 
     Bitmap::ScopedWriteAccess pWriteAccess( aBitmap );
     Bitmap::ScopedWriteAccess pAlphaWriteAccess( aAlpha );
commit 7f113ac4a5469f10cba3a1ad85406a7924c2e548
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Dec 18 01:38:28 2013 +0100

    fix weird issue on windows with OPTIONAL being defined somewhere
    
    WTF!!!!!!!!!!!!! Who had the glorious idea to provide a define for OPTIONAL when we use it internally as well
    
    Change-Id: I257f82b62978c73c84faa34c8b341d77c017425e

diff --git a/chart2/source/view/main/OpenglShapeFactory.cxx b/chart2/source/view/main/OpenglShapeFactory.cxx
index dc0f776..70bc1b5 100644
--- a/chart2/source/view/main/OpenglShapeFactory.cxx
+++ b/chart2/source/view/main/OpenglShapeFactory.cxx
@@ -17,6 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <svx/unoshape.hxx>
 #include "OpenglShapeFactory.hxx"
 #include "DummyXShape.hxx"
 #include "ViewDefines.hxx"
@@ -46,7 +47,6 @@
 #include <rtl/math.hxx>
 #include <svx/svdocirc.hxx>
 #include <svx/svdopath.hxx>
-#include <svx/unoshape.hxx>
 
 #include <basegfx/point/b2dpoint.hxx>
 #include <basegfx/matrix/b3dhommatrix.hxx>
commit dd8308cce4c4e5d0d2962a1bef9b6f385617cf19
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Dec 13 12:09:29 2013 +0100

    disable this call for now
    
    That one is particular nasty because it creates the chart root shape
    before the chart view exists and deletes therefore the uno object
        directly.
    
    Change-Id: Idb2318484bac4c2f251f0c51e53b3add3923414c

diff --git a/chart2/source/view/main/DrawModelWrapper.cxx b/chart2/source/view/main/DrawModelWrapper.cxx
index dedf65e..48f2bb7 100644
--- a/chart2/source/view/main/DrawModelWrapper.cxx
+++ b/chart2/source/view/main/DrawModelWrapper.cxx
@@ -235,7 +235,9 @@ uno::Reference< drawing::XDrawPage > DrawModelWrapper::getMainDrawPage()
         }
     }
     //ensure that additional shapes are in front of the chart objects so create the chart root before
-    AbstractShapeFactory::getOrCreateShapeFactory(this->getShapeFactory())->getOrCreateChartRootShape( m_xMainDrawPage );
+    // let us disable this call for now
+    // TODO:moggi
+    // AbstractShapeFactory::getOrCreateShapeFactory(this->getShapeFactory())->getOrCreateChartRootShape( m_xMainDrawPage );
     return m_xMainDrawPage;
 }
 uno::Reference< drawing::XDrawPage > DrawModelWrapper::getHiddenDrawPage()
commit cbd2e9790036999b3f6c86be9086d91b8cfa87f7
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Dec 13 12:05:19 2013 +0100

    add ugly hack to work around SvxDrawPage::add only accepting SvxShape
    
    Change-Id: I77c292b088a1a1797fba10cc514167a1f3dca917

diff --git a/chart2/Library_chartopengl.mk b/chart2/Library_chartopengl.mk
index 220012e..2532fc3 100644
--- a/chart2/Library_chartopengl.mk
+++ b/chart2/Library_chartopengl.mk
@@ -35,6 +35,7 @@ $(eval $(call gb_Library_use_libraries,chartopengl,\
     cppu \
     cppuhelper \
     sal \
+	svxcore \
     vcl \
     $(gb_UWINAPI) \
 ))
diff --git a/chart2/source/view/main/OpenglShapeFactory.cxx b/chart2/source/view/main/OpenglShapeFactory.cxx
index 8e529b8..dc0f776 100644
--- a/chart2/source/view/main/OpenglShapeFactory.cxx
+++ b/chart2/source/view/main/OpenglShapeFactory.cxx
@@ -46,6 +46,7 @@
 #include <rtl/math.hxx>
 #include <svx/svdocirc.hxx>
 #include <svx/svdopath.hxx>
+#include <svx/unoshape.hxx>
 
 #include <basegfx/point/b2dpoint.hxx>
 #include <basegfx/matrix/b3dhommatrix.hxx>
@@ -95,7 +96,7 @@ uno::Reference< drawing::XShapes > getChartShape(
                 xProp->getPropertyValue( UNO_NAME_MISC_OBJ_NAME ) >>= aRet;
                 if( aRet.equals("com.sun.star.chart2.shapes") )
                 {
-                    xRet = uno::Reference< drawing::XShapes >( xShape, uno::UNO_QUERY );
+                    xRet = dynamic_cast<SvxDummyShapeContainer*>(xShape.get())->getWrappedShape();
                     break;
                 }
             }
@@ -119,12 +120,13 @@ uno::Reference< drawing::XShapes > OpenglShapeFactory::getOrCreateChartRootShape
                 "com.sun.star.drawing.GraphicObjectShape" ), uno::UNO_QUERY );
         dummy::DummyChart *pChart = new dummy::DummyChart(xTarget);
         m_pChart = (void *)pChart;
+        SvxDummyShapeContainer* pContainer = new SvxDummyShapeContainer(pChart);
         xRet = pChart;
 #if 0
         xRet = new dummy::DummyChart();
         m_pChart = (void *)((dummy::DummyChart *)xRet);
 #endif
-        xDrawPage->add(uno::Reference< drawing::XShape >(xRet, uno::UNO_QUERY_THROW));
+        xDrawPage->add(pContainer);
     }
     return xRet;
 }
diff --git a/include/svx/unoshape.hxx b/include/svx/unoshape.hxx
index c27f8b7..e04609f 100644
--- a/include/svx/unoshape.hxx
+++ b/include/svx/unoshape.hxx
@@ -869,6 +869,29 @@ private:
     OUString referer_;
 };
 
+/*
+ * This is a really ugly hack for the chart2 OpenGL backend
+ * SvxShapeGroup::add only accepts objects derived from SvxShape and silently drops
+ * other objects. This fixes my life time problems but I will burn for it in hell.
+ *
+ * The object does nothing and should not be painted. It is just there to ensure that the
+ * wrapped object is not deleted prematurely.
+ */
+class SVX_DLLPUBLIC SvxDummyShapeContainer : public SvxShape
+{
+private:
+    com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >
+        m_xDummyObject;
+
+public:
+    SvxDummyShapeContainer( com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xWrappedObject );
+    virtual ~SvxDummyShapeContainer() throw();
+
+    com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > getWrappedShape()
+            { return m_xDummyObject; }
+
+};
+
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/unodraw/unoshap4.cxx b/svx/source/unodraw/unoshap4.cxx
index e932821..f004714 100644
--- a/svx/source/unodraw/unoshap4.cxx
+++ b/svx/source/unodraw/unoshap4.cxx
@@ -943,4 +943,12 @@ bool SvxMediaShape::getPropertyValueImpl( const OUString& rName, const SfxItemPr
     }
 }
 
+SvxDummyShapeContainer::SvxDummyShapeContainer(uno::Reference< drawing::XShapes > xObject):
+    m_xDummyObject(xObject)
+{
+}
+
+SvxDummyShapeContainer::~SvxDummyShapeContainer() throw()
+{
+}
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit f020b7ae49f1796643853469b43d10f647ffff4d
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Tue Dec 10 11:29:59 2013 +0100

    I give up on patching glm
    
    I integrated the patches into the zip file and provide a patched
    version on the TDF servers.
    
    Change-Id: I54a042cb75ba729a379e0c841404465a695fb75d

diff --git a/download.lst b/download.lst
index 55ca5d2..224f40e 100644
--- a/download.lst
+++ b/download.lst
@@ -55,8 +55,7 @@ export FONT_SOURCECODE_TARBALL := 0279a21fab6f245e85a6f85fea54f511-source-code-f
 export FONT_SOURCESANS_TARBALL := 1e9ddfe25ac9577da709d7b2ea36f939-source-sans-font-1.036.tar.gz
 export FREETYPE_TARBALL := dbf2caca1d3afd410a29217a9809d397-freetype-2.4.8.tar.bz2
 export GRAPHITE_TARBALL := 7042305e4208af4c2d5249d814ccce58-graphite2-1.2.3.tgz
-export GLM_TARBALL :=  f070164b78c643431abbc1a97a6d0211-glm-0.9.4.6.zip
-export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
+export GLM_TARBALL :=  bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.ziexport HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
 export HUNSPELL_TARBALL := 3121aaf3e13e5d88dfff13fb4a5f1ab8-hunspell-1.3.2.tar.gz
 export HYPHEN_TARBALL := a2f6010987e1c601274ab5d63b72c944-hyphen-2.8.4.tar.gz
 export ICU_TARBALL := 9e96ed4c1d99c0d14ac03c140f9f346c-icu4c-52_1-src.tgz
diff --git a/glm/UnpackedTarball_glm.mk b/glm/UnpackedTarball_glm.mk
index 99c5776..e115bff 100644
--- a/glm/UnpackedTarball_glm.mk
+++ b/glm/UnpackedTarball_glm.mk
@@ -13,14 +13,4 @@ $(eval $(call gb_UnpackedTarball_set_tarball,glm,$(GLM_TARBALL)))
 
 $(eval $(call gb_UnpackedTarball_set_patchlevel,glm,1))
 
-ifeq ($(OS),WNT)
-$(eval $(call gb_UnpackedTarball_add_patches,glm,\
-	glm/Wshadow-windows.patch \
-))
-else
-$(eval $(call gb_UnpackedTarball_add_patches,glm,\
-	glm/Wshadow-unix.patch \
-))
-endif
-
 # vim: set noet sw=4 ts=4:
commit 350832d064a849ff9b8d616bacbf98772d1eb56a
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Dec 9 10:15:45 2013 +0100

    next try to get glm patched on windows and linux
    
    Change-Id: Ia17217db6cbf5110926302611a4b37faeacc9bfd

diff --git a/glm/UnpackedTarball_glm.mk b/glm/UnpackedTarball_glm.mk
index 79d93af..99c5776 100644
--- a/glm/UnpackedTarball_glm.mk
+++ b/glm/UnpackedTarball_glm.mk
@@ -13,8 +13,14 @@ $(eval $(call gb_UnpackedTarball_set_tarball,glm,$(GLM_TARBALL)))
 
 $(eval $(call gb_UnpackedTarball_set_patchlevel,glm,1))
 
+ifeq ($(OS),WNT)
 $(eval $(call gb_UnpackedTarball_add_patches,glm,\
-	glm/Wshadow.patch \
+	glm/Wshadow-windows.patch \
 ))
+else
+$(eval $(call gb_UnpackedTarball_add_patches,glm,\
+	glm/Wshadow-unix.patch \
+))
+endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/glm/Wshadow-unix.patch b/glm/Wshadow-unix.patch
new file mode 100644
index 0000000..8607753
--- /dev/null
+++ b/glm/Wshadow-unix.patch
@@ -0,0 +1,2659 @@
+diff -ur glm.org/glm/core/_detail.hpp glm/glm/core/_detail.hpp
+--- glm.org/glm/core/_detail.hpp	2013-12-09 02:05:30.115442079 +0100
++++ glm/glm/core/_detail.hpp	2013-12-09 02:06:33.749941584 +0100
+@@ -136,12 +136,12 @@
+ 			i(0)
+ 		{}
+ 
+-		GLM_FUNC_QUALIFIER uif32(float f) :
+-			f(f)
++		GLM_FUNC_QUALIFIER uif32(float f_) :
++			f(f_)
+ 		{}
+ 
+-		GLM_FUNC_QUALIFIER uif32(unsigned int i) :
+-			i(i)
++		GLM_FUNC_QUALIFIER uif32(unsigned int i_) :
++			i(i_)
+ 		{}
+ 
+ 		float f;
+@@ -154,12 +154,12 @@
+ 			i(0)
+ 		{}
+ 
+-		GLM_FUNC_QUALIFIER uif64(double f) :
+-			f(f)
++		GLM_FUNC_QUALIFIER uif64(double f_) :
++			f(f_)
+ 		{}
+ 
+-		GLM_FUNC_QUALIFIER uif64(uint64 i) :
+-			i(i)
++		GLM_FUNC_QUALIFIER uif64(uint64 i_) :
++			i(i_)
+ 		{}
+ 
+ 		double f;
+diff -ur glm.org/glm/core/type_vec1.hpp glm/glm/core/type_vec1.hpp
+--- glm.org/glm/core/type_vec1.hpp	2013-12-08 17:04:59.706365245 +0100
++++ glm/glm/core/type_vec1.hpp	2013-12-08 17:07:20.079840510 +0100
+@@ -86,19 +86,19 @@
+ 		GLM_FUNC_DECL explicit tvec1(
+ 			ctor);
+ 		GLM_FUNC_DECL explicit tvec1(
+-			value_type const & s);
++			value_type const & s_);
+ 
+ 		//////////////////////////////////////
+ 		// Swizzle constructors
+ 
+-		GLM_FUNC_DECL tvec1(tref1<T> const & r);
++		GLM_FUNC_DECL tvec1(tref1<T> const & r_);
+ 
+ 		//////////////////////////////////////
+ 		// Convertion scalar constructors
+ 
+ 		//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
+ 		template <typename U> 
+-		GLM_FUNC_DECL explicit tvec1(U const & s);
++		GLM_FUNC_DECL explicit tvec1(U const & s_);
+ 
+ 		//////////////////////////////////////
+ 		// Convertion vector constructors
+@@ -121,19 +121,19 @@
+ 		GLM_FUNC_DECL tvec1<T> & operator= (tvec1<U> const & v);
+ 
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator+=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator+=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator+=(tvec1<U> const & v);
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator-=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator-=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator-=(tvec1<U> const & v);
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator*=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator*=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator*=(tvec1<U> const & v);
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator/=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator/=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator/=(tvec1<U> const & v);
+ 		GLM_FUNC_DECL tvec1<T> & operator++();
+@@ -143,27 +143,27 @@
+ 		// Unary bit operators
+ 
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator%=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator%=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator%=(tvec1<U> const & v);
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator&=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator&=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator&=(tvec1<U> const & v);
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator|=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator|=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator|=(tvec1<U> const & v);
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator^=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator^=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator^=(tvec1<U> const & v);
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator<<=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator<<=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator<<=(tvec1<U> const & v);
+ 		template <typename U> 
+-		GLM_FUNC_DECL tvec1<T> & operator>>=(U const & s);
++		GLM_FUNC_DECL tvec1<T> & operator>>=(U const & s_);
+ 		template <typename U> 
+ 		GLM_FUNC_DECL tvec1<T> & operator>>=(tvec1<U> const & v);
+ 
+diff -ur glm.org/glm/core/type_vec1.inl glm/glm/core/type_vec1.inl
+--- glm.org/glm/core/type_vec1.inl	2013-12-08 17:04:59.707365220 +0100
++++ glm/glm/core/type_vec1.inl	2013-12-08 17:07:20.081840460 +0100
+@@ -87,9 +87,9 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec1<T>::tvec1
+ 	(
+-		value_type const & s
++		value_type const & s_
+ 	) :
+-		x(s)
++		x(s_)
+ 	{}
+ 
+ 	//////////////////////////////////////
+@@ -98,9 +98,9 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec1<T>::tvec1
+ 	(
+-		tref1<T> const & r
++		tref1<T> const & r_
+ 	) :
+-		x(r.x)
++		x(r_.x)
+ 	{}
+ 
+ 	//////////////////////////////////////
+@@ -110,9 +110,9 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T>::tvec1
+ 	(
+-		U const & s
++		U const & s_
+ 	) :
+-		x(value_type(s))
++		x(value_type(s_))
+ 	{}
+ 
+ 	//////////////////////////////////////
+@@ -173,10 +173,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator+=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x += T(s);
++		this->x += T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -195,10 +195,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator-=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x -= T(s);
++		this->x -= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -217,10 +217,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator*=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x *= T(s);
++		this->x *= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -239,10 +239,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator/=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x /= T(s);
++		this->x /= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -301,10 +301,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator%=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x %= T(s);
++		this->x %= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -323,10 +323,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator&=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x &= T(s);
++		this->x &= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -345,10 +345,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator|=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x |= T(s);
++		this->x |= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -367,10 +367,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator^=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x ^= T(s);
++		this->x ^= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -389,10 +389,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator<<=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x <<= T(s);
++		this->x <<= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -411,10 +411,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator>>=
+ 	(
+-		U const & s
++		U const & s_
+ 	)
+ 	{
+-		this->x >>= T(s);
++		this->x >>= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -434,21 +434,21 @@
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER T 
+-	tvec1<T>::swizzle(comp x) const
++	tvec1<T>::swizzle(comp x_) const
+ 	{
+-		return (*this)[x];
++		return (*this)[x_];
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec2<T> 
+ 	tvec1<T>::swizzle
+ 	(
+-		comp x, 
++		comp x_, 
+ 		comp y
+ 	) const
+ 	{
+ 		return tvec2<T>(
+-			(*this)[x],
++			(*this)[x_],
+ 			(*this)[y]);
+ 	}
+ 
+@@ -456,13 +456,13 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> 
+ 	tvec1<T>::swizzle
+ 	(
+-		comp x, 
++		comp x_, 
+ 		comp y, 
+ 		comp z
+ 	) const
+ 	{
+ 		return tvec3<T>(
+-			(*this)[x],
++			(*this)[x_],
+ 			(*this)[y],
+ 			(*this)[z]);
+ 	}
+@@ -471,14 +471,14 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> 
+ 	tvec1<T>::swizzle
+ 	(
+-		comp x, 
++		comp x_, 
+ 		comp y, 
+ 		comp z, 
+ 		comp w
+ 	) const
+ 	{
+ 		return tvec4<T>(
+-			(*this)[x],
++			(*this)[x_],
+ 			(*this)[y],
+ 			(*this)[z],
+ 			(*this)[w]);
+@@ -488,11 +488,11 @@
+ 	GLM_FUNC_QUALIFIER tref1<T> 
+ 	tvec1<T>::swizzle
+ 	(
+-		comp x
++		comp x_
+ 	)
+ 	{
+ 		return tref1<T>(
+-			(*this)[x]);
++			(*this)[x_]);
+ 	}
+ 
+ 	//////////////////////////////////////
+@@ -502,22 +502,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator+ 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x + s);
++			v.x + s_);
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator+ 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_, 
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s + v.x);
++			s_ + v.x);
+ 	}
+ 
+ 	template <typename T> 
+@@ -536,22 +536,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator- 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x - s);
++			v.x - s_);
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator- 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s - v.x);
++			s_ - v.x);
+ 	}
+ 
+ 	template <typename T> 
+@@ -570,22 +570,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator* 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x * s);
++			v.x * s_);
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator* 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s * v.x);
++			s_ * v.x);
+ 	}
+ 
+ 	template <typename T> 
+@@ -604,22 +604,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator/ 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x / s);
++			v.x / s_);
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator/ 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s / v.x);
++			s_ / v.x);
+ 	}
+ 
+ 	template <typename T> 
+@@ -673,22 +673,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator% 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x % s);
++			v.x % s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator% 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s % v.x);
++			s_ % v.x);
+ 	}
+ 
+ 	template <typename T>
+@@ -706,22 +706,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator& 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x & s);
++			v.x & s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator& 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s & v.x);
++			s_ & v.x);
+ 	}
+ 
+ 	template <typename T>
+@@ -739,22 +739,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator| 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x | s);
++			v.x | s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator| 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s | v.x);
++			s_ | v.x);
+ 	}
+ 
+ 	template <typename T>
+@@ -772,22 +772,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator^ 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x ^ s);
++			v.x ^ s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator^ 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s ^ v.x);
++			s_ ^ v.x);
+ 	}
+ 
+ 	template <typename T>
+@@ -805,22 +805,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator<< 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x << s);
++			v.x << s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator<< 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s << v.x);
++			s_ << v.x);
+ 	}
+ 
+ 	template <typename T>
+@@ -838,22 +838,22 @@
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator>> 
+ 	(
+ 		tvec1<T> const & v, 
+-		typename tvec1<T>::value_type const & s
++		typename tvec1<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			v.x >> s);
++			v.x >> s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec1<T> operator>> 
+ 	(
+-		typename tvec1<T>::value_type const & s, 
++		typename tvec1<T>::value_type const & s_,
+ 		tvec1<T> const & v
+ 	)
+ 	{
+ 		return tvec1<T>(
+-			s >> v.x);
++			s_ >> v.x);
+ 	}
+ 
+ 	template <typename T>
+@@ -883,9 +883,9 @@
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tref1<T>::tref1
+ 	(
+-		T & x
++		T & x_
+ 	) :
+-		x(x)
++		x(x_)
+ 	{}
+ 
+ 	template <typename T> 
+diff -ur glm.org/glm/core/type_vec2.inl glm/glm/core/type_vec2.inl
+--- glm.org/glm/core/type_vec2.inl	2013-12-08 17:04:59.705365270 +0100
++++ glm/glm/core/type_vec2.inl	2013-12-08 17:07:20.078840535 +0100
+@@ -91,10 +91,10 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec2<T>::tvec2
+ 	(
+-		value_type const & s
++		value_type const & s_
+ 	) :
+-		x(s),
+-		y(s)
++		x(s_),
++		y(s_)
+ 	{}
+ 
+ 	template <typename T>
+@@ -113,10 +113,10 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec2<T>::tvec2
+ 	(
+-		tref2<T> const & r
++		tref2<T> const & r_
+ 	) :
+-		x(r.x),
+-		y(r.y)
++		x(r_.x),
++		y(r_.y)
+ 	{}
+ 
+ 	//////////////////////////////////////
+@@ -126,10 +126,10 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec2<T>::tvec2
+ 	(
+-		U const & x
++		U const & x_
+ 	) :
+-		x(value_type(x)),
+-		y(value_type(x))
++		x(value_type(x_)),
++		y(value_type(x_))
+ 	{}
+ 
+ 	template <typename T>
+@@ -204,10 +204,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator+=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator+=(U s_)
+ 	{
+-		this->x += T(s);
+-		this->y += T(s);
++		this->x += T(s_);
++		this->y += T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -225,10 +225,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator-=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator-=(U s_)
+ 	{
+-		this->x -= T(s);
+-		this->y -= T(s);
++		this->x -= T(s_);
++		this->y -= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -246,10 +246,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator*=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator*=(U s_)
+ 	{
+-		this->x *= T(s);
+-		this->y *= T(s);
++		this->x *= T(s_);
++		this->y *= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -267,10 +267,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator/=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator/=(U s_)
+ 	{
+-		this->x /= T(s);
+-		this->y /= T(s);
++		this->x /= T(s_);
++		this->y /= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -330,10 +330,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator%=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator%=(U s_)
+ 	{
+-		this->x %= T(s);
+-		this->y %= T(s);
++		this->x %= T(s_);
++		this->y %= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -351,10 +351,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator&=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator&=(U s_)
+ 	{
+-		this->x &= T(s);
+-		this->y &= T(s);
++		this->x &= T(s_);
++		this->y &= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -372,10 +372,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator|=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator|=(U s_)
+ 	{
+-		this->x |= T(s);
+-		this->y |= T(s);
++		this->x |= T(s_);
++		this->y |= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -393,10 +393,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator^=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator^=(U s_)
+ 	{
+-		this->x ^= T(s);
+-		this->y ^= T(s);
++		this->x ^= T(s_);
++		this->y ^= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -414,10 +414,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator<<=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator<<=(U s_)
+ 	{
+-		this->x <<= T(s);
+-		this->y <<= T(s);
++		this->x <<= T(s_);
++		this->y <<= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -435,10 +435,10 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator>>=(U s)
++	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator>>=(U s_)
+ 	{
+-		this->x >>= T(s);
+-		this->y >>= T(s);
++		this->x >>= T(s_);
++		this->y >>= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -460,50 +460,50 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER typename tvec2<T>::value_type tvec2<T>::swizzle
+ 	(
+-		comp x
++		comp x_
+ 	) const
+ 	{
+-		return (*this)[x];
++		return (*this)[x_];
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec2<T> tvec2<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y
++		comp x_, 
++		comp y_
+ 	) const
+ 	{
+ 		return tvec2<T>(
+-			(*this)[x],
+-			(*this)[y]);
++			(*this)[x_],
++			(*this)[y_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> tvec2<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
++		comp x_, 
++		comp y_, 
+ 		comp z
+ 	) const
+ 	{
+ 		return tvec3<T>(
+-			(*this)[x],
+-			(*this)[y],
++			(*this)[x_],
++			(*this)[y_],
+ 			(*this)[z]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> tvec2<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
++		comp x_, 
++		comp y_, 
+ 		comp z, 
+ 		comp w
+ 	) const
+ 	{
+ 		return tvec4<T>(
+-			(*this)[x],
+-			(*this)[y],
++			(*this)[x_],
++			(*this)[y_],
+ 			(*this)[z],
+ 			(*this)[w]);
+ 	}
+@@ -511,13 +511,13 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tref2<T> tvec2<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y
++		comp x_, 
++		comp y_
+ 	)
+ 	{
+ 		return tref2<T>(
+-			(*this)[x],
+-			(*this)[y]);
++			(*this)[x_],
++			(*this)[y_]);
+ 	}
+ 
+ 	//////////////////////////////////////
+@@ -527,12 +527,12 @@
+ 	GLM_FUNC_QUALIFIER tvec2<T> operator+ 
+ 	(
+ 		tvec2<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec2<T>(
+-			v.x + T(s),
+-			v.y + T(s));
++			v.x + T(s_),
++			v.y + T(s_));
+ 	}
+ 
+ 	template <typename T> 
+@@ -942,11 +942,11 @@
+ 	template <typename T> 
+ 	tref2<T>::tref2
+ 	(
+-		T & x, 
+-		T & y
++		T & x_, 
++		T & y_
+ 	) :
+-		x(x),
+-		y(y)
++		x(x_),
++		y(y_)
+ 	{}
+ 
+ 	template <typename T> 
+diff -ur glm.org/glm/core/type_vec3.hpp glm/glm/core/type_vec3.hpp
+--- glm.org/glm/core/type_vec3.hpp	2013-12-08 17:04:59.707365220 +0100
++++ glm/glm/core/type_vec3.hpp	2013-12-08 17:07:20.081840460 +0100
+@@ -170,15 +170,15 @@
+ 		}
+ 
+ 		template <int E0, int E1>
+-		GLM_FUNC_DECL tvec3(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & s)
++		GLM_FUNC_DECL tvec3(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & s_)
+ 		{
+-			*this = tvec3<T>(v(), s);
++			*this = tvec3<T>(v(), s_);
+ 		}
+ 
+ 		template <int E0, int E1>
+-		GLM_FUNC_DECL tvec3(T const & s, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v)
++		GLM_FUNC_DECL tvec3(T const & s_, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v)
+ 		{
+-			*this = tvec3<T>(s, v());
++			*this = tvec3<T>(s_, v());
+ 		}
+ 
+ 		//////////////////////////////////////
+diff -ur glm.org/glm/core/type_vec3.inl glm/glm/core/type_vec3.inl
+--- glm.org/glm/core/type_vec3.inl	2013-12-08 17:04:59.706365245 +0100
++++ glm/glm/core/type_vec3.inl	2013-12-08 17:07:20.079840510 +0100
+@@ -93,11 +93,11 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
+ 	(
+-		value_type const & s
++		value_type const & s_
+ 	) :
+-		x(s),
+-		y(s),
+-		z(s)
++		x(s_),
++		y(s_),
++		z(s_)
+ 	{}
+ 
+ 	template <typename T>
+@@ -118,11 +118,11 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
+ 	(
+-		tref3<T> const & r
++		tref3<T> const & r_
+ 	) :
+-		x(r.x),
+-		y(r.y),
+-		z(r.z)
++		x(r_.x),
++		y(r_.y),
++		z(r_.z)
+ 	{}
+ 
+ 	template <typename T>
+@@ -130,21 +130,21 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
+ 	(
+ 		tref2<A> const & v, 
+-		B const & s
++		B const & s_
+ 	) : 
+ 		x(value_type(v.x)),
+ 		y(value_type(v.y)),
+-		z(value_type(s))
++		z(value_type(s_))
+ 	{}
+ 
+ 	template <typename T>
+ 	template <typename A, typename B> 
+ 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
+ 	(
+-		A const & s, 
++		A const & s_, 
+ 		tref2<B> const & v
+ 	) :
+-		x(value_type(s)),
++		x(value_type(s_)),
+ 		y(value_type(v.x)),
+ 		z(value_type(v.y))
+ 	{}
+@@ -156,24 +156,24 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
+ 	(
+-		U const & s
++		U const & s_
+ 	) :
+-		x(value_type(s)),
+-		y(value_type(s)),
+-		z(value_type(s))
++		x(value_type(s_)),
++		y(value_type(s_)),
++		z(value_type(s_))
+ 	{}
+ 
+ 	template <typename T>
+ 	template <typename A, typename B, typename C> 
+ 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
+ 	(
+-		A const & x, 
+-		B const & y, 
+-		C const & z
++		A const & x_, 
++		B const & y_, 
++		C const & z_
+ 	) :
+-		x(value_type(x)),
+-		y(value_type(y)),
+-		z(value_type(z))
++		x(value_type(x_)),
++		y(value_type(y_)),
++		z(value_type(z_))
+ 	{}
+ 
+ 	//////////////////////////////////////
+@@ -184,21 +184,21 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
+ 	(
+ 		tvec2<A> const & v, 
+-		B const & s
++		B const & s_
+ 	) :
+ 		x(value_type(v.x)),
+ 		y(value_type(v.y)),
+-		z(value_type(s))
++		z(value_type(s_))
+ 	{}
+ 
+ 	template <typename T>
+ 	template <typename A, typename B> 
+ 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
+ 	(	
+-		A const & s, 
++		A const & s_, 
+ 		tvec2<B> const & v
+ 	) :
+-		x(value_type(s)),
++		x(value_type(s_)),
+ 		y(value_type(v.x)),
+ 		z(value_type(v.y))
+ 	{}
+@@ -255,11 +255,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator+=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator+=(U s_)
+ 	{
+-		this->x += T(s);
+-		this->y += T(s);
+-		this->z += T(s);
++		this->x += T(s_);
++		this->y += T(s_);
++		this->z += T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -278,11 +278,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator-=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator-=(U s_)
+ 	{
+-		this->x -= T(s);
+-		this->y -= T(s);
+-		this->z -= T(s);
++		this->x -= T(s_);
++		this->y -= T(s_);
++		this->z -= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -301,11 +301,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator*=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator*=(U s_)
+ 	{
+-		this->x *= T(s);
+-		this->y *= T(s);
+-		this->z *= T(s);
++		this->x *= T(s_);
++		this->y *= T(s_);
++		this->z *= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -324,11 +324,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator/=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator/=(U s_)
+ 	{
+-		this->x /= T(s);
+-		this->y /= T(s);
+-		this->z /= T(s);
++		this->x /= T(s_);
++		this->y /= T(s_);
++		this->z /= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -391,11 +391,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator%=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator%=(U s_)
+ 	{
+-		this->x %= s;
+-		this->y %= s;
+-		this->z %= s;
++		this->x %= s_;
++		this->y %= s_;
++		this->z %= s_;
+ 		return *this;
+ 	}
+ 
+@@ -414,11 +414,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator&=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator&=(U s_)
+ 	{
+-		this->x &= s;
+-		this->y &= s;
+-		this->z &= s;
++		this->x &= s_;
++		this->y &= s_;
++		this->z &= s_;
+ 		return *this;
+ 	}
+ 
+@@ -437,11 +437,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator|=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator|=(U s_)
+ 	{
+-		this->x |= s;
+-		this->y |= s;
+-		this->z |= s;
++		this->x |= s_;
++		this->y |= s_;
++		this->z |= s_;
+ 		return *this;
+ 	}
+ 
+@@ -460,11 +460,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator^=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator^=(U s_)
+ 	{
+-		this->x ^= s;
+-		this->y ^= s;
+-		this->z ^= s;
++		this->x ^= s_;
++		this->y ^= s_;
++		this->z ^= s_;
+ 		return *this;
+ 	}
+ 
+@@ -483,11 +483,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator<<=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator<<=(U s_)
+ 	{
+-		this->x <<= s;
+-		this->y <<= s;
+-		this->z <<= s;
++		this->x <<= s_;
++		this->y <<= s_;
++		this->z <<= s_;
+ 		return *this;
+ 	}
+ 
+@@ -506,11 +506,11 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator>>=(U s)
++	GLM_FUNC_QUALIFIER tvec3<T> & tvec3<T>::operator>>=(U s_)
+ 	{
+-		this->x >>= T(s);
+-		this->y >>= T(s);
+-		this->z >>= T(s);
++		this->x >>= T(s_);
++		this->y >>= T(s_);
++		this->z >>= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -534,78 +534,78 @@
+ 	GLM_FUNC_QUALIFIER typename tvec3<T>::value_type 
+ 	tvec3<T>::swizzle
+ 	(
+-		comp x
++		comp x_
+ 	) const
+ 	{
+-		return (*this)[x];
++		return (*this)[x_];
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec2<T> tvec3<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y
++		comp x_, 
++		comp y_
+ 	) const
+ 	{
+ 		return tvec2<T>(
+-			(*this)[x],
+-			(*this)[y]);
++			(*this)[x_],
++			(*this)[y_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> tvec3<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
+-		comp z
++		comp x_, 
++		comp y_, 
++		comp z_
+ 	) const
+ 	{
+ 		return tvec3<T>(
+-			(*this)[x],
+-			(*this)[y],
+-			(*this)[z]);
++			(*this)[x_],
++			(*this)[y_],
++			(*this)[z_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> tvec3<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
+-		comp z, 
++		comp x_, 
++		comp y_, 
++		comp z_, 
+ 		comp w
+ 	) const
+ 	{
+ 		return tvec4<T>(
+-			(*this)[x],
+-			(*this)[y],
+-			(*this)[z],
++			(*this)[x_],
++			(*this)[y_],
++			(*this)[z_],
+ 			(*this)[w]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tref2<T> tvec3<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y
++		comp x_, 
++		comp y_
+ 	)
+ 	{
+ 		return tref2<T>(
+-			(*this)[x],
+-			(*this)[y]);
++			(*this)[x_],
++			(*this)[y_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tref3<T> tvec3<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
+-		comp z
++		comp x_, 
++		comp y_, 
++		comp z_
+ 	)
+ 	{
+ 		return tref3<T>(
+-			(*this)[x],
+-			(*this)[y],
+-			(*this)[z]);
++			(*this)[x_],
++			(*this)[y_],
++			(*this)[z_]);
+ 	}
+ 
+ 	//////////////////////////////////////
+@@ -615,26 +615,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator+
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x + T(s),
+-			v.y + T(s),
+-			v.z + T(s));
++			v.x + T(s_),
++			v.y + T(s_),
++			v.z + T(s_));
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator+ 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) + v.x,
+-			T(s) + v.y,
+-			T(s) + v.z);
++			T(s_) + v.x,
++			T(s_) + v.y,
++			T(s_) + v.z);
+ 	}
+ 
+ 	template <typename T> 
+@@ -655,26 +655,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator- 
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x - T(s),
+-			v.y - T(s),
+-			v.z - T(s));
++			v.x - T(s_),
++			v.y - T(s_),
++			v.z - T(s_));
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator- 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) - v.x,
+-			T(s) - v.y,
+-			T(s) - v.z);
++			T(s_) - v.x,
++			T(s_) - v.y,
++			T(s_) - v.z);
+ 	}
+ 
+ 	template <typename T> 
+@@ -695,26 +695,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator*
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x * T(s),
+-			v.y * T(s),
+-			v.z * T(s));
++			v.x * T(s_),
++			v.y * T(s_),
++			v.z * T(s_));
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator* 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) * v.x,
+-			T(s) * v.y,
+-			T(s) * v.z);
++			T(s_) * v.x,
++			T(s_) * v.y,
++			T(s_) * v.z);
+ 	}
+ 
+ 	template <typename T> 
+@@ -735,26 +735,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator/
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x / T(s),
+-			v.y / T(s),
+-			v.z / T(s));
++			v.x / T(s_),
++			v.y / T(s_),
++			v.z / T(s_));
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator/ 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) / v.x,
+-			T(s) / v.y,
+-			T(s) / v.z);
++			T(s_) / v.x,
++			T(s_) / v.y,
++			T(s_) / v.z);
+ 	}
+ 
+ 	template <typename T> 
+@@ -816,26 +816,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator% 
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x % T(s),
+-			v.y % T(s),
+-			v.z % T(s));
++			v.x % T(s_),
++			v.y % T(s_),
++			v.z % T(s_));
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator%
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) % v.x,
+-			T(s) % v.y,
+-			T(s) % v.z);
++			T(s_) % v.x,
++			T(s_) % v.y,
++			T(s_) % v.z);
+ 	}
+ 
+ 	template <typename T>
+@@ -855,26 +855,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator& 
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x & T(s),
+-			v.y & T(s),
+-			v.z & T(s));
++			v.x & T(s_),
++			v.y & T(s_),
++			v.z & T(s_));
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator& 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) & v.x,
+-			T(s) & v.y,
+-			T(s) & v.z);
++			T(s_) & v.x,
++			T(s_) & v.y,
++			T(s_) & v.z);
+ 	}
+ 
+ 	template <typename T>
+@@ -894,26 +894,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator| 
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x | T(s),
+-			v.y | T(s),
+-			v.z | T(s));
++			v.x | T(s_),
++			v.y | T(s_),
++			v.z | T(s_));
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator| 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) | v.x,
+-			T(s) | v.y,
+-			T(s) | v.z);
++			T(s_) | v.x,
++			T(s_) | v.y,
++			T(s_) | v.z);
+ 	}
+ 
+ 	template <typename T>
+@@ -933,26 +933,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator^ 
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x ^ T(s),
+-			v.y ^ T(s),
+-			v.z ^ T(s));
++			v.x ^ T(s_),
++			v.y ^ T(s_),
++			v.z ^ T(s_));
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator^ 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) ^ v.x,
+-			T(s) ^ v.y,
+-			T(s) ^ v.z);
++			T(s_) ^ v.x,
++			T(s_) ^ v.y,
++			T(s_) ^ v.z);
+ 	}
+ 
+ 	template <typename T>
+@@ -972,26 +972,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator<< 
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x << T(s),
+-			v.y << T(s),
+-			v.z << T(s));
++			v.x << T(s_),
++			v.y << T(s_),
++			v.z << T(s_));
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator<< 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			T(s) << v.x,
+-			T(s) << v.y,
+-			T(s) << v.z);
++			T(s_) << v.x,
++			T(s_) << v.y,
++			T(s_) << v.z);
+ 	}
+ 
+ 	template <typename T>
+@@ -1011,26 +1011,26 @@
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator>> 
+ 	(
+ 		tvec3<T> const & v, 
+-		T const & s
++		T const & s_
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			v.x >> T(s),
+-			v.y >> T(s),
+-			v.z >> T(s));
++			v.x >> T(s_),
++			v.y >> T(s_),
++			v.z >> T(s_));
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> operator>> 
+ 	(
+-		T const & s, 
++		T const & s_, 
+ 		tvec3<T> const & v
+ 	)
+ 	{
+ 		return tvec3<T>(
+-			s >> T(v.x),
+-			s >> T(v.y),
+-			s >> T(v.z));
++			s_ >> T(v.x),
++			s_ >> T(v.y),
++			s_ >> T(v.z));
+ 	}
+ 
+ 	template <typename T>
+@@ -1062,10 +1062,10 @@
+ 	// tref definition
+ 
+ 	template <typename T> 
+-	GLM_FUNC_QUALIFIER tref3<T>::tref3(T & x, T & y, T & z) :
+-		x(x),
+-		y(y),
+-		z(z)
++	GLM_FUNC_QUALIFIER tref3<T>::tref3(T & x_, T & y_, T & z_) :
++		x(x_),
++		y(y_),
++		z(z_)
+ 	{}
+ 
+ 	template <typename T> 
+diff -ur glm.org/glm/core/type_vec4.hpp glm/glm/core/type_vec4.hpp
+--- glm.org/glm/core/type_vec4.hpp	2013-12-08 17:04:59.705365270 +0100
++++ glm/glm/core/type_vec4.hpp	2013-12-08 17:07:20.078840535 +0100
+@@ -177,33 +177,33 @@
+ 		}
+ 
+ 		template <int E0, int E1>
+-		GLM_FUNC_DECL tvec4(T const & x, T const & y, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v)
++		GLM_FUNC_DECL tvec4(T const & x_, T const & y_, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v)
+ 		{
+-			*this = tvec4<T>(x, y, v());
++			*this = tvec4<T>(x_, y_, v());
+ 		}
+ 
+ 		template <int E0, int E1>
+-		GLM_FUNC_DECL tvec4(T const & x, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & w)
++		GLM_FUNC_DECL tvec4(T const & x_, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & w_)
+ 		{
+-			*this = tvec4<T>(x, v(), w);
++			*this = tvec4<T>(x_, v(), w);
+ 		}
+ 
+ 		template <int E0, int E1>
+-		GLM_FUNC_DECL tvec4(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & z, T const & w)
++		GLM_FUNC_DECL tvec4(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & z_, T const & w_)
+ 		{
+-			*this = tvec4<T>(v(), z, w);
++			*this = tvec4<T>(v(), z_, w_);
+ 		}
+ 
+ 		template <int E0, int E1, int E2>
+-		GLM_FUNC_DECL tvec4(glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & v, T const & w)
++		GLM_FUNC_DECL tvec4(glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & v, T const & w_)
+ 		{
+-			*this = tvec4<T>(v(), w);
++			*this = tvec4<T>(v(), w_);
+ 		}
+ 
+ 		template <int E0, int E1, int E2>
+-		GLM_FUNC_DECL tvec4(T const & x, glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & v)
++		GLM_FUNC_DECL tvec4(T const & x_, glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & v)
+ 		{
+-			*this = tvec4<T>(x, v());
++			*this = tvec4<T>(x_, v());
+ 		}
+ 
+ 		//////////////////////////////////////
+diff -ur glm.org/glm/core/type_vec4.inl glm/glm/core/type_vec4.inl
+--- glm.org/glm/core/type_vec4.inl	2013-12-08 17:04:59.706365245 +0100
++++ glm/glm/core/type_vec4.inl	2013-12-08 17:07:20.079840510 +0100
+@@ -95,12 +95,12 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T>::tvec4
+ 	(
+-		value_type const & s
++		value_type const & s_
+ 	) :
+-		x(s),
+-		y(s),
+-		z(s),
+-		w(s)
++		x(s_),
++		y(s_),
++		z(s_),
++		w(s_)
+ 	{}
+ 
+ 	template <typename T>
+@@ -123,12 +123,12 @@
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T>::tvec4
+ 	(
+-		tref4<T> const & r
++		tref4<T> const & r_
+ 	) :
+-		x(r.x),
+-		y(r.y),
+-		z(r.z),
+-		w(r.w)
++		x(r_.x),
++		y(r_.y),
++		z(r_.z),
++		w(r_.w)
+ 	{}
+ 
+ 	template <typename T>
+@@ -178,22 +178,22 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T>::tvec4
+ 	(
+ 		tref3<A> const & v, 
+-		B const & s
++		B const & s_
+ 	) :
+ 		x(value_type(v.x)),
+ 		y(value_type(v.y)),
+ 		z(value_type(v.z)),
+-		w(value_type(s))
++		w(value_type(s_))
+ 	{}
+ 
+ 	template <typename T>
+ 	template <typename A, typename B> 
+ 	GLM_FUNC_QUALIFIER tvec4<T>::tvec4
+ 	(
+-		A const & s, 
++		A const & s_, 
+ 		tref3<B> const & v
+ 	) :
+-		x(value_type(s)),
++		x(value_type(s_)),
+ 		y(value_type(v.x)),
+ 		z(value_type(v.y)),
+ 		w(value_type(v.z))
+@@ -245,27 +245,27 @@
+ 	template <typename U> 
+ 	GLM_FUNC_QUALIFIER tvec4<T>::tvec4
+ 	(
+-		U const & x
++		U const & x_
+ 	) :
+-		x(value_type(x)),
+-		y(value_type(x)),
+-		z(value_type(x)),
+-		w(value_type(x))
++		x(value_type(x_)),
++		y(value_type(x_)),
++		z(value_type(x_)),
++		w(value_type(x_))
+ 	{}
+ 
+ 	template <typename T>
+ 	template <typename A, typename B, typename C, typename D> 
+ 	GLM_FUNC_QUALIFIER tvec4<T>::tvec4
+ 	(
+-		A const & x, 
+-		B const & y, 
+-		C const & z, 
+-		D const & w
+-	) :
+-		x(value_type(x)),
+-		y(value_type(y)),
+-		z(value_type(z)),
+-		w(value_type(w))
++		A const & x_, 
++		B const & y_, 
++		C const & z_, 
++		D const & w_
++	) :
++		x(value_type(x_)),
++		y(value_type(y_)),
++		z(value_type(z_)),
++		w(value_type(w_))
+ 	{}
+ 
+ 	//////////////////////////////////////
+@@ -318,22 +318,22 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T>::tvec4
+ 	(
+ 		tvec3<A> const & v, 
+-		B const & s
++		B const & s_
+ 	) :
+ 		x(value_type(v.x)),
+ 		y(value_type(v.y)),
+ 		z(value_type(v.z)),
+-		w(value_type(s))
++		w(value_type(s_))
+ 	{}
+ 
+ 	template <typename T>
+ 	template <typename A, typename B> 
+ 	GLM_FUNC_QUALIFIER tvec4<T>::tvec4
+ 	(
+-		A const & s, 
++		A const & s_, 
+ 		tvec3<B> const & v
+ 	) :
+-		x(value_type(s)),
++		x(value_type(s_)),
+ 		y(value_type(v.x)),
+ 		z(value_type(v.y)),
+ 		w(value_type(v.z))
+@@ -396,12 +396,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator+= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator+= (U s_)
+ 	{
+-		this->x += T(s);
+-		this->y += T(s);
+-		this->z += T(s);
+-		this->w += T(s);
++		this->x += T(s_);
++		this->y += T(s_);
++		this->z += T(s_);
++		this->w += T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -421,12 +421,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator-= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator-= (U s_)
+ 	{
+-		this->x -= T(s);
+-		this->y -= T(s);
+-		this->z -= T(s);
+-		this->w -= T(s);
++		this->x -= T(s_);
++		this->y -= T(s_);
++		this->z -= T(s_);
++		this->w -= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -446,12 +446,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator*= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator*= (U s_)
+ 	{
+-		this->x *= T(s);
+-		this->y *= T(s);
+-		this->z *= T(s);
+-		this->w *= T(s);
++		this->x *= T(s_);
++		this->y *= T(s_);
++		this->z *= T(s_);
++		this->w *= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -471,12 +471,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator/= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator/= (U s_)
+ 	{
+-		this->x /= T(s);
+-		this->y /= T(s);
+-		this->z /= T(s);
+-		this->w /= T(s);
++		this->x /= T(s_);
++		this->y /= T(s_);
++		this->z /= T(s_);
++		this->w /= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -519,12 +519,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator%= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator%= (U s_)
+ 	{
+-		this->x %= T(s);
+-		this->y %= T(s);
+-		this->z %= T(s);
+-		this->w %= T(s);
++		this->x %= T(s_);
++		this->y %= T(s_);
++		this->z %= T(s_);
++		this->w %= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -544,12 +544,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator&= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator&= (U s_)
+ 	{
+-		this->x &= T(s);
+-		this->y &= T(s);
+-		this->z &= T(s);
+-		this->w &= T(s);
++		this->x &= T(s_);
++		this->y &= T(s_);
++		this->z &= T(s_);
++		this->w &= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -569,12 +569,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator|= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator|= (U s_)
+ 	{
+-		this->x |= T(s);
+-		this->y |= T(s);
+-		this->z |= T(s);
+-		this->w |= T(s);
++		this->x |= T(s_);
++		this->y |= T(s_);
++		this->z |= T(s_);
++		this->w |= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -594,12 +594,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator^= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator^= (U s_)
+ 	{
+-		this->x ^= T(s);
+-		this->y ^= T(s);
+-		this->z ^= T(s);
+-		this->w ^= T(s);
++		this->x ^= T(s_);
++		this->y ^= T(s_);
++		this->z ^= T(s_);
++		this->w ^= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -619,12 +619,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator<<= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator<<= (U s_)
+ 	{
+-		this->x <<= T(s);
+-		this->y <<= T(s);
+-		this->z <<= T(s);
+-		this->w <<= T(s);
++		this->x <<= T(s_);
++		this->y <<= T(s_);
++		this->z <<= T(s_);
++		this->w <<= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -644,12 +644,12 @@
+ 
+ 	template <typename T>
+ 	template <typename U> 
+-	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator>>= (U s)
++	GLM_FUNC_QUALIFIER tvec4<T> & tvec4<T>::operator>>= (U s_)
+ 	{
+-		this->x >>= T(s);
+-		this->y >>= T(s);
+-		this->z >>= T(s);
+-		this->w >>= T(s);
++		this->x >>= T(s_);
++		this->y >>= T(s_);
++		this->z >>= T(s_);
++		this->w >>= T(s_);
+ 		return *this;
+ 	}
+ 
+@@ -674,94 +674,94 @@
+ 	GLM_FUNC_QUALIFIER typename tvec4<T>::value_type 
+ 	tvec4<T>::swizzle
+ 	(	
+-		comp x
++		comp x_
+ 	) const
+ 	{
+-		return (*this)[x];
++		return (*this)[x_];
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec2<T> tvec4<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y
++		comp x_, 
++		comp y_
+ 	) const
+ 	{
+ 		return tvec2<T>(
+-			(*this)[x],
+-			(*this)[y]);
++			(*this)[x_],
++			(*this)[y_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec3<T> tvec4<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
+-		comp z
++		comp x_, 
++		comp y_, 
++		comp z_
+ 	) const
+ 	{
+ 		return tvec3<T>(
+-			(*this)[x],
+-			(*this)[y],
+-			(*this)[z]);
++			(*this)[x_],
++			(*this)[y_],
++			(*this)[z_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> tvec4<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
+-		comp z, 
+-		comp w
++		comp x_, 
++		comp y_, 
++		comp z_, 
++		comp w_
+ 	) const
+ 	{
+ 		return tvec4<T>(
+-			(*this)[x],
+-			(*this)[y],
+-			(*this)[z],
+-			(*this)[w]);
++			(*this)[x_],
++			(*this)[y_],
++			(*this)[z_],
++			(*this)[w_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tref2<T> tvec4<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y
++		comp x_, 
++		comp y_
+ 	)
+ 	{
+ 		return tref2<T>(
+-			(*this)[x],
+-			(*this)[y]);
++			(*this)[x_],
++			(*this)[y_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tref3<T> tvec4<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
+-		comp z
++		comp x_, 
++		comp y_, 
++		comp z_
+ 	)
+ 	{
+ 		return tref3<T>(
+-			(*this)[x],
+-			(*this)[y],
+-			(*this)[z]);
++			(*this)[x_],
++			(*this)[y_],
++			(*this)[z_]);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tref4<T> tvec4<T>::swizzle
+ 	(
+-		comp x, 
+-		comp y, 
+-		comp z, 
+-		comp w
++		comp x_, 
++		comp y_, 
++		comp z_, 
++		comp w_
+ 	)
+ 	{
+ 		return tref4<T>(
+-			(*this)[x],
+-			(*this)[y],
+-			(*this)[z],
+-			(*this)[w]);
++			(*this)[x_],
++			(*this)[y_],
++			(*this)[z_],
++			(*this)[w_]);
+ 	}
+ 
+ 	//////////////////////////////////////
+@@ -771,28 +771,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator+ 
+ 	(
+ 		tvec4<T> const & v, 
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x + s,
+-			v.y + s,
+-			v.z + s,
+-			v.w + s);
++			v.x + s_,
++			v.y + s_,
++			v.z + s_,
++			v.w + s_);
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator+ 
+ 	(
+-		typename tvec4<T>::value_type const & s, 
++		typename tvec4<T>::value_type const & s_, 
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s + v.x,
+-			s + v.y,
+-			s + v.z,
+-			s + v.w);
++			s_ + v.x,
++			s_ + v.y,
++			s_ + v.z,
++			s_ + v.w);
+ 	}
+ 
+ 	template <typename T> 
+@@ -814,28 +814,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator- 
+ 	(
+ 		tvec4<T> const & v, 
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x - s,
+-			v.y - s,
+-			v.z - s,
+-			v.w - s);
++			v.x - s_,
++			v.y - s_,
++			v.z - s_,
++			v.w - s_);
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator- 
+ 	(
+-		typename tvec4<T>::value_type const & s, 
++		typename tvec4<T>::value_type const & s_, 
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s - v.x,
+-			s - v.y,
+-			s - v.z,
+-			s - v.w);
++			s_ - v.x,
++			s_ - v.y,
++			s_ - v.z,
++			s_ - v.w);
+ 	}
+ 
+ 	template <typename T> 
+@@ -857,28 +857,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator* 
+ 	(
+ 		tvec4<T> const & v, 
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x * s,
+-			v.y * s,
+-			v.z * s,
+-			v.w * s);
++			v.x * s_,
++			v.y * s_,
++			v.z * s_,
++			v.w * s_);
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator* 
+ 	(
+-		typename tvec4<T>::value_type const & s, 
++		typename tvec4<T>::value_type const & s_, 
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s * v.x,
+-			s * v.y,
+-			s * v.z,
+-			s * v.w);
++			s_ * v.x,
++			s_ * v.y,
++			s_ * v.z,
++			s_ * v.w);
+ 	}
+ 
+ 	template <typename T> 
+@@ -900,28 +900,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator/ 
+ 	(
+ 		tvec4<T> const & v, 
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x / s,
+-			v.y / s,
+-			v.z / s,
+-			v.w / s);
++			v.x / s_,
++			v.y / s_,
++			v.z / s_,
++			v.w / s_);
+ 	}
+ 
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator/ 
+ 	(
+-		typename tvec4<T>::value_type const & s, 
++		typename tvec4<T>::value_type const & s_, 
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s / v.x,
+-			s / v.y,
+-			s / v.z,
+-			s / v.w);
++			s_ / v.x,
++			s_ / v.y,
++			s_ / v.z,
++			s_ / v.w);
+ 	}
+ 
+ 	template <typename T> 
+@@ -1012,28 +1012,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator% 
+ 	(
+ 		tvec4<T> const & v, 
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x % s,
+-			v.y % s,
+-			v.z % s,
+-			v.w % s);
++			v.x % s_,
++			v.y % s_,
++			v.z % s_,
++			v.w % s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator% 
+ 	(
+-		typename tvec4<T>::value_type const & s, 
++		typename tvec4<T>::value_type const & s_, 
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s % v.x,
+-			s % v.y,
+-			s % v.z,
+-			s % v.w);
++			s_ % v.x,
++			s_ % v.y,
++			s_ % v.z,
++			s_ % v.w);
+ 	}
+ 
+ 	template <typename T>
+@@ -1054,28 +1054,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator& 
+ 	(
+ 		tvec4<T> const & v, 
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x & s,
+-			v.y & s,
+-			v.z & s,
+-			v.w & s);
++			v.x & s_,
++			v.y & s_,
++			v.z & s_,
++			v.w & s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator& 
+ 	(
+-		typename tvec4<T>::value_type const & s, 
++		typename tvec4<T>::value_type const & s_, 
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s & v.x,
+-			s & v.y,
+-			s & v.z,
+-			s & v.w);
++			s_ & v.x,
++			s_ & v.y,
++			s_ & v.z,
++			s_ & v.w);
+ 	}
+ 
+ 	template <typename T>
+@@ -1096,28 +1096,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator|
+ 	(
+ 		tvec4<T> const & v, 
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x | s,
+-			v.y | s,
+-			v.z | s,
+-			v.w | s);
++			v.x | s_,
++			v.y | s_,
++			v.z | s_,
++			v.w | s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator|
+ 	(
+-		typename tvec4<T>::value_type const & s, 
++		typename tvec4<T>::value_type const & s_, 
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s | v.x,
+-			s | v.y,
+-			s | v.z,
+-			s | v.w);
++			s_ | v.x,
++			s_ | v.y,
++			s_ | v.z,
++			s_ | v.w);
+ 	}
+ 
+ 	template <typename T>
+@@ -1138,28 +1138,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator^
+ 	(
+ 		tvec4<T> const & v, 
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x ^ s,
+-			v.y ^ s,
+-			v.z ^ s,
+-			v.w ^ s);
++			v.x ^ s_,
++			v.y ^ s_,
++			v.z ^ s_,
++			v.w ^ s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator^
+ 	(
+-		typename tvec4<T>::value_type const & s, 
++		typename tvec4<T>::value_type const & s_, 
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s ^ v.x,
+-			s ^ v.y,
+-			s ^ v.z,
+-			s ^ v.w);
++			s_ ^ v.x,
++			s_ ^ v.y,
++			s_ ^ v.z,
++			s_ ^ v.w);
+ 	}
+ 
+ 	template <typename T>
+@@ -1180,28 +1180,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator<<
+ 	(
+ 		tvec4<T> const & v,
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x << s,
+-			v.y << s,
+-			v.z << s,
+-			v.w << s);
++			v.x << s_,
++			v.y << s_,
++			v.z << s_,
++			v.w << s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator<<
+ 	(
+-		typename tvec4<T>::value_type const & s,
++		typename tvec4<T>::value_type const & s_,
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s << v.x,
+-			s << v.y,
+-			s << v.z,
+-			s << v.w);
++			s_ << v.x,
++			s_ << v.y,
++			s_ << v.z,
++			s_ << v.w);
+ 	}
+ 
+ 	template <typename T>
+@@ -1222,28 +1222,28 @@
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator>>
+ 	(
+ 		tvec4<T> const & v,
+-		typename tvec4<T>::value_type const & s
++		typename tvec4<T>::value_type const & s_
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			v.x >> s,
+-			v.y >> s,
+-			v.z >> s,
+-			v.w >> s);
++			v.x >> s_,
++			v.y >> s_,
++			v.z >> s_,
++			v.w >> s_);
+ 	}
+ 
+ 	template <typename T>
+ 	GLM_FUNC_QUALIFIER tvec4<T> operator>>
+ 	(
+-		typename tvec4<T>::value_type const & s,
++		typename tvec4<T>::value_type const & s_,
+ 		tvec4<T> const & v
+ 	)
+ 	{
+ 		return tvec4<T>(
+-			s >> v.x,
+-			s >> v.y,
+-			s >> v.z,
+-			s >> v.w);
++			s_ >> v.x,
++			s_ >> v.y,
++			s_ >> v.z,
++			s_ >> v.w);
+ 	}
+ 
+ 	template <typename T>
+@@ -1279,15 +1279,15 @@
+ 	template <typename T> 
+ 	tref4<T>::tref4
+ 	(
+-		T & x, 
+-		T & y, 
+-		T & z, 
+-		T & w
+-	) :
+-		x(x),
+-		y(y),
+-		z(z),
+-		w(w)
++		T & x_, 
++		T & y_, 
++		T & z_, 
++		T & w_
++	) :
++		x(x_),
++		y(y_),
++		z(z_),
++		w(w_)
+ 	{}
+ 
+ 	template <typename T> 
+diff -ur glm.org/glm/gtc/quaternion.inl glm/glm/gtc/quaternion.inl
+--- glm.org/glm/gtc/quaternion.inl	2013-12-08 17:04:59.707365220 +0100
++++ glm/glm/gtc/quaternion.inl	2013-12-08 17:07:20.081840460 +0100
+@@ -60,15 +60,15 @@
+ 	template <typename T> 
+ 	GLM_FUNC_QUALIFIER tquat<T>::tquat
+ 	(
+-		value_type const & w, 
+-		value_type const & x, 
+-		value_type const & y, 
+-		value_type const & z
++		value_type const & w_, 
++		value_type const & x_, 
++		value_type const & y_, 
++		value_type const & z_
+ 	) :
+-		x(x),
+-		y(y),
+-		z(z),
+-		w(w)
++		x(x_),
++		y(y_),
++		z(z_),
++		w(w_)
+ 	{}
+ 
+ 	//////////////////////////////////////////////////////////////
diff --git a/glm/Wshadow.patch b/glm/Wshadow-windows.patch
similarity index 100%
rename from glm/Wshadow.patch
rename to glm/Wshadow-windows.patch
commit d655dd47a02345c3887b9be20c868bee2a767696
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Dec 9 09:21:40 2013 +0100

    fix windows build
    
    Change-Id: I2c2c22ebfaeb1787b6a848a296476bc2bdf5130e

diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx
index a52430d..7ae8fd3 100644
--- a/chart2/source/view/main/OpenGLRender.cxx
+++ b/chart2/source/view/main/OpenGLRender.cxx
@@ -896,9 +896,9 @@ void OpenGLRender::Release()
 #if defined( WNT )
     wglMakeCurrent(NULL, NULL);
     if (!m_iExternRC)
-        wglDeleteContext(glWin.m_hRC);
+        wglDeleteContext(glWin.hRC);
     if (!m_iExternDC)
-        ReleaseDC(mglWin._hWnd, mglWin._hDC);
+        ReleaseDC(glWin.hWnd, glWin.hDC);
 #elif defined( UNX )
 
     glXMakeCurrent(glWin.dpy, None, NULL);
commit f29ef5a5582b16a086b37dcdbb328230e430ea9d
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Dec 9 09:14:31 2013 +0100

    fix glm patch file
    
    Change-Id: Id06582e7cacb9752f102015619368810959582a0

diff --git a/glm/Wshadow.patch b/glm/Wshadow.patch
index 8607753..c6c9c65 100644
--- a/glm/Wshadow.patch
+++ b/glm/Wshadow.patch
@@ -1,2659 +1,2659 @@
-diff -ur glm.org/glm/core/_detail.hpp glm/glm/core/_detail.hpp
---- glm.org/glm/core/_detail.hpp	2013-12-09 02:05:30.115442079 +0100
-+++ glm/glm/core/_detail.hpp	2013-12-09 02:06:33.749941584 +0100
-@@ -136,12 +136,12 @@
- 			i(0)
- 		{}
- 
--		GLM_FUNC_QUALIFIER uif32(float f) :
--			f(f)
-+		GLM_FUNC_QUALIFIER uif32(float f_) :
-+			f(f_)
- 		{}
- 
--		GLM_FUNC_QUALIFIER uif32(unsigned int i) :
--			i(i)
-+		GLM_FUNC_QUALIFIER uif32(unsigned int i_) :
-+			i(i_)
- 		{}
- 
- 		float f;
-@@ -154,12 +154,12 @@
- 			i(0)
- 		{}
- 
--		GLM_FUNC_QUALIFIER uif64(double f) :
--			f(f)
-+		GLM_FUNC_QUALIFIER uif64(double f_) :
-+			f(f_)
- 		{}
- 
--		GLM_FUNC_QUALIFIER uif64(uint64 i) :
--			i(i)
-+		GLM_FUNC_QUALIFIER uif64(uint64 i_) :
-+			i(i_)
- 		{}
- 
- 		double f;
-diff -ur glm.org/glm/core/type_vec1.hpp glm/glm/core/type_vec1.hpp
---- glm.org/glm/core/type_vec1.hpp	2013-12-08 17:04:59.706365245 +0100
-+++ glm/glm/core/type_vec1.hpp	2013-12-08 17:07:20.079840510 +0100
-@@ -86,19 +86,19 @@
- 		GLM_FUNC_DECL explicit tvec1(
- 			ctor);
- 		GLM_FUNC_DECL explicit tvec1(
--			value_type const & s);
-+			value_type const & s_);
- 
- 		//////////////////////////////////////
- 		// Swizzle constructors
- 
--		GLM_FUNC_DECL tvec1(tref1<T> const & r);
-+		GLM_FUNC_DECL tvec1(tref1<T> const & r_);
- 
- 		//////////////////////////////////////
- 		// Convertion scalar constructors
- 
- 		//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
- 		template <typename U> 
--		GLM_FUNC_DECL explicit tvec1(U const & s);
-+		GLM_FUNC_DECL explicit tvec1(U const & s_);
- 
- 		//////////////////////////////////////
- 		// Convertion vector constructors
-@@ -121,19 +121,19 @@
- 		GLM_FUNC_DECL tvec1<T> & operator= (tvec1<U> const & v);
- 
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator+=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator+=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator+=(tvec1<U> const & v);
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator-=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator-=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator-=(tvec1<U> const & v);
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator*=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator*=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator*=(tvec1<U> const & v);
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator/=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator/=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator/=(tvec1<U> const & v);
- 		GLM_FUNC_DECL tvec1<T> & operator++();
-@@ -143,27 +143,27 @@
- 		// Unary bit operators
- 
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator%=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator%=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator%=(tvec1<U> const & v);
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator&=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator&=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator&=(tvec1<U> const & v);
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator|=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator|=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator|=(tvec1<U> const & v);
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator^=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator^=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator^=(tvec1<U> const & v);
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator<<=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator<<=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator<<=(tvec1<U> const & v);
- 		template <typename U> 
--		GLM_FUNC_DECL tvec1<T> & operator>>=(U const & s);
-+		GLM_FUNC_DECL tvec1<T> & operator>>=(U const & s_);
- 		template <typename U> 
- 		GLM_FUNC_DECL tvec1<T> & operator>>=(tvec1<U> const & v);
- 
-diff -ur glm.org/glm/core/type_vec1.inl glm/glm/core/type_vec1.inl
---- glm.org/glm/core/type_vec1.inl	2013-12-08 17:04:59.707365220 +0100
-+++ glm/glm/core/type_vec1.inl	2013-12-08 17:07:20.081840460 +0100
-@@ -87,9 +87,9 @@
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec1<T>::tvec1
- 	(
--		value_type const & s
-+		value_type const & s_
- 	) :
--		x(s)
-+		x(s_)
- 	{}
- 
- 	//////////////////////////////////////
-@@ -98,9 +98,9 @@
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec1<T>::tvec1
- 	(
--		tref1<T> const & r
-+		tref1<T> const & r_
- 	) :
--		x(r.x)
-+		x(r_.x)
- 	{}
- 
- 	//////////////////////////////////////
-@@ -110,9 +110,9 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T>::tvec1
- 	(
--		U const & s
-+		U const & s_
- 	) :
--		x(value_type(s))
-+		x(value_type(s_))
- 	{}
- 
- 	//////////////////////////////////////
-@@ -173,10 +173,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator+=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x += T(s);
-+		this->x += T(s_);
- 		return *this;
- 	}
- 
-@@ -195,10 +195,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator-=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x -= T(s);
-+		this->x -= T(s_);
- 		return *this;
- 	}
- 
-@@ -217,10 +217,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator*=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x *= T(s);
-+		this->x *= T(s_);
- 		return *this;
- 	}
- 
-@@ -239,10 +239,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator/=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x /= T(s);
-+		this->x /= T(s_);
- 		return *this;
- 	}
- 
-@@ -301,10 +301,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator%=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x %= T(s);
-+		this->x %= T(s_);
- 		return *this;
- 	}
- 
-@@ -323,10 +323,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator&=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x &= T(s);
-+		this->x &= T(s_);
- 		return *this;
- 	}
- 
-@@ -345,10 +345,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator|=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x |= T(s);
-+		this->x |= T(s_);
- 		return *this;
- 	}
- 
-@@ -367,10 +367,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator^=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x ^= T(s);
-+		this->x ^= T(s_);
- 		return *this;
- 	}
- 
-@@ -389,10 +389,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator<<=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x <<= T(s);
-+		this->x <<= T(s_);
- 		return *this;
- 	}
- 
-@@ -411,10 +411,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec1<T> & tvec1<T>::operator>>=
- 	(
--		U const & s
-+		U const & s_
- 	)
- 	{
--		this->x >>= T(s);
-+		this->x >>= T(s_);
- 		return *this;
- 	}
- 
-@@ -434,21 +434,21 @@
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER T 
--	tvec1<T>::swizzle(comp x) const
-+	tvec1<T>::swizzle(comp x_) const
- 	{
--		return (*this)[x];
-+		return (*this)[x_];
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec2<T> 
- 	tvec1<T>::swizzle
- 	(
--		comp x, 
-+		comp x_, 
- 		comp y
- 	) const
- 	{
- 		return tvec2<T>(
--			(*this)[x],
-+			(*this)[x_],
- 			(*this)[y]);
- 	}
- 
-@@ -456,13 +456,13 @@
- 	GLM_FUNC_QUALIFIER tvec3<T> 
- 	tvec1<T>::swizzle
- 	(
--		comp x, 
-+		comp x_, 
- 		comp y, 
- 		comp z
- 	) const
- 	{
- 		return tvec3<T>(
--			(*this)[x],
-+			(*this)[x_],
- 			(*this)[y],
- 			(*this)[z]);
- 	}
-@@ -471,14 +471,14 @@
- 	GLM_FUNC_QUALIFIER tvec4<T> 
- 	tvec1<T>::swizzle
- 	(
--		comp x, 
-+		comp x_, 
- 		comp y, 
- 		comp z, 
- 		comp w
- 	) const
- 	{
- 		return tvec4<T>(
--			(*this)[x],
-+			(*this)[x_],
- 			(*this)[y],
- 			(*this)[z],
- 			(*this)[w]);
-@@ -488,11 +488,11 @@
- 	GLM_FUNC_QUALIFIER tref1<T> 
- 	tvec1<T>::swizzle
- 	(
--		comp x
-+		comp x_
- 	)
- 	{
- 		return tref1<T>(
--			(*this)[x]);
-+			(*this)[x_]);
- 	}
- 
- 	//////////////////////////////////////
-@@ -502,22 +502,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator+ 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x + s);
-+			v.x + s_);
- 	}
- 
- 	template <typename T> 
- 	GLM_FUNC_QUALIFIER tvec1<T> operator+ 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_, 
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s + v.x);
-+			s_ + v.x);
- 	}
- 
- 	template <typename T> 
-@@ -536,22 +536,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator- 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x - s);
-+			v.x - s_);
- 	}
- 
- 	template <typename T> 
- 	GLM_FUNC_QUALIFIER tvec1<T> operator- 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s - v.x);
-+			s_ - v.x);
- 	}
- 
- 	template <typename T> 
-@@ -570,22 +570,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator* 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x * s);
-+			v.x * s_);
- 	}
- 
- 	template <typename T> 
- 	GLM_FUNC_QUALIFIER tvec1<T> operator* 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s * v.x);
-+			s_ * v.x);
- 	}
- 
- 	template <typename T> 
-@@ -604,22 +604,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator/ 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x / s);
-+			v.x / s_);
- 	}
- 
- 	template <typename T> 
- 	GLM_FUNC_QUALIFIER tvec1<T> operator/ 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s / v.x);
-+			s_ / v.x);
- 	}
- 
- 	template <typename T> 
-@@ -673,22 +673,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator% 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x % s);
-+			v.x % s_);
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec1<T> operator% 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s % v.x);
-+			s_ % v.x);
- 	}
- 
- 	template <typename T>
-@@ -706,22 +706,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator& 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x & s);
-+			v.x & s_);
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec1<T> operator& 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s & v.x);
-+			s_ & v.x);
- 	}
- 
- 	template <typename T>
-@@ -739,22 +739,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator| 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x | s);
-+			v.x | s_);
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec1<T> operator| 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s | v.x);
-+			s_ | v.x);
- 	}
- 
- 	template <typename T>
-@@ -772,22 +772,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator^ 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x ^ s);
-+			v.x ^ s_);
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec1<T> operator^ 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s ^ v.x);
-+			s_ ^ v.x);
- 	}
- 
- 	template <typename T>
-@@ -805,22 +805,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator<< 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x << s);
-+			v.x << s_);
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec1<T> operator<< 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s << v.x);
-+			s_ << v.x);
- 	}
- 
- 	template <typename T>
-@@ -838,22 +838,22 @@
- 	GLM_FUNC_QUALIFIER tvec1<T> operator>> 
- 	(
- 		tvec1<T> const & v, 
--		typename tvec1<T>::value_type const & s
-+		typename tvec1<T>::value_type const & s_
- 	)
- 	{
- 		return tvec1<T>(
--			v.x >> s);
-+			v.x >> s_);
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec1<T> operator>> 
- 	(
--		typename tvec1<T>::value_type const & s, 
-+		typename tvec1<T>::value_type const & s_,
- 		tvec1<T> const & v
- 	)
- 	{
- 		return tvec1<T>(
--			s >> v.x);
-+			s_ >> v.x);
- 	}
- 
- 	template <typename T>
-@@ -883,9 +883,9 @@
- 	template <typename T> 
- 	GLM_FUNC_QUALIFIER tref1<T>::tref1
- 	(
--		T & x
-+		T & x_
- 	) :
--		x(x)
-+		x(x_)
- 	{}
- 
- 	template <typename T> 
-diff -ur glm.org/glm/core/type_vec2.inl glm/glm/core/type_vec2.inl
---- glm.org/glm/core/type_vec2.inl	2013-12-08 17:04:59.705365270 +0100
-+++ glm/glm/core/type_vec2.inl	2013-12-08 17:07:20.078840535 +0100
-@@ -91,10 +91,10 @@
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec2<T>::tvec2
- 	(
--		value_type const & s
-+		value_type const & s_
- 	) :
--		x(s),
--		y(s)
-+		x(s_),
-+		y(s_)
- 	{}
- 
- 	template <typename T>
-@@ -113,10 +113,10 @@
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec2<T>::tvec2
- 	(
--		tref2<T> const & r
-+		tref2<T> const & r_
- 	) :
--		x(r.x),
--		y(r.y)
-+		x(r_.x),
-+		y(r_.y)
- 	{}
- 
- 	//////////////////////////////////////
-@@ -126,10 +126,10 @@
- 	template <typename U> 
- 	GLM_FUNC_QUALIFIER tvec2<T>::tvec2
- 	(
--		U const & x
-+		U const & x_
- 	) :
--		x(value_type(x)),
--		y(value_type(x))
-+		x(value_type(x_)),
-+		y(value_type(x_))
- 	{}
- 
- 	template <typename T>
-@@ -204,10 +204,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator+=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator+=(U s_)
- 	{
--		this->x += T(s);
--		this->y += T(s);
-+		this->x += T(s_);
-+		this->y += T(s_);
- 		return *this;
- 	}
- 
-@@ -225,10 +225,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator-=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator-=(U s_)
- 	{
--		this->x -= T(s);
--		this->y -= T(s);
-+		this->x -= T(s_);
-+		this->y -= T(s_);
- 		return *this;
- 	}
- 
-@@ -246,10 +246,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator*=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator*=(U s_)
- 	{
--		this->x *= T(s);
--		this->y *= T(s);
-+		this->x *= T(s_);
-+		this->y *= T(s_);
- 		return *this;
- 	}
- 
-@@ -267,10 +267,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator/=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator/=(U s_)
- 	{
--		this->x /= T(s);
--		this->y /= T(s);
-+		this->x /= T(s_);
-+		this->y /= T(s_);
- 		return *this;
- 	}
- 
-@@ -330,10 +330,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator%=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator%=(U s_)
- 	{
--		this->x %= T(s);
--		this->y %= T(s);
-+		this->x %= T(s_);
-+		this->y %= T(s_);
- 		return *this;
- 	}
- 
-@@ -351,10 +351,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator&=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator&=(U s_)
- 	{
--		this->x &= T(s);
--		this->y &= T(s);
-+		this->x &= T(s_);
-+		this->y &= T(s_);
- 		return *this;
- 	}
- 
-@@ -372,10 +372,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator|=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator|=(U s_)
- 	{
--		this->x |= T(s);
--		this->y |= T(s);
-+		this->x |= T(s_);
-+		this->y |= T(s_);
- 		return *this;
- 	}
- 
-@@ -393,10 +393,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator^=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator^=(U s_)
- 	{
--		this->x ^= T(s);
--		this->y ^= T(s);
-+		this->x ^= T(s_);
-+		this->y ^= T(s_);
- 		return *this;
- 	}
- 
-@@ -414,10 +414,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator<<=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator<<=(U s_)
- 	{
--		this->x <<= T(s);
--		this->y <<= T(s);
-+		this->x <<= T(s_);
-+		this->y <<= T(s_);
- 		return *this;
- 	}
- 
-@@ -435,10 +435,10 @@
- 
- 	template <typename T>
- 	template <typename U> 
--	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator>>=(U s)
-+	GLM_FUNC_QUALIFIER tvec2<T> & tvec2<T>::operator>>=(U s_)
- 	{
--		this->x >>= T(s);
--		this->y >>= T(s);
-+		this->x >>= T(s_);
-+		this->y >>= T(s_);
- 		return *this;
- 	}
- 
-@@ -460,50 +460,50 @@
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER typename tvec2<T>::value_type tvec2<T>::swizzle
- 	(
--		comp x
-+		comp x_
- 	) const
- 	{
--		return (*this)[x];
-+		return (*this)[x_];
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec2<T> tvec2<T>::swizzle
- 	(
--		comp x, 
--		comp y
-+		comp x_, 
-+		comp y_
- 	) const
- 	{
- 		return tvec2<T>(
--			(*this)[x],
--			(*this)[y]);
-+			(*this)[x_],
-+			(*this)[y_]);
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec3<T> tvec2<T>::swizzle
- 	(
--		comp x, 
--		comp y, 
-+		comp x_, 
-+		comp y_, 
- 		comp z
- 	) const
- 	{
- 		return tvec3<T>(
--			(*this)[x],
--			(*this)[y],
-+			(*this)[x_],
-+			(*this)[y_],
- 			(*this)[z]);
- 	}
- 
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec4<T> tvec2<T>::swizzle
- 	(
--		comp x, 
--		comp y, 
-+		comp x_, 
-+		comp y_, 
- 		comp z, 
- 		comp w
- 	) const
- 	{
- 		return tvec4<T>(
--			(*this)[x],
--			(*this)[y],
-+			(*this)[x_],
-+			(*this)[y_],
- 			(*this)[z],
- 			(*this)[w]);
- 	}
-@@ -511,13 +511,13 @@
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tref2<T> tvec2<T>::swizzle
- 	(
--		comp x, 
--		comp y
-+		comp x_, 
-+		comp y_
- 	)
- 	{
- 		return tref2<T>(
--			(*this)[x],
--			(*this)[y]);
-+			(*this)[x_],
-+			(*this)[y_]);
- 	}
- 
- 	//////////////////////////////////////
-@@ -527,12 +527,12 @@
- 	GLM_FUNC_QUALIFIER tvec2<T> operator+ 
- 	(
- 		tvec2<T> const & v, 
--		T const & s
-+		T const & s_
- 	)
- 	{
- 		return tvec2<T>(
--			v.x + T(s),
--			v.y + T(s));
-+			v.x + T(s_),
-+			v.y + T(s_));
- 	}
- 
- 	template <typename T> 
-@@ -942,11 +942,11 @@
- 	template <typename T> 
- 	tref2<T>::tref2
- 	(
--		T & x, 
--		T & y
-+		T & x_, 
-+		T & y_
- 	) :
--		x(x),
--		y(y)
-+		x(x_),
-+		y(y_)
- 	{}
- 
- 	template <typename T> 
-diff -ur glm.org/glm/core/type_vec3.hpp glm/glm/core/type_vec3.hpp
---- glm.org/glm/core/type_vec3.hpp	2013-12-08 17:04:59.707365220 +0100
-+++ glm/glm/core/type_vec3.hpp	2013-12-08 17:07:20.081840460 +0100
-@@ -170,15 +170,15 @@
- 		}
- 
- 		template <int E0, int E1>
--		GLM_FUNC_DECL tvec3(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & s)
-+		GLM_FUNC_DECL tvec3(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & s_)
- 		{
--			*this = tvec3<T>(v(), s);
-+			*this = tvec3<T>(v(), s_);
- 		}
- 
- 		template <int E0, int E1>
--		GLM_FUNC_DECL tvec3(T const & s, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v)
-+		GLM_FUNC_DECL tvec3(T const & s_, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v)
- 		{
--			*this = tvec3<T>(s, v());
-+			*this = tvec3<T>(s_, v());
- 		}
- 
- 		//////////////////////////////////////
-diff -ur glm.org/glm/core/type_vec3.inl glm/glm/core/type_vec3.inl
---- glm.org/glm/core/type_vec3.inl	2013-12-08 17:04:59.706365245 +0100
-+++ glm/glm/core/type_vec3.inl	2013-12-08 17:07:20.079840510 +0100
-@@ -93,11 +93,11 @@
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
- 	(
--		value_type const & s
-+		value_type const & s_
- 	) :
--		x(s),
--		y(s),
--		z(s)
-+		x(s_),
-+		y(s_),
-+		z(s_)
- 	{}
- 
- 	template <typename T>
-@@ -118,11 +118,11 @@
- 	template <typename T>
- 	GLM_FUNC_QUALIFIER tvec3<T>::tvec3
- 	(

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list