]> git.tdb.fi Git - libs/gl.git/blobdiff - source/bindable.h
Unbind things if they are deleted while current
[libs/gl.git] / source / bindable.h
index 8a5821b957cf4dd1569e3e840d6ad2ee8207e5ed..20b6482a9ec92009e555e9cdbe34519e49699787 100644 (file)
@@ -15,6 +15,7 @@ protected:
        static const T *cur_obj;
 
        Bindable() { }
+       ~Bindable() { if(cur_obj==this) T::unbind(); }
 
        static bool set_current(const T *obj)
        {
@@ -39,8 +40,11 @@ A helper class for Bindables that revert to a default object on unbind.
 template<typename T>
 class BindableWithDefault: protected Bindable<T>
 {
+       friend class Bindable<T>;
+
 protected:
        BindableWithDefault() { }
+       ~BindableWithDefault() { if(this==&default_object()) Bindable<T>::set_current(0); }
 
 public:
        static const T *current()