| Index: media/audio/audio_system_impl.cc
|
| diff --git a/media/audio/audio_system_impl.cc b/media/audio/audio_system_impl.cc
|
| index 00ea330761b28861dc27bd55cdc39f9ffc1c8337..f124d2ef5468f4fc50304a574bda87ff41017598 100644
|
| --- a/media/audio/audio_system_impl.cc
|
| +++ b/media/audio/audio_system_impl.cc
|
| @@ -60,19 +60,18 @@ AudioDeviceDescriptions GetDeviceDescriptionsOnDeviceThread(
|
| } // namespace
|
|
|
| AudioSystemImpl::AudioSystemImpl(AudioManager* audio_manager)
|
| - : audio_manager_(audio_manager) {
|
| + : audio_manager_(audio_manager), weak_factory_(this) {
|
| DCHECK(audio_manager_);
|
| AudioSystem::SetInstance(this);
|
| }
|
|
|
| AudioSystemImpl::~AudioSystemImpl() {
|
| - AudioSystem::ClearInstance(this);
|
| + DCHECK(GetTaskRunner()->BelongsToCurrentThread());
|
| }
|
|
|
| // static
|
| -std::unique_ptr<AudioSystem> AudioSystemImpl::Create(
|
| - AudioManager* audio_manager) {
|
| - return base::WrapUnique(new AudioSystemImpl(audio_manager));
|
| +AudioSystem::UniquePtr AudioSystemImpl::Create(AudioManager* audio_manager) {
|
| + return UniquePtr(new AudioSystemImpl(audio_manager));
|
| }
|
|
|
| void AudioSystemImpl::GetInputStreamParameters(
|
| @@ -122,11 +121,11 @@ void AudioSystemImpl::HasInputDevices(OnBoolCallback on_has_devices_cb) const {
|
| }
|
|
|
| void AudioSystemImpl::GetDeviceDescriptions(
|
| - OnDeviceDescriptionsCallback on_descriptions_cp,
|
| + OnDeviceDescriptionsCallback on_descriptions_cb,
|
| bool for_input) {
|
| if (GetTaskRunner()->BelongsToCurrentThread()) {
|
| GetTaskRunner()->PostTask(
|
| - FROM_HERE, base::Bind(on_descriptions_cp,
|
| + FROM_HERE, base::Bind(on_descriptions_cb,
|
| base::Passed(GetDeviceDescriptionsOnDeviceThread(
|
| audio_manager_, for_input))));
|
| return;
|
| @@ -136,15 +135,36 @@ void AudioSystemImpl::GetDeviceDescriptions(
|
| GetTaskRunner(), FROM_HERE,
|
| base::Bind(&GetDeviceDescriptionsOnDeviceThread,
|
| base::Unretained(audio_manager_), for_input),
|
| - std::move(on_descriptions_cp));
|
| + std::move(on_descriptions_cb));
|
| }
|
|
|
| -AudioManager* AudioSystemImpl::GetAudioManager() const {
|
| - return audio_manager_;
|
| +void AudioSystemImpl::GetAssociatedOutputDeviceID(
|
| + const std::string& input_device_id,
|
| + OnDeviceIdCallback on_device_id_cb) {
|
| + if (GetTaskRunner()->BelongsToCurrentThread()) {
|
| + GetTaskRunner()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(on_device_id_cb, audio_manager_->GetAssociatedOutputDeviceID(
|
| + input_device_id)));
|
| + return;
|
| + }
|
| + base::PostTaskAndReplyWithResult(
|
| + GetTaskRunner(), FROM_HERE,
|
| + base::Bind(&AudioManager::GetAssociatedOutputDeviceID,
|
| + base::Unretained(audio_manager_), input_device_id),
|
| + std::move(on_device_id_cb));
|
| +}
|
| +
|
| +base::WeakPtr<AudioSystem> AudioSystemImpl::GetWeakPtr() {
|
| + return weak_factory_.GetWeakPtr();
|
| }
|
|
|
| base::SingleThreadTaskRunner* AudioSystemImpl::GetTaskRunner() const {
|
| return audio_manager_->GetTaskRunner();
|
| }
|
|
|
| +AudioManager* AudioSystemImpl::GetAudioManager() const {
|
| + return audio_manager_;
|
| +}
|
| +
|
| } // namespace media
|
|
|