make faderport support report its port bundles as it should
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 3 Dec 2015 17:44:21 +0000 (12:44 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 3 Dec 2015 17:50:32 +0000 (12:50 -0500)
libs/surfaces/faderport/faderport.cc
libs/surfaces/faderport/faderport.h

index 357823edf5eaf34f94c9c4e24ca6914523d69b9c..f7d15e17c42a3f5ead6f255c6bb449ce55eb8254 100644 (file)
@@ -39,6 +39,7 @@
 #include "ardour/async_midi_port.h"
 #include "ardour/audioengine.h"
 #include "ardour/amp.h"
+#include "ardour/bundle.h"
 #include "ardour/debug.h"
 #include "ardour/filesystem_paths.h"
 #include "ardour/midi_port.h"
@@ -90,6 +91,22 @@ FaderPort::FaderPort (Session& s)
                throw failed_constructor();
        }
 
+       _input_bundle.reset (new ARDOUR::Bundle (_("Faderport Support (Receive)"), true));
+       _output_bundle.reset (new ARDOUR::Bundle (_("Faderport Support (Send) "), false));
+
+       _input_bundle->add_channel (
+               inp->name(),
+               ARDOUR::DataType::MIDI,
+               session->engine().make_port_name_non_relative (inp->name())
+               );
+
+       _output_bundle->add_channel (
+               outp->name(),
+               ARDOUR::DataType::MIDI,
+               session->engine().make_port_name_non_relative (outp->name())
+               );
+
+
        TrackSelectionChanged.connect (selection_connection, MISSING_INVALIDATOR, boost::bind (&FaderPort::gui_track_selection_changed, this, _1), this);
 
        /* Catch port connections and disconnections */
@@ -1085,7 +1102,7 @@ FaderPort::map_auto ()
                        get_button (FP_Off).set_led_state (_output_port, true);
                break;
        }
-       
+
 }
 
 
@@ -1203,6 +1220,19 @@ FaderPort::map_route_state ()
        }
 }
 
+list<boost::shared_ptr<ARDOUR::Bundle> >
+FaderPort::bundles ()
+{
+       list<boost::shared_ptr<ARDOUR::Bundle> > b;
+
+       if (_input_bundle) {
+               b.push_back (_input_bundle);
+               b.push_back (_output_bundle);
+       }
+
+       return b;
+}
+
 boost::shared_ptr<Port>
 FaderPort::output_port()
 {
index 0fac479c07bc27e7c3d746238c0bc0217f55a23d..00259a58f93a3065a391031cd0dec6784259b574 100644 (file)
@@ -55,6 +55,7 @@ namespace MIDI {
 
 namespace ARDOUR {
        class AsyncMIDIPort;
+       class Bundle;
        class Port;
        class Session;
        class MidiPort;
@@ -158,6 +159,8 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI<FaderPortReq
        void set_action (ButtonID, std::string const& action_name, bool on_press, FaderPort::ButtonState = ButtonState (0));
        std::string get_action (ButtonID, bool on_press, FaderPort::ButtonState = ButtonState (0));
 
+       std::list<boost::shared_ptr<ARDOUR::Bundle> > bundles ();
+       
   private:
        boost::shared_ptr<ARDOUR::Route> _current_route;
        boost::weak_ptr<ARDOUR::Route> pre_master_route;
@@ -166,6 +169,11 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI<FaderPortReq
        boost::shared_ptr<ARDOUR::AsyncMIDIPort> _input_port;
        boost::shared_ptr<ARDOUR::AsyncMIDIPort> _output_port;
 
+       // Bundle to represent our input ports
+       boost::shared_ptr<ARDOUR::Bundle> _input_bundle;
+       // Bundle to represent our output ports
+       boost::shared_ptr<ARDOUR::Bundle> _output_bundle;
+
        PBD::ScopedConnectionList midi_connections;
 
        bool midi_input_handler (Glib::IOCondition ioc, boost::shared_ptr<ARDOUR::AsyncMIDIPort> port);