Index: content/browser/media/midi_host.cc |
diff --git a/content/browser/media/midi_host.cc b/content/browser/media/midi_host.cc |
index fb4dcce4a7e8e98acfd2329ef6ba65591cd9f6be..2fc014785755b889c750cce0bc8a5b06d778b4af 100644 |
--- a/content/browser/media/midi_host.cc |
+++ b/content/browser/media/midi_host.cc |
@@ -125,23 +125,24 @@ void MidiHost::OnEndSession() { |
void MidiHost::CompleteStartSession(media::MidiResult result) { |
DCHECK(is_session_requested_); |
- MidiPortInfoList input_ports; |
- MidiPortInfoList output_ports; |
- |
if (result == media::MIDI_OK) { |
- input_ports = midi_manager_->input_ports(); |
- output_ports = midi_manager_->output_ports(); |
- received_messages_queues_.clear(); |
- received_messages_queues_.resize(input_ports.size()); |
// ChildSecurityPolicy is set just before OnStartSession by |
// MidiDispatcherHost. So we can safely cache the policy. |
has_sys_ex_permission_ = ChildProcessSecurityPolicyImpl::GetInstance()-> |
CanSendMidiSysExMessage(renderer_process_id_); |
} |
+ Send(new MidiMsg_SessionStarted(result)); |
+} |
+ |
+void MidiHost::AddInputPort(const media::MidiPortInfo& info) { |
+ base::AutoLock auto_lock(messages_queues_lock_); |
+ // MidiMessageQueue is created later in ReceiveMidiData(). |
+ received_messages_queues_.push_back(nullptr); |
+ Send(new MidiMsg_AddInputPort(info)); |
+} |
- Send(new MidiMsg_SessionStarted(result, |
- input_ports, |
- output_ports)); |
+void MidiHost::AddOutputPort(const media::MidiPortInfo& info) { |
+ Send(new MidiMsg_AddOutputPort(info)); |
} |
void MidiHost::ReceiveMidiData( |
@@ -151,11 +152,12 @@ void MidiHost::ReceiveMidiData( |
double timestamp) { |
TRACE_EVENT0("midi", "MidiHost::ReceiveMidiData"); |
+ base::AutoLock auto_lock(messages_queues_lock_); |
if (received_messages_queues_.size() <= port) |
return; |
// Lazy initialization |
- if (received_messages_queues_[port] == NULL) |
+ if (received_messages_queues_[port] == nullptr) |
received_messages_queues_[port] = new media::MidiMessageQueue(true); |
received_messages_queues_[port]->Add(data, length); |