Index: media/midi/midi_manager.h |
diff --git a/media/midi/midi_manager.h b/media/midi/midi_manager.h |
index 1e2bcb8dc793ae76ecb5d1787ffb541ec6f9b6f8..d7e7e47a1a65ce38497b316a080c396df21d1068 100644 |
--- a/media/midi/midi_manager.h |
+++ b/media/midi/midi_manager.h |
@@ -29,6 +29,17 @@ class MEDIA_EXPORT MidiManagerClient { |
public: |
virtual ~MidiManagerClient() {} |
+ // AddInputPort() and AddOutputPort() are called before CompleteStartSession() |
+ // is called to notify existing MIDI ports, and also called after that to |
+ // notify new MIDI ports are added. |
+ virtual void AddInputPort(const MidiPortInfo& info) = 0; |
+ virtual void AddOutputPort(const MidiPortInfo& info) = 0; |
+ |
+ // TODO(toyoshim): DisableInputPort(const MidiPortInfo& info) and |
+ // DisableOutputPort(const MidiPortInfo& info) should be added. |
+ // On DisableInputPort(), internal states, e.g. received_messages_queues in |
+ // MidiHost, should be reset. |
+ |
// CompleteStartSession() is called when platform dependent preparation is |
// finished. |
virtual void CompleteStartSession(MidiResult result) = 0; |
@@ -89,16 +100,6 @@ class MEDIA_EXPORT MidiManager { |
const std::vector<uint8>& data, |
double timestamp); |
- // input_ports() is a list of MIDI ports for receiving MIDI data. |
- // Each individual port in this list can be identified by its |
- // integer index into this list. |
- const MidiPortInfoList& input_ports() const { return input_ports_; } |
- |
- // output_ports() is a list of MIDI ports for sending MIDI data. |
- // Each individual port in this list can be identified by its |
- // integer index into this list. |
- const MidiPortInfoList& output_ports() const { return output_ports_; } |
- |
protected: |
friend class MidiManagerUsb; |
@@ -145,6 +146,7 @@ class MEDIA_EXPORT MidiManager { |
private: |
void CompleteInitializationInternal(MidiResult result); |
+ void AddInitialPorts(MidiManagerClient* client); |
// Keeps track of all clients who wish to receive MIDI data. |
typedef std::set<MidiManagerClient*> ClientSet; |
@@ -164,13 +166,14 @@ class MEDIA_EXPORT MidiManager { |
// completed. Otherwise keeps MIDI_NOT_SUPPORTED. |
MidiResult result_; |
- // Protects access to |clients_|, |pending_clients_|, |initialized_|, and |
- // |result_|. |
- base::Lock lock_; |
- |
+ // Keeps all MidiPortInfo. |
MidiPortInfoList input_ports_; |
MidiPortInfoList output_ports_; |
+ // Protects access to |clients_|, |pending_clients_|, |initialized_|, |
+ // |result_|, |input_ports_| and |output_ports_|. |
+ base::Lock lock_; |
+ |
DISALLOW_COPY_AND_ASSIGN(MidiManager); |
}; |