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 81689925d5e4a56626063413ff246a6132d420e6..d90b9abb0035f40d417cb31fdab34da1fa7e7e25 100644 |
| --- a/content/renderer/media/audio_message_filter.cc |
| +++ b/content/renderer/media/audio_message_filter.cc |
| @@ -21,19 +21,44 @@ AudioMessageFilter* AudioMessageFilter::Get() { |
| AudioMessageFilter::AudioMessageFilter() |
| : channel_(NULL) { |
| - VLOG(1) << "AudioMessageFilter::AudioMessageFilter()"; |
| + DVLOG(1) << "AudioMessageFilter::AudioMessageFilter()"; |
| DCHECK(!filter_); |
| filter_ = this; |
| } |
| -int32 AudioMessageFilter::AddDelegate(Delegate* delegate) { |
| +int AudioMessageFilter::AddDelegate(media::AudioDeviceIPCDelegate* delegate) { |
| return delegates_.Add(delegate); |
| } |
| -void AudioMessageFilter::RemoveDelegate(int32 id) { |
| +void AudioMessageFilter::RemoveDelegate(int id) { |
| delegates_.Remove(id); |
| } |
| +void AudioMessageFilter::CreateStream(int stream_id, |
| + const media::AudioParameters& params) { |
| + Send(new AudioHostMsg_CreateStream(stream_id, params)); |
| +} |
| + |
| +void AudioMessageFilter::PlayStream(int stream_id) { |
| + Send(new AudioHostMsg_PlayStream(stream_id)); |
| +} |
| + |
| +void AudioMessageFilter::PauseStream(int stream_id) { |
| + Send(new AudioHostMsg_PauseStream(stream_id)); |
| +} |
| + |
| +void AudioMessageFilter::FlushStream(int stream_id) { |
| + Send(new AudioHostMsg_FlushStream(stream_id)); |
| +} |
| + |
| +void AudioMessageFilter::CloseStream(int stream_id) { |
| + Send(new AudioHostMsg_CloseStream(stream_id)); |
| +} |
| + |
| +void AudioMessageFilter::SetVolume(int stream_id, double volume) { |
| + Send(new AudioHostMsg_SetVolume(stream_id, volume)); |
| +} |
| + |
| bool AudioMessageFilter::Send(IPC::Message* message) { |
| if (!channel_) { |
| delete message; |
| @@ -64,8 +89,7 @@ bool AudioMessageFilter::OnMessageReceived(const IPC::Message& message) { |
| } |
| void AudioMessageFilter::OnFilterAdded(IPC::Channel* channel) { |
| - VLOG(1) << "AudioMessageFilter::OnFilterAdded()"; |
| - // Captures the channel for IPC. |
| + DVLOG(1) << "AudioMessageFilter::OnFilterAdded()"; |
| channel_ = channel; |
| } |
| @@ -75,10 +99,18 @@ void AudioMessageFilter::OnFilterRemoved() { |
| void AudioMessageFilter::OnChannelClosing() { |
| channel_ = NULL; |
| + LOG_IF(WARNING, !delegates_.IsEmpty()) |
| + << "Not all audio devices have been closed."; |
| + |
| + IDMap<media::AudioDeviceIPCDelegate>::iterator it(&delegates_); |
| + while (!it.IsAtEnd()) { |
| + it.GetCurrentValue()->OnIPCClosed(); |
| + it.Advance(); |
| + } |
| } |
| AudioMessageFilter::~AudioMessageFilter() { |
| - VLOG(1) << "AudioMessageFilter::~AudioMessageFilter()"; |
| + DVLOG(1) << "AudioMessageFilter::~AudioMessageFilter()"; |
| DCHECK(filter_); |
| filter_ = NULL; |
| } |
| @@ -95,9 +127,12 @@ void AudioMessageFilter::OnStreamCreated( |
| #if !defined(OS_WIN) |
| base::SyncSocket::Handle socket_handle = socket_descriptor.fd; |
| #endif |
| - Delegate* delegate = delegates_.Lookup(stream_id); |
| + media::AudioDeviceIPCDelegate* delegate = delegates_.Lookup(stream_id); |
| if (!delegate) { |
| - DLOG(WARNING) << "Got audio stream event for a non-existent or removed" |
| + // TODO(tommi): This should ideally be a DCHECK or a NOTREACHED. |
| + // However, we're still hitting this on mac in the nacl_integration |
| + // tests (ppapi_ppb_audio, PPB_Audio::StartPlayback, StopPlayback). |
|
scherkus (not reviewing)
2012/07/24 17:57:48
file a bug?
tommi (sloooow) - chröme
2012/07/25 13:46:17
Done.
|
| + LOG(ERROR) << "Got audio stream event for a non-existent or removed" |
| " audio renderer. (stream_id=" << stream_id << ")."; |
| base::SharedMemory::CloseHandle(handle); |
| base::SyncSocket socket(socket_handle); |
| @@ -107,11 +142,10 @@ void AudioMessageFilter::OnStreamCreated( |
| } |
| void AudioMessageFilter::OnStreamStateChanged( |
| - int stream_id, AudioStreamState state) { |
| - Delegate* delegate = delegates_.Lookup(stream_id); |
| + int stream_id, media::AudioDeviceIPCDelegate::State state) { |
| + media::AudioDeviceIPCDelegate* delegate = delegates_.Lookup(stream_id); |
| if (!delegate) { |
| - DLOG(WARNING) << "Got audio stream event for a non-existent or removed" |
| - " audio renderer."; |
| + NOTREACHED() << "No delegate found for state change. " << state; |
| return; |
| } |
| delegate->OnStateChanged(state); |