]> git.tdb.fi Git - libs/gl.git/blobdiff - source/bindable.h
Move extension requirements from ProgramData to UniformBlock
[libs/gl.git] / source / bindable.h
index 8651c70ee066b6cbfa2e8f40cd967b0a92f148cd..8a5821b957cf4dd1569e3e840d6ad2ee8207e5ed 100644 (file)
@@ -99,7 +99,8 @@ private:
        template<typename T>
        void init(const T *o)
        {
-               cleanup = (o ? &unbind<T> : 0);
+               cleanup = (o ? static_cast<CleanupFunc *>(&unbind<T>) : 0);
+               slot = 0;
                if(o)
                        o->bind();
                else
@@ -109,7 +110,7 @@ private:
        template<typename T, typename S>
        void init(const T *o, S s)
        {
-               cleanup = (o ? &unbind_from<T, S> : 0);
+               cleanup = (o ? static_cast<CleanupFunc *>(&unbind_from<T, S>) : 0);
                slot = s;
                if(o)
                        o->bind_to(s);
@@ -168,7 +169,8 @@ private:
        void init(T *o)
        {
                old = T::current();
-               cleanup = (o!=old ? &restore<T> : 0);
+               slot = 0;
+               cleanup = (o!=old ? static_cast<CleanupFunc *>(&restore<T>) : 0);
                if(o)
                        o->bind();
                else if(old)
@@ -180,7 +182,7 @@ private:
        {
                old = T::current(s);
                slot = s;
-               cleanup = (o!=old ? &restore_to<T, S> : 0);
+               cleanup = (o!=old ? static_cast<CleanupFunc *>(&restore_to<T, S>) : 0);
                if(o)
                        o->bind_to(s);
                else if(old)