| Index: media/midi/midi_manager_android.cc
|
| diff --git a/media/midi/midi_manager_android.cc b/media/midi/midi_manager_android.cc
|
| index 54fe91514c903f3f1189be369fa316f017589d3f..25966260b01fd2ec0b16f7691bf89006dbf74ac2 100644
|
| --- a/media/midi/midi_manager_android.cc
|
| +++ b/media/midi/midi_manager_android.cc
|
| @@ -35,7 +35,10 @@ MidiManager* MidiManager::Create() {
|
|
|
| MidiManagerAndroid::MidiManagerAndroid() {}
|
|
|
| -MidiManagerAndroid::~MidiManagerAndroid() {}
|
| +MidiManagerAndroid::~MidiManagerAndroid() {
|
| + base::AutoLock auto_lock(scheduler_lock_);
|
| + CHECK(!scheduler_);
|
| +}
|
|
|
| void MidiManagerAndroid::StartInitialization() {
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| @@ -43,10 +46,21 @@ void MidiManagerAndroid::StartInitialization() {
|
| uintptr_t pointer = reinterpret_cast<uintptr_t>(this);
|
| raw_manager_.Reset(Java_MidiManagerAndroid_create(
|
| env, base::android::GetApplicationContext(), pointer));
|
| - scheduler_.reset(new MidiScheduler(this));
|
| +
|
| + {
|
| + base::AutoLock auto_lock(scheduler_lock_);
|
| + scheduler_.reset(new MidiScheduler(this));
|
| + }
|
| +
|
| Java_MidiManagerAndroid_initialize(env, raw_manager_);
|
| }
|
|
|
| +void MidiManagerAndroid::Finalize() {
|
| + // Destruct MidiScheduler on Chrome_IOThread.
|
| + base::AutoLock auto_lock(scheduler_lock_);
|
| + scheduler_.reset();
|
| +}
|
| +
|
| void MidiManagerAndroid::DispatchSendMidiData(MidiManagerClient* client,
|
| uint32_t port_index,
|
| const std::vector<uint8_t>& data,
|
|
|