Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(286)

Unified Diff: media/midi/midi_manager.h

Issue 2673423002: Web MIDI: add dynamic MidiManager instantiation support for Linux (Closed)
Patch Set: hope try compile this on all Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698