diff options
author | tommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-19 09:16:58 +0000 |
---|---|---|
committer | tommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-19 09:16:58 +0000 |
commit | 8f5fc718853a128dc2f70ec4e55db4044af64bcc (patch) | |
tree | 4f283d47012fd9594433990e89ad7f4fff3f0bcd /media/audio/audio_output_proxy.h | |
parent | ae4e03118d9a8792b907c923adf6516495f20536 (diff) | |
download | chromium_src-8f5fc718853a128dc2f70ec4e55db4044af64bcc.zip chromium_src-8f5fc718853a128dc2f70ec4e55db4044af64bcc.tar.gz chromium_src-8f5fc718853a128dc2f70ec4e55db4044af64bcc.tar.bz2 |
Add thread safety to AudioManagerBase to protect access to the audio thread member variable.
This is is a tentative fix for an issue where the AudioManager can crash while tearing down
the audio thread. I suspect that this happens because more than one cleanup attempts were
made since the class wasn't thread safe. I'm also changing direct access to the thread's
MessageLoop* to use MessageLoopProxy based on the same theory.
BUG=110051
TEST=Run media tests.
Review URL: https://chromiumcodereview.appspot.com/9255017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118272 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio/audio_output_proxy.h')
-rw-r--r-- | media/audio/audio_output_proxy.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/media/audio/audio_output_proxy.h b/media/audio/audio_output_proxy.h index af081c1..8e1b350 100644 --- a/media/audio/audio_output_proxy.h +++ b/media/audio/audio_output_proxy.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -8,6 +8,7 @@ #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/ref_counted.h" +#include "base/threading/non_thread_safe.h" #include "media/audio/audio_io.h" #include "media/audio/audio_parameters.h" @@ -21,7 +22,9 @@ class AudioOutputDispatcher; // // AudioOutputProxy uses AudioOutputDispatcher to open and close // physical output streams. -class MEDIA_EXPORT AudioOutputProxy : public AudioOutputStream { +class MEDIA_EXPORT AudioOutputProxy + : public AudioOutputStream, + public NON_EXPORTED_BASE(base::NonThreadSafe) { public: // Caller keeps ownership of |dispatcher|. explicit AudioOutputProxy(AudioOutputDispatcher* dispatcher); |