| Index: content/renderer/media/audio_message_filter.cc
|
| diff --git a/content/renderer/media/audio_message_filter.cc b/content/renderer/media/audio_message_filter.cc
|
| index 9f72324c48e810a56d681e812c7e225c9bde13b3..ad7c1a6238c1cc61b77210d6e2d7729b1cba4b5a 100644
|
| --- a/content/renderer/media/audio_message_filter.cc
|
| +++ b/content/renderer/media/audio_message_filter.cc
|
| @@ -12,52 +12,60 @@
|
| #include "content/renderer/render_thread_impl.h"
|
| #include "ipc/ipc_logging.h"
|
|
|
| -AudioMessageFilter* AudioMessageFilter::filter_ = NULL;
|
| -
|
| -// static
|
| -AudioMessageFilter* AudioMessageFilter::Get() {
|
| - return filter_;
|
| -}
|
| -
|
| AudioMessageFilter::AudioMessageFilter()
|
| : channel_(NULL) {
|
| DVLOG(1) << "AudioMessageFilter::AudioMessageFilter()";
|
| - DCHECK(!filter_);
|
| - filter_ = this;
|
| }
|
|
|
| -int AudioMessageFilter::AddDelegate(media::AudioOutputIPCDelegate* delegate) {
|
| - return delegates_.Add(delegate);
|
| -}
|
| -
|
| -void AudioMessageFilter::RemoveDelegate(int id) {
|
| - delegates_.Remove(id);
|
| -}
|
| +class AudioMessageFilter::AudioOutputIPCImpl
|
| + : public NON_EXPORTED_BASE(media::AudioOutputIPC) {
|
| + public:
|
| + AudioOutputIPCImpl(int render_view_id, AudioMessageFilter* filter)
|
| + : render_view_id_(render_view_id), filter_(filter) {}
|
| + virtual ~AudioOutputIPCImpl() {}
|
|
|
| -void AudioMessageFilter::CreateStream(int stream_id,
|
| - const media::AudioParameters& params,
|
| - int input_channels) {
|
| - Send(new AudioHostMsg_CreateStream(stream_id, params, input_channels));
|
| -}
|
| -
|
| -void AudioMessageFilter::PlayStream(int stream_id) {
|
| - Send(new AudioHostMsg_PlayStream(stream_id));
|
| -}
|
| + // media::AudioOutputIPC implementation.
|
| + virtual int AddDelegate(media::AudioOutputIPCDelegate* delegate) OVERRIDE {
|
| + return filter_->delegates_.Add(delegate);
|
| + }
|
| + virtual void RemoveDelegate(int id) OVERRIDE {
|
| + filter_->delegates_.Remove(id);
|
| + }
|
| + virtual void CreateStream(int stream_id,
|
| + const media::AudioParameters& params,
|
| + int input_channels) OVERRIDE {
|
| + filter_->Send(new AudioHostMsg_CreateStream(
|
| + render_view_id_, stream_id, params, input_channels));
|
| + }
|
| + virtual void PlayStream(int stream_id) OVERRIDE {
|
| + filter_->Send(new AudioHostMsg_PlayStream(stream_id));
|
| + }
|
| + virtual void PauseStream(int stream_id) OVERRIDE {
|
| + filter_->Send(new AudioHostMsg_PauseStream(stream_id));
|
| + }
|
| + virtual void FlushStream(int stream_id) OVERRIDE {
|
| + filter_->Send(new AudioHostMsg_FlushStream(stream_id));
|
| + }
|
| + virtual void CloseStream(int stream_id) OVERRIDE {
|
| + filter_->Send(new AudioHostMsg_CloseStream(stream_id));
|
| + }
|
| + virtual void SetVolume(int stream_id, double volume) OVERRIDE {
|
| + filter_->Send(new AudioHostMsg_SetVolume(stream_id, volume));
|
| + }
|
|
|
| -void AudioMessageFilter::PauseStream(int stream_id) {
|
| - Send(new AudioHostMsg_PauseStream(stream_id));
|
| -}
|
| + private:
|
| + const int render_view_id_;
|
|
|
| -void AudioMessageFilter::FlushStream(int stream_id) {
|
| - Send(new AudioHostMsg_FlushStream(stream_id));
|
| -}
|
| + // Holds a reference to the audio message filter (lives on the main render
|
| + // thread) for the lifetime of this instance.
|
| + scoped_refptr<AudioMessageFilter> filter_;
|
|
|
| -void AudioMessageFilter::CloseStream(int stream_id) {
|
| - Send(new AudioHostMsg_CloseStream(stream_id));
|
| -}
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(AudioOutputIPCImpl);
|
| +};
|
|
|
| -void AudioMessageFilter::SetVolume(int stream_id, double volume) {
|
| - Send(new AudioHostMsg_SetVolume(stream_id, volume));
|
| +media::AudioOutputIPC* AudioMessageFilter::CreateAudioOutputIPC(
|
| + int render_view_id) {
|
| + return new AudioOutputIPCImpl(render_view_id, this);
|
| }
|
|
|
| bool AudioMessageFilter::Send(IPC::Message* message) {
|
| @@ -117,9 +125,6 @@ AudioMessageFilter::~AudioMessageFilter() {
|
| // Just in case the message filter is deleted before the channel
|
| // is closed and there are still living audio devices.
|
| OnChannelClosing();
|
| -
|
| - DCHECK(filter_);
|
| - filter_ = NULL;
|
| }
|
|
|
| void AudioMessageFilter::OnStreamCreated(
|
|
|