Change the AudioDeiviceDataObserver to be passed as a unique_ptr.
Bug: webrtc:11356 Change-Id: If89305f257fd966d83f37dbd03922c4d030b6d8f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168771 Commit-Queue: Fabian Bergmark <fabianbergmark@google.com> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30575}
This commit is contained in:

committed by
Commit Bot

parent
74c5b0ac23
commit
9a4eb32477
@ -23,15 +23,20 @@ namespace {
|
||||
class ADMWrapper : public AudioDeviceModule, public AudioTransport {
|
||||
public:
|
||||
ADMWrapper(rtc::scoped_refptr<AudioDeviceModule> impl,
|
||||
AudioDeviceDataObserver* observer)
|
||||
: impl_(impl), observer_(observer) {
|
||||
AudioDeviceDataObserver* legacy_observer,
|
||||
std::unique_ptr<AudioDeviceDataObserver> observer)
|
||||
: impl_(impl),
|
||||
legacy_observer_(legacy_observer),
|
||||
observer_(std::move(observer)) {
|
||||
is_valid_ = impl_.get() != nullptr;
|
||||
}
|
||||
ADMWrapper(AudioLayer audio_layer,
|
||||
TaskQueueFactory* task_queue_factory,
|
||||
AudioDeviceDataObserver* observer)
|
||||
AudioDeviceDataObserver* legacy_observer,
|
||||
std::unique_ptr<AudioDeviceDataObserver> observer)
|
||||
: ADMWrapper(AudioDeviceModule::Create(audio_layer, task_queue_factory),
|
||||
observer) {}
|
||||
legacy_observer,
|
||||
std::move(observer)) {}
|
||||
~ADMWrapper() override {
|
||||
audio_transport_ = nullptr;
|
||||
observer_ = nullptr;
|
||||
@ -285,7 +290,8 @@ class ADMWrapper : public AudioDeviceModule, public AudioTransport {
|
||||
|
||||
protected:
|
||||
rtc::scoped_refptr<AudioDeviceModule> impl_;
|
||||
AudioDeviceDataObserver* observer_ = nullptr;
|
||||
AudioDeviceDataObserver* legacy_observer_ = nullptr;
|
||||
std::unique_ptr<AudioDeviceDataObserver> observer_;
|
||||
AudioTransport* audio_transport_ = nullptr;
|
||||
bool is_valid_ = false;
|
||||
};
|
||||
@ -294,9 +300,23 @@ class ADMWrapper : public AudioDeviceModule, public AudioTransport {
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
rtc::scoped_refptr<AudioDeviceModule> impl,
|
||||
AudioDeviceDataObserver* observer) {
|
||||
std::unique_ptr<AudioDeviceDataObserver> observer) {
|
||||
rtc::scoped_refptr<ADMWrapper> audio_device(
|
||||
new rtc::RefCountedObject<ADMWrapper>(impl, observer));
|
||||
new rtc::RefCountedObject<ADMWrapper>(impl, observer.get(),
|
||||
std::move(observer)));
|
||||
|
||||
if (!audio_device->IsValid()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return audio_device;
|
||||
}
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
rtc::scoped_refptr<AudioDeviceModule> impl,
|
||||
AudioDeviceDataObserver* legacy_observer) {
|
||||
rtc::scoped_refptr<ADMWrapper> audio_device(
|
||||
new rtc::RefCountedObject<ADMWrapper>(impl, legacy_observer, nullptr));
|
||||
|
||||
if (!audio_device->IsValid()) {
|
||||
return nullptr;
|
||||
@ -308,10 +328,26 @@ rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
AudioDeviceModule::AudioLayer audio_layer,
|
||||
TaskQueueFactory* task_queue_factory,
|
||||
AudioDeviceDataObserver* observer) {
|
||||
std::unique_ptr<AudioDeviceDataObserver> observer) {
|
||||
rtc::scoped_refptr<ADMWrapper> audio_device(
|
||||
new rtc::RefCountedObject<ADMWrapper>(audio_layer, task_queue_factory,
|
||||
observer));
|
||||
observer.get(),
|
||||
std::move(observer)));
|
||||
|
||||
if (!audio_device->IsValid()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return audio_device;
|
||||
}
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
AudioDeviceModule::AudioLayer audio_layer,
|
||||
TaskQueueFactory* task_queue_factory,
|
||||
AudioDeviceDataObserver* legacy_observer) {
|
||||
rtc::scoped_refptr<ADMWrapper> audio_device(
|
||||
new rtc::RefCountedObject<ADMWrapper>(audio_layer, task_queue_factory,
|
||||
legacy_observer, nullptr));
|
||||
|
||||
if (!audio_device->IsValid()) {
|
||||
return nullptr;
|
||||
|
@ -42,11 +42,25 @@ class AudioDeviceDataObserver {
|
||||
|
||||
// Creates an ADMWrapper around an ADM instance that registers
|
||||
// the provided AudioDeviceDataObserver.
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
rtc::scoped_refptr<AudioDeviceModule> impl,
|
||||
std::unique_ptr<AudioDeviceDataObserver> observer);
|
||||
|
||||
// Creates an ADMWrapper around an ADM instance that registers
|
||||
// the provided AudioDeviceDataObserver.
|
||||
RTC_DEPRECATED
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
rtc::scoped_refptr<AudioDeviceModule> impl,
|
||||
AudioDeviceDataObserver* observer);
|
||||
|
||||
// Creates an ADM instance with AudioDeviceDataObserver registered.
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
const AudioDeviceModule::AudioLayer audio_layer,
|
||||
TaskQueueFactory* task_queue_factory,
|
||||
std::unique_ptr<AudioDeviceDataObserver> observer);
|
||||
|
||||
// Creates an ADM instance with AudioDeviceDataObserver registered.
|
||||
RTC_DEPRECATED
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
|
||||
const AudioDeviceModule::AudioLayer audio_layer,
|
||||
TaskQueueFactory* task_queue_factory,
|
||||
|
Reference in New Issue
Block a user