Chromium Code Reviews| Index: media/audio/audio_output_proxy.cc |
| =================================================================== |
| --- media/audio/audio_output_proxy.cc (revision 129817) |
| +++ media/audio/audio_output_proxy.cc (working copy) |
| @@ -13,13 +13,16 @@ |
| : dispatcher_(dispatcher), |
| state_(kCreated), |
| physical_stream_(NULL), |
| - volume_(1.0) { |
| + volume_(1.0), |
| + audio_source_callback_(NULL), |
| + pending_bytes_(0) { |
| } |
| AudioOutputProxy::~AudioOutputProxy() { |
| DCHECK(CalledOnValidThread()); |
| DCHECK(state_ == kCreated || state_ == kClosed); |
| DCHECK(!physical_stream_); |
| + DCHECK(!audio_source_callback_); |
| } |
| bool AudioOutputProxy::Open() { |
| @@ -40,15 +43,16 @@ |
| DCHECK(physical_stream_ == NULL); |
| DCHECK_EQ(state_, kOpened); |
|
tommi (sloooow) - chröme
2012/04/03 13:47:51
DCHECK(!audio_source_callback_)?
enal1
2012/04/04 18:46:55
Done.
|
| - physical_stream_= dispatcher_->StreamStarted(); |
| + audio_source_callback_ = callback; |
|
tommi (sloooow) - chröme
2012/04/03 13:47:51
nit: just assign to this variable where you set st
enal1
2012/04/04 18:46:55
audio_source_callback_->OnMoreData() is called by
|
| + pending_bytes_ = 0; |
| + physical_stream_= dispatcher_->StreamStarted(callback, this); |
|
vrk (LEFT CHROMIUM)
2012/03/30 22:25:58
Yikes, this is a big hack. If |dispatcher_| is an
enal1
2012/04/04 18:46:55
Done.
|
| if (!physical_stream_) { |
| state_ = kError; |
| callback->OnError(this, 0); |
| + audio_source_callback_ = NULL; |
| return; |
| } |
| - physical_stream_->SetVolume(volume_); |
| - physical_stream_->Start(callback); |
| state_ = kPlaying; |
| } |
| @@ -58,22 +62,23 @@ |
| return; |
| DCHECK(physical_stream_); |
| - physical_stream_->Stop(); |
| - dispatcher_->StreamStopped(physical_stream_); |
| + dispatcher_->StreamStopped(physical_stream_, this); |
| physical_stream_ = NULL; |
| + audio_source_callback_ = NULL; |
| state_ = kOpened; |
| } |
| void AudioOutputProxy::SetVolume(double volume) { |
| DCHECK(CalledOnValidThread()); |
| - volume_ = volume; |
| - if (physical_stream_) { |
| - physical_stream_->SetVolume(volume); |
| + { |
| + base::AutoLock lock(lock_); |
| + volume_ = volume; |
| } |
| + dispatcher_->StreamVolumeSet(physical_stream_, volume); |
| } |
| void AudioOutputProxy::GetVolume(double* volume) { |
| - DCHECK(CalledOnValidThread()); |
| + base::AutoLock lock(lock_); |
| *volume = volume_; |
| } |
| @@ -81,9 +86,10 @@ |
| DCHECK(CalledOnValidThread()); |
| DCHECK(state_ == kCreated || state_ == kError || state_ == kOpened); |
| DCHECK(!physical_stream_); |
| + DCHECK(!audio_source_callback_); |
| if (state_ != kCreated) |
| - dispatcher_->StreamClosed(); |
| + dispatcher_->StreamClosed(this); |
| state_ = kClosed; |