 Chromium Code Reviews
 Chromium Code Reviews Issue 2673423002:
  Web MIDI: add dynamic MidiManager instantiation support for Linux  (Closed)
    
  
    Issue 2673423002:
  Web MIDI: add dynamic MidiManager instantiation support for Linux  (Closed) 
  | Index: media/midi/midi_manager.h | 
| diff --git a/media/midi/midi_manager.h b/media/midi/midi_manager.h | 
| index 27e24f92cd9c86937622e5f311977d5e59be2252..c4e55a9906e23b00c2faa6794696d4ae5ffb28b4 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(); | 
| + MidiManager(MidiService* service); | 
| 
yhirano
2017/02/08 10:04:36
+explicit
 
Takashi Toyoshima
2017/02/08 11:08:55
Done.
 | 
| 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 call | 
| 
yhirano
2017/02/08 10:04:36
call"s"
 
Takashi Toyoshima
2017/02/08 11:08:55
Done.
 | 
| + // 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); | 
| }; |