X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fmidiport_manager.h;h=2fb5d5a57a9f788c410ddd773c5a3fd4638fbbb1;hb=965def3caf1250679cb83ee115db49e156acebce;hp=b5b46e85101df22d4859ba422632a3f32370dadd;hpb=f4b5f4c72ee60b6f509e307c5bfd164108d1f30b;p=ardour.git diff --git a/libs/ardour/ardour/midiport_manager.h b/libs/ardour/ardour/midiport_manager.h index b5b46e8510..2fb5d5a57a 100644 --- a/libs/ardour/ardour/midiport_manager.h +++ b/libs/ardour/ardour/midiport_manager.h @@ -1,6 +1,6 @@ /* Copyright (C) 1998 Paul Barton-Davis - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or @@ -30,6 +30,7 @@ #include "midi++/port.h" #include "ardour/libardour_visibility.h" +#include "ardour/midi_port.h" #include "ardour/types.h" namespace ARDOUR { @@ -41,22 +42,26 @@ class LIBARDOUR_API MidiPortManager { public: MidiPortManager(); virtual ~MidiPortManager (); - + /* Ports used for control. These are read/written to outside of the * process callback (asynchronously with respect to when data - * actually arrives). + * actually arrives). * * More detail: we do actually read/write data for these ports * inside the process callback, but incoming data is only parsed * and outgoing data is only generated *outside* the process - * callback. + * callback. */ - MIDI::Port* midi_input_port () const { return _midi_input_port; } - MIDI::Port* midi_output_port () const { return _midi_output_port; } - MIDI::Port* mmc_input_port () const { return _mmc_input_port; } - MIDI::Port* mmc_output_port () const { return _mmc_output_port; } - + boost::shared_ptr midi_input_port () const { return _midi_in; } + boost::shared_ptr midi_output_port () const { return _midi_out; } + + boost::shared_ptr mmc_input_port() const { return boost::dynamic_pointer_cast(_mmc_in); } + boost::shared_ptr mmc_output_port() const { return boost::dynamic_pointer_cast(_mmc_out); } + + boost::shared_ptr scene_input_port() const { return boost::dynamic_pointer_cast(_scene_in); } + boost::shared_ptr scene_output_port() const { return boost::dynamic_pointer_cast(_scene_out); } + /* Ports used for synchronization. These have their I/O handled inside the * process callback. */ @@ -65,25 +70,20 @@ class LIBARDOUR_API MidiPortManager { boost::shared_ptr mtc_output_port() const { return _mtc_output_port; } boost::shared_ptr midi_clock_input_port() const { return _midi_clock_input_port; } boost::shared_ptr midi_clock_output_port() const { return _midi_clock_output_port; } - + void set_midi_port_states (const XMLNodeList&); std::list get_midi_port_states () const; PBD::Signal0 PortsChanged; protected: - /* asynchronously handled ports: MIDI::Port */ - MIDI::Port* _midi_input_port; - MIDI::Port* _midi_output_port; - MIDI::Port* _mmc_input_port; - MIDI::Port* _mmc_output_port; - /* these point to the same objects as the 4 members above, - but cast to their ARDOUR::Port base class - */ + /* asynchronously handled ports: ARDOUR::AsyncMIDIPort */ boost::shared_ptr _midi_in; boost::shared_ptr _midi_out; boost::shared_ptr _mmc_in; boost::shared_ptr _mmc_out; + boost::shared_ptr _scene_in; + boost::shared_ptr _scene_out; /* synchronously handled ports: ARDOUR::MidiPort */ boost::shared_ptr _mtc_input_port;