| Index: media/midi/midi_manager.cc
|
| diff --git a/media/midi/midi_manager.cc b/media/midi/midi_manager.cc
|
| index d72dbe292db5abf6f33d34c7bdbe43b6d4725137..cd148a9e6fdaf907a4e960a666dd59cd3d4e480f 100644
|
| --- a/media/midi/midi_manager.cc
|
| +++ b/media/midi/midi_manager.cc
|
| @@ -77,8 +77,10 @@ void MidiManager::StartSession(MidiManagerClient* client) {
|
| MidiResult result;
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| - if (result_ == MIDI_OK)
|
| + if (result_ == MIDI_OK) {
|
| + AddInitialPorts(client);
|
| clients_.insert(client);
|
| + }
|
| result = result_;
|
| }
|
| client->CompleteStartSession(result);
|
| @@ -113,11 +115,17 @@ void MidiManager::CompleteInitialization(MidiResult result) {
|
| }
|
|
|
| void MidiManager::AddInputPort(const MidiPortInfo& info) {
|
| + base::AutoLock auto_lock(lock_);
|
| input_ports_.push_back(info);
|
| + for (ClientSet::iterator it = clients_.begin(); it != clients_.end(); ++it)
|
| + (*it)->AddInputPort(info);
|
| }
|
|
|
| void MidiManager::AddOutputPort(const MidiPortInfo& info) {
|
| + base::AutoLock auto_lock(lock_);
|
| output_ports_.push_back(info);
|
| + for (ClientSet::iterator it = clients_.begin(); it != clients_.end(); ++it)
|
| + (*it)->AddOutputPort(info);
|
| }
|
|
|
| void MidiManager::ReceiveMidiData(
|
| @@ -141,11 +149,26 @@ void MidiManager::CompleteInitializationInternal(MidiResult result) {
|
| result_ = result;
|
|
|
| for (MidiManagerClient* client : pending_clients_) {
|
| - if (result_ == MIDI_OK)
|
| + if (result_ == MIDI_OK) {
|
| + AddInitialPorts(client);
|
| clients_.insert(client);
|
| + }
|
| client->CompleteStartSession(result_);
|
| }
|
| pending_clients_.clear();
|
| }
|
|
|
| +void MidiManager::AddInitialPorts(MidiManagerClient* client) {
|
| + lock_.AssertAcquired();
|
| +
|
| + for (MidiPortInfoList::iterator it = input_ports_.begin();
|
| + it != input_ports_.end(); ++it) {
|
| + client->AddInputPort(*it);
|
| + }
|
| + for (MidiPortInfoList::iterator it = output_ports_.begin();
|
| + it != output_ports_.end(); ++it) {
|
| + client->AddOutputPort(*it);
|
| + }
|
| +}
|
| +
|
| } // namespace media
|
|
|