Index: media/midi/midi_manager_usb.h |
diff --git a/media/midi/midi_manager_usb.h b/media/midi/midi_manager_usb.h |
index a4b06a0374377822cfc03a427a52d85e44829d7c..d3e358d6080cfe1a71b938a4f0022e93385ccf87 100644 |
--- a/media/midi/midi_manager_usb.h |
+++ b/media/midi/midi_manager_usb.h |
@@ -17,6 +17,7 @@ |
#include "base/compiler_specific.h" |
#include "base/containers/hash_tables.h" |
#include "base/macros.h" |
+#include "base/synchronization/lock.h" |
#include "base/time/time.h" |
#include "media/midi/midi_manager.h" |
#include "media/midi/usb_midi_device.h" |
@@ -42,6 +43,7 @@ class USB_MIDI_EXPORT MidiManagerUsb |
// MidiManager implementation. |
void StartInitialization() override; |
+ void Finalize() override; |
void DispatchSendMidiData(MidiManagerClient* client, |
uint32_t port_index, |
const std::vector<uint8_t>& data, |
@@ -90,6 +92,9 @@ class USB_MIDI_EXPORT MidiManagerUsb |
// A map from <endpoint_number, cable_number> to the index of input jacks. |
base::hash_map<std::pair<int, int>, size_t> input_jack_dictionary_; |
+ // Lock to ensure the MidiScheduler is being destructed only once in |
+ // Finalize() on Chrome_IOThread. |
+ base::Lock scheduler_lock_; |
std::unique_ptr<MidiScheduler> scheduler_; |
DISALLOW_COPY_AND_ASSIGN(MidiManagerUsb); |