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 |