diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-10-20 16:34:06 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-10-20 16:34:52 -0400 |
commit | 235c1f9adbadc874b0c8b6a23b54af5942bc0e04 (patch) | |
tree | dbc2bc4d64257bde53efbb646a3d9bdfb4da3d9b /libs/ardour/ardour/port_manager.h | |
parent | b85ca20123647fbff6eac6405019fd4873f6764e (diff) |
infrastructure for save/restore of MIDI port user-provided information
Diffstat (limited to 'libs/ardour/ardour/port_manager.h')
-rw-r--r-- | libs/ardour/ardour/port_manager.h | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index d04a38076b..f7b0034890 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -129,16 +129,27 @@ class LIBARDOUR_API PortManager bool port_remove_in_progress() const { return _port_remove_in_progress; } - typedef std::vector<std::string> MidiSelectionPorts; + struct MidiPortInformation { + std::string pretty_name; + bool input; + MidiPortFlags properties; - void get_midi_selection_ports (MidiSelectionPorts&) const; - void add_to_midi_selection_ports (std::string const&); - void remove_from_midi_selection_ports (std::string const&); - void clear_midi_selection_ports (); - bool port_is_for_midi_selection (std::string const&); + MidiPortInformation () : input (false) , properties (MidiPortFlags (0)) {} + }; + + void fill_midi_port_info (); + + MidiPortInformation midi_port_information (std::string const&); + void get_known_midi_ports (std::vector<std::string>&); + void get_midi_selection_ports (std::vector<std::string>&); + void add_midi_port_flags (std::string const&, MidiPortFlags); + void remove_midi_port_flags (std::string const&, MidiPortFlags); + void set_midi_port_pretty_name (std::string const&, std::string const&); /** Emitted if the list of ports to be used for MIDI selection tracking changes */ PBD::Signal0<void> MidiSelectionPortsChanged; + /** Emitted if anything other than the selection property for a MIDI port changes */ + PBD::Signal0<void> MidiPortInfoChanged; /** Emitted if the backend notifies us of a graph order event */ PBD::Signal0<void> GraphReordered; @@ -183,8 +194,16 @@ class LIBARDOUR_API PortManager */ void cycle_end (pframes_t nframes); - mutable Glib::Threads::Mutex midi_selection_ports_mutex; - MidiSelectionPorts _midi_selection_ports; + typedef std::map<std::string,MidiPortInformation> MidiPortInfo; + + mutable Glib::Threads::Mutex midi_port_info_mutex; + MidiPortInfo midi_port_info; + + static std::string midi_port_info_file (); + bool midi_info_dirty; + void save_midi_port_info (); + void load_midi_port_info (); + void fill_midi_port_info_locked (); }; |