Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Unified Diff: media/base/audio_renderer_mixer_input.cc

Issue 381823003: Allow AudioRendererMixerInputs to be restarted after stopped. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/audio_renderer_mixer_input.cc
diff --git a/media/base/audio_renderer_mixer_input.cc b/media/base/audio_renderer_mixer_input.cc
index d1568d0c64fe214b8dcc4e468a107d2c24665149..d09cebf7667460cf82a6ea869e791dbb69c1b62a 100644
--- a/media/base/audio_renderer_mixer_input.cc
+++ b/media/base/audio_renderer_mixer_input.cc
@@ -24,7 +24,6 @@ AudioRendererMixerInput::AudioRendererMixerInput(
}
AudioRendererMixerInput::~AudioRendererMixerInput() {
- DCHECK(!callback_);
DCHECK(!playing_);
DCHECK(!mixer_);
}
@@ -38,16 +37,16 @@ void AudioRendererMixerInput::Initialize(
params_ = params;
callback_ = callback;
initialized_ = true;
- mixer_ = get_mixer_cb_.Run(params_);
-
- // Note: OnRenderError() may be called immediately after this call completes,
- // so ensure |callback_| has been set first.
- mixer_->AddErrorCallback(error_cb_);
}
void AudioRendererMixerInput::Start() {
DCHECK(initialized_);
DCHECK(!playing_);
+ DCHECK(!mixer_);
+ mixer_ = get_mixer_cb_.Run(params_);
+
+ // Note: OnRenderError() may be called immediately after this call returns.
+ mixer_->AddErrorCallback(error_cb_);
}
void AudioRendererMixerInput::Stop() {
@@ -58,12 +57,13 @@ void AudioRendererMixerInput::Stop() {
playing_ = false;
}
- // Once Stop() is called the input can no longer be used.
- if (callback_) {
+ if (mixer_) {
+ // TODO(dalecurtis): This is required so that |callback_| isn't called after
+ // Stop() by an error event since it may outlive this ref-counted object. We
+ // should instead have sane ownership semantics: http://crbug.com/151051
mixer_->RemoveErrorCallback(error_cb_);
remove_mixer_cb_.Run(params_);
mixer_ = NULL;
- callback_ = NULL;
}
}
« no previous file with comments | « content/renderer/media/audio_renderer_mixer_manager_unittest.cc ('k') | media/base/audio_renderer_mixer_input_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698