Chromium Code Reviews| 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..b5056fe8a41ef7fd0ac3eb97a181c45e3f0ba639 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: |
|
tommi (sloooow) - chröme
2012/10/17 18:40:06
indent
miu
2012/10/17 20:10:44
Done.
|
| + 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( |