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

Unified Diff: media/audio/audio_output_controller.cc

Issue 1896883002: Mojo interfaces needed for switching audio rendering stream creation and closing from IPC to Mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: All grunell comments resolved Created 4 years, 8 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/audio/audio_output_controller.cc
diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc
index d780687d1b8415aee8f6223be8497905a80b8800..e7addfe730d66512c36d8132d7aff19d3ab7edaa 100644
--- a/media/audio/audio_output_controller.cc
+++ b/media/audio/audio_output_controller.cc
@@ -57,7 +57,8 @@ scoped_refptr<AudioOutputController> AudioOutputController::Create(
EventHandler* event_handler,
const AudioParameters& params,
const std::string& output_device_id,
- SyncReader* sync_reader) {
+ SyncReader* sync_reader,
+ const content::mojom::AudioOutput::CreateStreamCallback& callback) {
DCHECK(audio_manager);
DCHECK(sync_reader);
@@ -66,8 +67,9 @@ scoped_refptr<AudioOutputController> AudioOutputController::Create(
scoped_refptr<AudioOutputController> controller(new AudioOutputController(
audio_manager, event_handler, params, output_device_id, sync_reader));
- controller->message_loop_->PostTask(FROM_HERE, base::Bind(
- &AudioOutputController::DoCreate, controller, false));
+ controller->message_loop_->PostTask(
+ FROM_HERE, base::Bind(&AudioOutputController::DoCreate, controller, false,
+ callback));
return controller;
}
@@ -110,7 +112,9 @@ void AudioOutputController::SwitchOutputDevice(
callback);
}
-void AudioOutputController::DoCreate(bool is_for_device_change) {
+void AudioOutputController::DoCreate(
+ bool is_for_device_change,
+ const content::mojom::AudioOutput::CreateStreamCallback& callback) {
DCHECK(message_loop_->BelongsToCurrentThread());
SCOPED_UMA_HISTOGRAM_TIMER("Media.AudioOutputController.CreateTime");
TRACE_EVENT0("audio", "AudioOutputController::DoCreate");
@@ -122,9 +126,9 @@ void AudioOutputController::DoCreate(bool is_for_device_change) {
DoStopCloseAndClearStream(); // Calls RemoveOutputDeviceChangeListener().
DCHECK_EQ(kEmpty, state_);
- stream_ = diverting_to_stream_ ?
- diverting_to_stream_ :
- audio_manager_->MakeAudioOutputStreamProxy(params_, output_device_id_);
+ stream_ = diverting_to_stream_ ? diverting_to_stream_
+ : audio_manager_->MakeAudioOutputStreamProxy(
+ params_, output_device_id_);
if (!stream_) {
state_ = kError;
handler_->OnError();
@@ -151,7 +155,7 @@ void AudioOutputController::DoCreate(bool is_for_device_change) {
// And then report we have been created if we haven't done so already.
if (!is_for_device_change)
- handler_->OnCreated();
+ handler_->OnCreated(callback);
}
void AudioOutputController::DoPlay() {
@@ -359,7 +363,7 @@ void AudioOutputController::OnDeviceChange() {
// Recreate the stream (DoCreate() will first shut down an existing stream).
// Exit if we ran into an error.
const State original_state = state_;
- DoCreate(true);
+ DoCreate(true, content::mojom::AudioOutput::CreateStreamCallback());
if (!stream_ || state_ == kError)
return;

Powered by Google App Engine
This is Rietveld 408576698