revert r29898 and part of r29899, that Free() usage is strange and I'm not touching...
authordavilla <davilla@svn>
Sat, 8 May 2010 00:17:32 +0000 (00:17 +0000)
committerdavilla <davilla@svn>
Sat, 8 May 2010 00:17:32 +0000 (00:17 +0000)
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@29917 568bbfeb-2a22-0410-94d2-cc84cf5bfa90

guilib/Shader.h
xbmc/cores/VideoRenderers/LinuxRendererGL.cpp

index f96549c..d4f387a 100644 (file)
@@ -40,9 +40,9 @@ namespace Shaders {
   {
   public:
     CShader() { m_compiled = false; }
-    virtual ~CShader() { Free(); }
+    virtual ~CShader() {}
     virtual bool Compile() = 0;
-    virtual void Free() {}
+    virtual void Free() = 0;
     virtual GLuint Handle() = 0;
     virtual void SetSource(const string& src) { m_source = src; }
     virtual bool LoadSource(const string& filename, const string& prefix = "");
@@ -64,7 +64,7 @@ namespace Shaders {
   {
   public:
     CVertexShader() { m_vertexShader = 0; }
-    virtual ~CVertexShader() {}
+    virtual ~CVertexShader() { Free(); }
     virtual void Free() {}
     virtual GLuint Handle() { return m_vertexShader; }
 
@@ -96,7 +96,7 @@ namespace Shaders {
   {
   public:
     CPixelShader() { m_pixelShader = 0; }
-    virtual ~CPixelShader() {}
+    virtual ~CPixelShader() { Free(); }
     virtual void Free() {}
     virtual GLuint Handle() { return m_pixelShader; }
 
index f78bfae..348d229 100644 (file)
@@ -184,6 +184,7 @@ CLinuxRendererGL::~CLinuxRendererGL()
 
   if (m_pYUVShader)
   {
+    m_pYUVShader->Free();
     delete m_pYUVShader;
     m_pYUVShader = NULL;
   }
@@ -1080,6 +1081,7 @@ void CLinuxRendererGL::LoadShaders(int field)
 
     if (m_pYUVShader)
     {
+      m_pYUVShader->Free();
       delete m_pYUVShader;
       m_pYUVShader = NULL;
     }
@@ -1107,6 +1109,7 @@ void CLinuxRendererGL::LoadShaders(int field)
         }
         else
         {
+          m_pYUVShader->Free();
           delete m_pYUVShader;
           m_pYUVShader = NULL;
           CLog::Log(LOGERROR, "GL: Error enabling YUV2RGB GLSL shader");
@@ -1132,6 +1135,7 @@ void CLinuxRendererGL::LoadShaders(int field)
         }
         else
         {
+          m_pYUVShader->Free();
           delete m_pYUVShader;
           m_pYUVShader = NULL;
           CLog::Log(LOGERROR, "GL: Error enabling YUV2RGB ARB shader");