Maybe fix typename / no-typename problems better.
[ardour.git] / libs / pbd / pbd / stateful.h
index dd1659db556e1d1b8d3df6dcbc938c47160df744..506d05877337ff96089336e9a8993cd628999556 100644 (file)
@@ -65,7 +65,10 @@ class Stateful {
        void save_extra_xml (const XMLNode&);
 
        const PBD::ID& id() const { return _id; }
-        
+       bool set_id (const XMLNode&);
+       void set_id (const std::string&);
+       void reset_id ();
+
         /* history management */
 
        void clear_changes ();
@@ -87,9 +90,9 @@ class Stateful {
 
        virtual void suspend_property_changes ();
        virtual void resume_property_changes ();
-        
-        virtual bool frozen() const { return _frozen; }
 
+        bool property_changes_suspended() const { return g_atomic_int_get (&_stateful_frozen) > 0; }
+        
   protected:
 
        void add_instant_xml (XMLNode&, const sys::path& directory_path);
@@ -106,8 +109,6 @@ class Stateful {
 
        XMLNode *_extra_xml;
        XMLNode *_instant_xml;
-       PBD::ID  _id;
-        int32_t  _frozen;
        PBD::PropertyChange     _pending_changed;
         Glib::Mutex _lock;
 
@@ -119,7 +120,10 @@ class Stateful {
             within thaw() just before send_change() is called.
         */
         virtual void mid_thaw (const PropertyChange&) { }
-        bool property_changes_suspended() const { return g_atomic_int_get (&_frozen) > 0; }
+
+  private:
+       PBD::ID  _id;
+        int32_t  _stateful_frozen;
 };
 
 } // namespace PBD