| Index: media/midi/midi_manager.h
|
| diff --git a/media/midi/midi_manager.h b/media/midi/midi_manager.h
|
| index 27e24f92cd9c86937622e5f311977d5e59be2252..cea56b0d75b2591c3a08d9c193618372a5273760 100644
|
| --- a/media/midi/midi_manager.h
|
| +++ b/media/midi/midi_manager.h
|
| @@ -25,6 +25,8 @@ class SingleThreadTaskRunner;
|
|
|
| namespace midi {
|
|
|
| +class MidiService;
|
| +
|
| // A MidiManagerClient registers with the MidiManager to receive MIDI data.
|
| // See MidiManager::RequestAccess() and MidiManager::ReleaseAccess()
|
| // for details.
|
| @@ -73,19 +75,24 @@ class MIDI_EXPORT MidiManagerClient {
|
| };
|
|
|
| // Manages access to all MIDI hardware.
|
| +// *** Note ***: If dynamic instantiation feature is enabled, all MidiManager
|
| +// methods will be called on Chrome_IOThread. See comments on Shutdown() too.
|
| class MIDI_EXPORT MidiManager {
|
| public:
|
| static const size_t kMaxPendingClientCount = 128;
|
|
|
| - MidiManager();
|
| + explicit MidiManager(MidiService* service);
|
| virtual ~MidiManager();
|
|
|
| // The constructor and the destructor will be called on the CrBrowserMain
|
| // thread.
|
| - static MidiManager* Create();
|
| + static MidiManager* Create(MidiService* service);
|
|
|
| // Called on the CrBrowserMain thread to notify the Chrome_IOThread will stop
|
| // and the instance will be destructed on the CrBrowserMain thread soon.
|
| + // *** Note ***: If dynamic instantiation feature is enabled, MidiService
|
| + // calls this on Chrome_IOThread and ShutdownOnSessionThread() will be called
|
| + // synchronously so that MidiService can destruct MidiManager synchronously.
|
| void Shutdown();
|
|
|
| // A client calls StartSession() to receive and send MIDI data.
|
| @@ -174,6 +181,7 @@ class MIDI_EXPORT MidiManager {
|
|
|
| const MidiPortInfoList& input_ports() const { return input_ports_; }
|
| const MidiPortInfoList& output_ports() const { return output_ports_; }
|
| + MidiService* service() { return service_; }
|
|
|
| private:
|
| enum class InitializationState {
|
| @@ -216,6 +224,9 @@ class MIDI_EXPORT MidiManager {
|
| // |input_ports_| and |output_ports_|.
|
| base::Lock lock_;
|
|
|
| + // MidiService outlives MidiManager.
|
| + MidiService* const service_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(MidiManager);
|
| };
|
|
|
|
|