Less weak plugin preset system (maybe AU preset stuff can use the 'normal' thing...
[ardour.git] / libs / ardour / ardour / io.h
index 5a3c5c2b123b7380442c3550d88b7477db71dd7c..c5f90bcd90807859284833b1b8afc63451b2aac2 100644 (file)
@@ -43,6 +43,7 @@
 #include <ardour/latent.h>
 #include <ardour/automation_control.h>
 #include <ardour/session_object.h>
+#include <ardour/bundle.h>
 
 using std::string;
 using std::vector;
@@ -53,8 +54,8 @@ namespace ARDOUR {
 
 class Session;
 class AudioEngine;
-class Bundle;
 class UserBundle;
+class Bundle;
 class Panner;
 class PeakMeter;
 class Port;
@@ -62,7 +63,6 @@ class AudioPort;
 class MidiPort;
 class BufferSet;
 
-
 /** A collection of input and output ports with connections.
  *
  * An IO can contain ports of varying types, making routes/inserts/etc with
@@ -77,8 +77,7 @@ class IO : public SessionObject, public AutomatableControls, public Latent
        IO (Session&, const string& name, 
            int input_min = -1, int input_max = -1, 
            int output_min = -1, int output_max = -1,
-           DataType default_type = DataType::AUDIO,
-           bool public_ports = true);
+           DataType default_type = DataType::AUDIO);
        
        IO (Session&, const XMLNode&, DataType default_type = DataType::AUDIO);
        
@@ -128,8 +127,10 @@ class IO : public SessionObject, public AutomatableControls, public Latent
        
        int ensure_io (ChanCount in, ChanCount out, bool clear, void *src);
 
-       int connect_input_ports_to_bundle (boost::shared_ptr<Bundle>, void *src);
-       int connect_output_ports_to_bundle (boost::shared_ptr<Bundle>, void *src);
+       int connect_input_ports_to_bundle (boost::shared_ptr<Bundle>, void *);
+       int disconnect_input_ports_from_bundle (boost::shared_ptr<Bundle>, void *);
+       int connect_output_ports_to_bundle (boost::shared_ptr<Bundle>, void *);
+       int disconnect_output_ports_from_bundle (boost::shared_ptr<Bundle>, void *);
 
        BundleList bundles_connected_to_inputs ();
        BundleList bundles_connected_to_outputs ();
@@ -284,7 +285,6 @@ class IO : public SessionObject, public AutomatableControls, public Latent
        bool                _denormal_protection;
        XMLNode*             deferred_state;
        DataType            _default_type;
-       bool                _public_ports;
 
        virtual void prepare_inputs (nframes_t nframes, nframes_t offset);
        virtual void flush_outputs (nframes_t nframes, nframes_t offset);
@@ -334,8 +334,7 @@ class IO : public SessionObject, public AutomatableControls, public Latent
                UserBundleInfo (IO*, boost::shared_ptr<UserBundle> b);
                
                boost::shared_ptr<UserBundle> bundle;
-               sigc::connection configuration_changed;
-               sigc::connection ports_changed;
+               sigc::connection changed;
        };
        
        std::vector<UserBundleInfo> _bundles_connected_to_outputs; ///< user bundles connected to our outputs
@@ -355,8 +354,7 @@ class IO : public SessionObject, public AutomatableControls, public Latent
        void check_bundles_connected_to_outputs ();
        void check_bundles (std::vector<UserBundleInfo>&, const PortSet&);
 
-       void bundle_configuration_changed ();
-       void bundle_ports_changed (int);
+       void bundle_changed (Bundle::Change);
 
        int create_ports (const XMLNode&);
        int make_connections (const XMLNode&);
@@ -373,6 +371,8 @@ class IO : public SessionObject, public AutomatableControls, public Latent
        int32_t find_output_port_hole (const char* base);
 
        void setup_bundles_for_inputs_and_outputs ();
+       void setup_bundle_for_inputs ();
+       void setup_bundle_for_outputs ();
        std::string bundle_channel_name (uint32_t, uint32_t) const;
 };