diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-10-05 01:49:32 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-10-05 01:49:32 +0000 |
commit | ffdf5ada616d285fafb58f45c2e3d37b212a328a (patch) | |
tree | eb4fa2dcd1db72bcbeffebf86fc40a3cf30cf4be /libs/ardour/ardour | |
parent | 5ad68cf2c5a7df68b7cc3a3d5a4f76f03a54c32e (diff) |
Generic MIDI control now saves+restores its state; PBD::ID now requires a buffer size for its print() method
git-svn-id: svn://localhost/ardour2/trunk@949 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/control_protocol_manager.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/io.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/panner.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin.h | 7 | ||||
-rw-r--r-- | libs/ardour/ardour/route.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 17 |
6 files changed, 21 insertions, 14 deletions
diff --git a/libs/ardour/ardour/control_protocol_manager.h b/libs/ardour/ardour/control_protocol_manager.h index 8eda7a4555..99de5479fb 100644 --- a/libs/ardour/ardour/control_protocol_manager.h +++ b/libs/ardour/ardour/control_protocol_manager.h @@ -24,6 +24,9 @@ struct ControlProtocolInfo { bool requested; bool mandatory; XMLNode* state; + + ControlProtocolInfo() : descriptor (0), protocol (0), state (0) {} + ~ControlProtocolInfo() { if (state) { delete state; } } }; class ControlProtocolManager : public sigc::trackable, public Stateful @@ -46,6 +49,8 @@ struct ControlProtocolInfo { static const std::string state_node_name; + void set_protocol_states (const XMLNode&); + int set_state (const XMLNode&); XMLNode& get_state (void); diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h index 163ae462f3..c32ef31de8 100644 --- a/libs/ardour/ardour/io.h +++ b/libs/ardour/ardour/io.h @@ -295,7 +295,7 @@ public: gain_t initial, gain_t target, bool invert_polarity); struct GainControllable : public PBD::Controllable { - GainControllable (IO& i) : io (i) {} + GainControllable (std::string name, IO& i) : Controllable (name), io (i) {} void set_value (float val); float get_value (void) const; diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index 3091527e59..0cb0c3dfaa 100644 --- a/libs/ardour/ardour/panner.h +++ b/libs/ardour/ardour/panner.h @@ -114,7 +114,7 @@ class StreamPanner : public sigc::trackable, public Stateful bool _muted; struct PanControllable : public PBD::Controllable { - PanControllable (StreamPanner& p) : panner (p) {} + PanControllable (std::string name, StreamPanner& p) : Controllable (name), panner (p) {} StreamPanner& panner; diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index dcc657018a..bc71da84ae 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -98,9 +98,8 @@ class Plugin : public PBD::StatefulDestructible, public sigc::trackable float step; float smallstep; float largestep; - - bool min_unbound; - bool max_unbound; + bool min_unbound; + bool max_unbound; }; virtual uint32_t unique_id() const = 0; @@ -162,7 +161,7 @@ class Plugin : public PBD::StatefulDestructible, public sigc::trackable void setup_controls (); struct PortControllable : public PBD::Controllable { - PortControllable (Plugin&, uint32_t abs_port_id, + PortControllable (std::string name, Plugin&, uint32_t abs_port_id, float lower, float upper, bool toggled, bool logarithmic); void set_value (float); diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 8ebc598e95..b3ac609880 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -222,7 +222,7 @@ class Route : public IO SoloControl }; - ToggleControllable (Route&, ToggleType); + ToggleControllable (std::string name, Route&, ToggleType); void set_value (float); float get_value (void) const; diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 79fd442995..ca7c38b281 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -93,7 +93,7 @@ class AudioRegion; class Region; class Playlist; class VSTPlugin; -class ControlProtocolManager; +class ControlProtocolInfo; struct AudioExportSpecification; struct RouteGroup; @@ -415,7 +415,7 @@ class Session : public sigc::trackable, public PBD::StatefulDestructible XMLNode& get_state(); int set_state(const XMLNode& node); // not idempotent XMLNode& get_template(); - + void add_instant_xml (XMLNode&, const std::string& dir); enum StateOfTheState { @@ -904,6 +904,9 @@ class Session : public sigc::trackable, public PBD::StatefulDestructible PBD::Controllable* controllable_by_id (const PBD::ID&); + void add_controllable (PBD::Controllable*); + void remove_controllable (PBD::Controllable*); + protected: friend class AudioEngine; void set_block_size (nframes_t nframes); @@ -1667,19 +1670,19 @@ class Session : public sigc::trackable, public PBD::StatefulDestructible LayerModel layer_model; CrossfadeModel xfade_model; - typedef std::list<PBD::Controllable*> Controllables; + typedef std::set<PBD::Controllable*> Controllables; Glib::Mutex controllables_lock; Controllables controllables; - void add_controllable (PBD::Controllable*); - void remove_controllable (PBD::Controllable*); - - void reset_native_file_format(); bool first_file_data_format_reset; bool first_file_header_format_reset; void config_changed (const char*); + + void add_control_protocol (const ControlProtocolInfo* const, XMLNode*); + XMLNode& get_control_protocol_state (); + }; } // namespace ARDOUR |