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

Unified Diff: media/audio/audio_manager_base.cc

Issue 2570923002: Makes AudioOutputDispatcher non-ref-counted. (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « no previous file | media/audio/audio_output_dispatcher.h » ('j') | media/audio/audio_output_dispatcher_impl.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_manager_base.cc
diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc
index a9d46a386d22670052d61e6390c7b1a875d7c443..0a32ccd4f5dc461541bb8c40f233c3f7f371d4fa 100644
--- a/media/audio/audio_manager_base.cc
+++ b/media/audio/audio_manager_base.cc
@@ -8,6 +8,7 @@
#include "base/bind_helpers.h"
#include "base/command_line.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/string_number_conversions.h"
#include "base/threading/thread_task_runner_handle.h"
@@ -49,7 +50,7 @@ struct AudioManagerBase::DispatcherParams {
const AudioParameters input_params;
const AudioParameters output_params;
const std::string output_device_id;
- scoped_refptr<AudioOutputDispatcher> dispatcher;
+ std::unique_ptr<AudioOutputDispatcher> dispatcher;
private:
DISALLOW_COPY_AND_ASSIGN(DispatcherParams);
@@ -258,20 +259,18 @@ AudioOutputStream* AudioManagerBase::MakeAudioOutputStreamProxy(
const base::TimeDelta kCloseDelay =
base::TimeDelta::FromSeconds(kStreamCloseDelaySeconds);
- scoped_refptr<AudioOutputDispatcher> dispatcher;
+ std::unique_ptr<AudioOutputDispatcher> dispatcher;
if (output_params.format() != AudioParameters::AUDIO_FAKE) {
- dispatcher = new AudioOutputResampler(this, params, output_params,
- output_device_id,
- kCloseDelay);
+ dispatcher = base::MakeUnique<AudioOutputResampler>(
+ this, params, output_params, output_device_id, kCloseDelay);
} else {
- dispatcher = new AudioOutputDispatcherImpl(this, output_params,
- output_device_id,
- kCloseDelay);
+ dispatcher = base::MakeUnique<AudioOutputDispatcherImpl>(
+ this, output_params, output_device_id, kCloseDelay);
}
- dispatcher_params->dispatcher = dispatcher;
+ dispatcher_params->dispatcher = std::move(dispatcher);
output_dispatchers_.push_back(dispatcher_params);
- return new AudioOutputProxy(dispatcher.get());
+ return new AudioOutputProxy(dispatcher_params->dispatcher.get());
}
void AudioManagerBase::ShowAudioInputSettings() {
@@ -306,11 +305,9 @@ void AudioManagerBase::ReleaseInputStream(AudioInputStream* stream) {
void AudioManagerBase::Shutdown() {
DCHECK(GetTaskRunner()->BelongsToCurrentThread());
+
// Close all output streams.
- while (!output_dispatchers_.empty()) {
- output_dispatchers_.back()->dispatcher->Shutdown();
- output_dispatchers_.pop_back();
- }
+ output_dispatchers_.clear();
#if defined(OS_MACOSX)
// On mac, AudioManager runs on the main thread, loop for which stops
« no previous file with comments | « no previous file | media/audio/audio_output_dispatcher.h » ('j') | media/audio/audio_output_dispatcher_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698