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

Side by Side Diff: media/midi/midi_manager.h

Issue 2673423002: Web MIDI: add dynamic MidiManager instantiation support for Linux (Closed)
Patch Set: update metrics 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_MIDI_MIDI_MANAGER_H_ 5 #ifndef MEDIA_MIDI_MIDI_MANAGER_H_
6 #define MEDIA_MIDI_MIDI_MANAGER_H_ 6 #define MEDIA_MIDI_MIDI_MANAGER_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 // This happens as a result of the client having previously called 66 // This happens as a result of the client having previously called
67 // MidiManager::DispatchSendMidiData(). 67 // MidiManager::DispatchSendMidiData().
68 virtual void AccumulateMidiBytesSent(size_t n) = 0; 68 virtual void AccumulateMidiBytesSent(size_t n) = 0;
69 69
70 // Detach() is called when MidiManager is going to shutdown immediately. 70 // Detach() is called when MidiManager is going to shutdown immediately.
71 // Client should not touch MidiManager instance after Detach() is called. 71 // Client should not touch MidiManager instance after Detach() is called.
72 virtual void Detach() = 0; 72 virtual void Detach() = 0;
73 }; 73 };
74 74
75 // Manages access to all MIDI hardware. 75 // Manages access to all MIDI hardware.
76 // *** Note ***: If dynamic instantiation feature is enabled, all MidiManager
77 // methods will be called on Chrome_IOThread. See comments on Shutdown() too.
76 class MIDI_EXPORT MidiManager { 78 class MIDI_EXPORT MidiManager {
77 public: 79 public:
78 static const size_t kMaxPendingClientCount = 128; 80 static const size_t kMaxPendingClientCount = 128;
79 81
80 MidiManager(); 82 MidiManager();
81 virtual ~MidiManager(); 83 virtual ~MidiManager();
82 84
83 // The constructor and the destructor will be called on the CrBrowserMain 85 // The constructor and the destructor will be called on the CrBrowserMain
84 // thread. 86 // thread.
85 static MidiManager* Create(); 87 static MidiManager* Create();
86 88
87 // Called on the CrBrowserMain thread to notify the Chrome_IOThread will stop 89 // Called on the CrBrowserMain thread to notify the Chrome_IOThread will stop
88 // and the instance will be destructed on the CrBrowserMain thread soon. 90 // and the instance will be destructed on the CrBrowserMain thread soon.
91 // *** Note ***: If dynamic instantiation feature is enabled, MidiService call
92 // this on Chrome_IOThread and ShutdownOnSessionThread() will be called
93 // synchronously so that MidiService can destruct MidiManager synchronously.
89 void Shutdown(); 94 void Shutdown();
90 95
91 // A client calls StartSession() to receive and send MIDI data. 96 // A client calls StartSession() to receive and send MIDI data.
92 // If the session is ready to start, the MIDI system is lazily initialized 97 // If the session is ready to start, the MIDI system is lazily initialized
93 // and the client is registered to receive MIDI data. 98 // and the client is registered to receive MIDI data.
94 // CompleteStartSession() is called with mojom::Result::OK if the session is 99 // CompleteStartSession() is called with mojom::Result::OK if the session is
95 // started. Otherwise CompleteStartSession() is called with a proper 100 // started. Otherwise CompleteStartSession() is called with a proper
96 // mojom::Result code. 101 // mojom::Result code.
97 // StartSession() and EndSession() can be called on the Chrome_IOThread. 102 // StartSession() and EndSession() can be called on the Chrome_IOThread.
98 // CompleteStartSession() will be invoked on the same Chrome_IOThread. 103 // CompleteStartSession() will be invoked on the same Chrome_IOThread.
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 // |session_thread_runner_|, |initialization_state_|, |finalize_|, |result_|, 220 // |session_thread_runner_|, |initialization_state_|, |finalize_|, |result_|,
216 // |input_ports_| and |output_ports_|. 221 // |input_ports_| and |output_ports_|.
217 base::Lock lock_; 222 base::Lock lock_;
218 223
219 DISALLOW_COPY_AND_ASSIGN(MidiManager); 224 DISALLOW_COPY_AND_ASSIGN(MidiManager);
220 }; 225 };
221 226
222 } // namespace midi 227 } // namespace midi
223 228
224 #endif // MEDIA_MIDI_MIDI_MANAGER_H_ 229 #endif // MEDIA_MIDI_MIDI_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698