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

Unified Diff: media/audio/audio_manager_base.h

Issue 8818012: Remove the AudioManager singleton. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Set svn eol properties for a couple of files Created 9 years 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
« no previous file with comments | « media/audio/audio_manager.cc ('k') | media/audio/audio_manager_base.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_manager_base.h
===================================================================
--- media/audio/audio_manager_base.h (revision 114012)
+++ media/audio/audio_manager_base.h (working copy)
@@ -7,6 +7,7 @@
#include <map>
+#include "base/atomic_ref_count.h"
#include "base/compiler_specific.h"
#include "base/threading/thread.h"
#include "media/audio/audio_manager.h"
@@ -23,8 +24,15 @@
AudioManagerBase();
+#ifndef NDEBUG
+ // Overridden to make sure we don't accidentally get added reference counts on
+ // the audio thread. The AudioManagerBase instance must always be deleted
+ // from outside the audio thread.
+ virtual void AddRef() const OVERRIDE;
+ virtual void Release() const OVERRIDE;
+#endif
+
virtual void Init() OVERRIDE;
- virtual void Cleanup() OVERRIDE;
virtual MessageLoop* GetMessageLoop() OVERRIDE;
@@ -44,6 +52,11 @@
void IncreaseActiveInputStreamCount();
void DecreaseActiveInputStreamCount();
+ // Shuts down the audio thread and releases all the audio output dispatchers
+ // on the audio thread. All AudioOutputProxy instances should be freed before
+ // Shutdown is called.
+ void Shutdown();
+
protected:
virtual ~AudioManagerBase();
@@ -51,25 +64,20 @@
AudioParameters::Compare>
AudioOutputDispatchersMap;
- bool initialized() { return initialized_; }
+ void ShutdownOnAudioThread();
+ bool initialized() { return audio_thread_.IsRunning(); }
+
// Thread used to interact with AudioOutputStreams created by this
// audio manger.
base::Thread audio_thread_;
- bool initialized_;
-
AudioOutputDispatchersMap output_dispatchers_;
// Counts the number of active input streams to find out if something else
// is currently recording in Chrome.
- int num_active_input_streams_;
+ base::AtomicRefCount num_active_input_streams_;
- // Lock used to synchronize the access to num_active_input_streams_.
- // Do not use for anything else and try to avoid using other locks
- // in this code whenever possible.
- base::Lock active_input_streams_lock_;
-
DISALLOW_COPY_AND_ASSIGN(AudioManagerBase);
};
« no previous file with comments | « media/audio/audio_manager.cc ('k') | media/audio/audio_manager_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698