Index: media/midi/midi_manager_android.h |
diff --git a/media/midi/midi_manager_android.h b/media/midi/midi_manager_android.h |
index 4269d5d8526d943b98a03d8ff7b4e3aac0bd56fb..8da77510c9a45d6d0fdae1baaad2667f5460b38d 100644 |
--- a/media/midi/midi_manager_android.h |
+++ b/media/midi/midi_manager_android.h |
@@ -15,6 +15,7 @@ |
#include "base/android/scoped_java_ref.h" |
#include "base/containers/hash_tables.h" |
#include "base/memory/scoped_vector.h" |
+#include "base/synchronization/lock.h" |
#include "base/time/time.h" |
#include "media/midi/midi_input_port_android.h" |
#include "media/midi/midi_manager.h" |
@@ -36,6 +37,7 @@ class MidiManagerAndroid final : public MidiManager, |
// MidiManager implementation. |
void StartInitialization() override; |
+ void Finalize() override; |
void DispatchSendMidiData(MidiManagerClient* client, |
uint32_t port_index, |
const std::vector<uint8_t>& data, |
@@ -81,7 +83,11 @@ class MidiManagerAndroid final : public MidiManager, |
base::hash_map<MidiOutputPortAndroid*, size_t> output_port_to_index_; |
base::android::ScopedJavaGlobalRef<jobject> raw_manager_; |
- std::unique_ptr<MidiScheduler> scheduler_; |
+ |
+ // Lock to ensure the MidiScheduler is being destructed only once in |
+ // Finalize() on Chrome_IOThread. |
+ base::Lock scheduler_lock_; |
+ std::unique_ptr<MidiScheduler> scheduler_; // GUARDED_BY(scheduler_lock_) |
}; |
} // namespace midi |