Index: media/midi/midi_manager.cc |
diff --git a/media/midi/midi_manager.cc b/media/midi/midi_manager.cc |
index 420163547162d9ea0ea53de3bdf59e098e762772..d557ec8cde1a0aa7abc0453becae738284b1cd83 100644 |
--- a/media/midi/midi_manager.cc |
+++ b/media/midi/midi_manager.cc |
@@ -185,12 +185,21 @@ void MidiManager::StartInitialization() { |
} |
void MidiManager::CompleteInitialization(Result result) { |
- base::AutoLock auto_lock(lock_); |
- if (session_thread_runner_) { |
- session_thread_runner_->PostTask( |
- FROM_HERE, base::Bind(&MidiManager::CompleteInitializationInternal, |
- base::Unretained(this), result)); |
+ bool complete_asynchronously = false; |
+ { |
+ base::AutoLock auto_lock(lock_); |
+ if (session_thread_runner_) { |
+ if (session_thread_runner_->BelongsToCurrentThread()) { |
+ complete_asynchronously = true; |
+ } else { |
+ session_thread_runner_->PostTask( |
+ FROM_HERE, base::Bind(&MidiManager::CompleteInitializationInternal, |
+ base::Unretained(this), result)); |
+ } |
+ } |
} |
+ if (complete_asynchronously) |
+ CompleteInitializationInternal(result); |
} |
void MidiManager::AddInputPort(const MidiPortInfo& info) { |