Index: content/browser/media/midi_host.cc |
diff --git a/content/browser/media/midi_host.cc b/content/browser/media/midi_host.cc |
index 950cf48e0a9956391be3c01dcca8e0929625d6d9..fb4dcce4a7e8e98acfd2329ef6ba65591cd9f6be 100644 |
--- a/content/browser/media/midi_host.cc |
+++ b/content/browser/media/midi_host.cc |
@@ -52,13 +52,16 @@ MidiHost::MidiHost(int renderer_process_id, media::MidiManager* midi_manager) |
: BrowserMessageFilter(MidiMsgStart), |
renderer_process_id_(renderer_process_id), |
has_sys_ex_permission_(false), |
+ is_session_requested_(false), |
midi_manager_(midi_manager), |
sent_bytes_in_flight_(0), |
bytes_sent_since_last_acknowledgement_(0) { |
+ CHECK(midi_manager_); |
} |
MidiHost::~MidiHost() { |
- if (midi_manager_) |
+ // Close an open session, or abort opening a session. |
+ if (is_session_requested_) |
midi_manager_->EndSession(this); |
} |
@@ -72,23 +75,21 @@ bool MidiHost::OnMessageReceived(const IPC::Message& message) { |
IPC_BEGIN_MESSAGE_MAP(MidiHost, message) |
IPC_MESSAGE_HANDLER(MidiHostMsg_StartSession, OnStartSession) |
IPC_MESSAGE_HANDLER(MidiHostMsg_SendData, OnSendData) |
+ IPC_MESSAGE_HANDLER(MidiHostMsg_EndSession, OnEndSession) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
return handled; |
} |
-void MidiHost::OnStartSession(int client_id) { |
- if (midi_manager_) |
- midi_manager_->StartSession(this, client_id); |
+void MidiHost::OnStartSession() { |
+ is_session_requested_ = true; |
+ midi_manager_->StartSession(this); |
} |
void MidiHost::OnSendData(uint32 port, |
const std::vector<uint8>& data, |
double timestamp) { |
- if (!midi_manager_) |
- return; |
- |
if (data.empty()) |
return; |
@@ -117,7 +118,13 @@ void MidiHost::OnSendData(uint32 port, |
midi_manager_->DispatchSendMidiData(this, port, data, timestamp); |
} |
-void MidiHost::CompleteStartSession(int client_id, media::MidiResult result) { |
+void MidiHost::OnEndSession() { |
+ is_session_requested_ = false; |
+ midi_manager_->EndSession(this); |
+} |
+ |
+void MidiHost::CompleteStartSession(media::MidiResult result) { |
+ DCHECK(is_session_requested_); |
MidiPortInfoList input_ports; |
MidiPortInfoList output_ports; |
@@ -132,8 +139,7 @@ void MidiHost::CompleteStartSession(int client_id, media::MidiResult result) { |
CanSendMidiSysExMessage(renderer_process_id_); |
} |
- Send(new MidiMsg_SessionStarted(client_id, |
- result, |
+ Send(new MidiMsg_SessionStarted(result, |
input_ports, |
output_ports)); |
} |