From 235c1f9adbadc874b0c8b6a23b54af5942bc0e04 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 20 Oct 2016 16:34:06 -0400 Subject: infrastructure for save/restore of MIDI port user-provided information --- libs/ardour/ardour/port_manager.h | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) (limited to 'libs/ardour/ardour/port_manager.h') 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 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&); + void get_midi_selection_ports (std::vector&); + 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 MidiSelectionPortsChanged; + /** Emitted if anything other than the selection property for a MIDI port changes */ + PBD::Signal0 MidiPortInfoChanged; /** Emitted if the backend notifies us of a graph order event */ PBD::Signal0 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 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 (); }; -- cgit v1.2.3