Remove sigslot usage from DtmfProviderInterface
Bug: webrtc:11943
Change-Id: I452efbb099affc10e9197573fa0e40094a0d90ca
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/270420
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37681}
diff --git a/pc/dtmf_sender.cc b/pc/dtmf_sender.cc
index 91d642c..c3bd4b6 100644
--- a/pc/dtmf_sender.cc
+++ b/pc/dtmf_sender.cc
@@ -75,11 +75,14 @@
inter_tone_gap_(kDtmfDefaultGapMs),
comma_delay_(kDtmfDefaultCommaDelayMs) {
RTC_DCHECK(signaling_thread_);
- if (provider_) {
- RTC_DCHECK(provider_->GetOnDestroyedSignal());
- provider_->GetOnDestroyedSignal()->connect(
- this, &DtmfSender::OnProviderDestroyed);
- }
+ RTC_DCHECK(provider_);
+}
+
+void DtmfSender::OnDtmfProviderDestroyed() {
+ RTC_DCHECK_RUN_ON(signaling_thread_);
+ RTC_DLOG(LS_INFO) << "The Dtmf provider is deleted. Clear the sending queue.";
+ StopSending();
+ provider_ = nullptr;
}
DtmfSender::~DtmfSender() {
@@ -232,14 +235,6 @@
QueueInsertDtmf(RTC_FROM_HERE, tone_gap);
}
-void DtmfSender::OnProviderDestroyed() {
- RTC_DCHECK_RUN_ON(signaling_thread_);
-
- RTC_LOG(LS_INFO) << "The Dtmf provider is deleted. Clear the sending queue.";
- StopSending();
- provider_ = nullptr;
-}
-
void DtmfSender::StopSending() {
if (safety_flag_) {
safety_flag_->SetNotAlive();
diff --git a/pc/dtmf_sender.h b/pc/dtmf_sender.h
index eb3bf5f..c295f03 100644
--- a/pc/dtmf_sender.h
+++ b/pc/dtmf_sender.h
@@ -23,7 +23,6 @@
#include "pc/proxy.h"
#include "rtc_base/location.h"
#include "rtc_base/ref_count.h"
-#include "rtc_base/third_party/sigslot/sigslot.h"
#include "rtc_base/thread_annotations.h"
// DtmfSender is the native implementation of the RTCDTMFSender defined by
@@ -43,19 +42,18 @@
// The `duration` indicates the length of the DTMF tone in ms.
// Returns true on success and false on failure.
virtual bool InsertDtmf(int code, int duration) = 0;
- // Returns a `sigslot::signal0<>` signal. The signal should fire before
- // the provider is destroyed.
- virtual sigslot::signal0<>* GetOnDestroyedSignal() = 0;
protected:
virtual ~DtmfProviderInterface() {}
};
-class DtmfSender : public DtmfSenderInterface, public sigslot::has_slots<> {
+class DtmfSender : public DtmfSenderInterface {
public:
static rtc::scoped_refptr<DtmfSender> Create(TaskQueueBase* signaling_thread,
DtmfProviderInterface* provider);
+ void OnDtmfProviderDestroyed();
+
// Implements DtmfSenderInterface.
void RegisterObserver(DtmfSenderObserverInterface* observer) override;
void UnregisterObserver() override;
@@ -85,8 +83,6 @@
// The DTMF sending task.
void DoInsertDtmf() RTC_RUN_ON(signaling_thread_);
- void OnProviderDestroyed();
-
void StopSending() RTC_RUN_ON(signaling_thread_);
DtmfSenderObserverInterface* observer_ RTC_GUARDED_BY(signaling_thread_);
diff --git a/pc/dtmf_sender_unittest.cc b/pc/dtmf_sender_unittest.cc
index 922abdc..ab5ba9e 100644
--- a/pc/dtmf_sender_unittest.cc
+++ b/pc/dtmf_sender_unittest.cc
@@ -77,8 +77,6 @@
FakeDtmfProvider() : last_insert_dtmf_call_(0) {}
- ~FakeDtmfProvider() { SignalDestroyed(); }
-
// Implements DtmfProviderInterface.
bool CanInsertDtmf() override { return can_insert_; }
@@ -95,10 +93,6 @@
return true;
}
- sigslot::signal0<>* GetOnDestroyedSignal() override {
- return &SignalDestroyed;
- }
-
// getter and setter
const std::vector<DtmfInfo>& dtmf_info_queue() const {
return dtmf_info_queue_;
@@ -111,7 +105,6 @@
bool can_insert_ = false;
std::vector<DtmfInfo> dtmf_info_queue_;
int64_t last_insert_dtmf_call_;
- sigslot::signal0<> SignalDestroyed;
};
class DtmfSenderTest : public ::testing::Test {
@@ -273,6 +266,7 @@
EXPECT_TRUE_SIMULATED_WAIT(observer_->tones().size() == 1, kMaxWaitMs,
fake_clock_);
// Delete provider.
+ dtmf_->OnDtmfProviderDestroyed();
provider_.reset();
// The queue should be discontinued so no more tone callbacks.
SIMULATED_WAIT(false, 200, fake_clock_);
diff --git a/pc/rtp_sender.cc b/pc/rtp_sender.cc
index 0b9642d..bf41f97 100644
--- a/pc/rtp_sender.cc
+++ b/pc/rtp_sender.cc
@@ -467,14 +467,13 @@
SetStreamsObserver* set_streams_observer)
: RtpSenderBase(worker_thread, id, set_streams_observer),
legacy_stats_(legacy_stats),
- dtmf_sender_proxy_(DtmfSenderProxy::Create(
- rtc::Thread::Current(),
- DtmfSender::Create(rtc::Thread::Current(), this))),
+ dtmf_sender_(DtmfSender::Create(rtc::Thread::Current(), this)),
+ dtmf_sender_proxy_(
+ DtmfSenderProxy::Create(rtc::Thread::Current(), dtmf_sender_)),
sink_adapter_(new LocalAudioSinkAdapter()) {}
AudioRtpSender::~AudioRtpSender() {
- // For DtmfSender.
- SignalDestroyed();
+ dtmf_sender_->OnDtmfProviderDestroyed();
Stop();
}
@@ -511,10 +510,6 @@
return success;
}
-sigslot::signal0<>* AudioRtpSender::GetOnDestroyedSignal() {
- return &SignalDestroyed;
-}
-
void AudioRtpSender::OnChanged() {
RTC_DCHECK_RUN_ON(signaling_thread_);
TRACE_EVENT0("webrtc", "AudioRtpSender::OnChanged");
diff --git a/pc/rtp_sender.h b/pc/rtp_sender.h
index f552df0..6e07dde 100644
--- a/pc/rtp_sender.h
+++ b/pc/rtp_sender.h
@@ -40,7 +40,6 @@
#include "pc/legacy_stats_collector_interface.h"
#include "rtc_base/checks.h"
#include "rtc_base/synchronization/mutex.h"
-#include "rtc_base/third_party/sigslot/sigslot.h"
#include "rtc_base/thread.h"
#include "rtc_base/thread_annotations.h"
@@ -314,7 +313,6 @@
// DtmfSenderProvider implementation.
bool CanInsertDtmf() override;
bool InsertDtmf(int code, int duration) override;
- sigslot::signal0<>* GetOnDestroyedSignal() override;
// ObserverInterface implementation.
void OnChanged() override;
@@ -351,9 +349,9 @@
return rtc::scoped_refptr<AudioTrackInterface>(
static_cast<AudioTrackInterface*>(track_.get()));
}
- sigslot::signal0<> SignalDestroyed;
LegacyStatsCollectorInterface* legacy_stats_ = nullptr;
+ rtc::scoped_refptr<DtmfSender> dtmf_sender_;
rtc::scoped_refptr<DtmfSenderInterface> dtmf_sender_proxy_;
bool cached_track_enabled_ = false;
diff --git a/pc/rtp_sender_receiver_unittest.cc b/pc/rtp_sender_receiver_unittest.cc
index 94b79f4..333fde5 100644
--- a/pc/rtp_sender_receiver_unittest.cc
+++ b/pc/rtp_sender_receiver_unittest.cc
@@ -63,7 +63,6 @@
#include "rtc_base/checks.h"
#include "rtc_base/gunit.h"
#include "rtc_base/location.h"
-#include "rtc_base/third_party/sigslot/sigslot.h"
#include "rtc_base/thread.h"
#include "test/gmock.h"
#include "test/gtest.h"
@@ -102,8 +101,7 @@
class RtpSenderReceiverTest
: public ::testing::Test,
- public ::testing::WithParamInterface<std::pair<RidList, RidList>>,
- public sigslot::has_slots<> {
+ public ::testing::WithParamInterface<std::pair<RidList, RidList>> {
public:
RtpSenderReceiverTest()
: network_thread_(rtc::Thread::Current()),
@@ -209,8 +207,6 @@
audio_rtp_sender_->SetStreams({local_stream_->id()});
audio_rtp_sender_->SetMediaChannel(voice_media_channel());
audio_rtp_sender_->SetSsrc(kAudioSsrc);
- audio_rtp_sender_->GetOnDestroyedSignal()->connect(
- this, &RtpSenderReceiverTest::OnAudioSenderDestroyed);
VerifyVoiceChannelInput();
}
@@ -220,8 +216,6 @@
audio_rtp_sender_->SetMediaChannel(voice_media_channel());
}
- void OnAudioSenderDestroyed() { audio_sender_destroyed_signal_fired_ = true; }
-
void CreateVideoRtpSender(uint32_t ssrc) {
CreateVideoRtpSender(false, ssrc);
}
@@ -528,7 +522,6 @@
rtc::scoped_refptr<MediaStreamInterface> local_stream_;
rtc::scoped_refptr<VideoTrackInterface> video_track_;
rtc::scoped_refptr<AudioTrackInterface> audio_track_;
- bool audio_sender_destroyed_signal_fired_ = false;
webrtc::test::ScopedKeyValueConfig field_trials_;
};
@@ -1621,15 +1614,6 @@
send_ssrc, 2, expected_duration));
}
-// Make sure the signal from "GetOnDestroyedSignal()" fires when the sender is
-// destroyed, which is needed for the DTMF sender.
-TEST_F(RtpSenderReceiverTest, TestOnDestroyedSignal) {
- CreateAudioRtpSender();
- EXPECT_FALSE(audio_sender_destroyed_signal_fired_);
- audio_rtp_sender_ = nullptr;
- EXPECT_TRUE(audio_sender_destroyed_signal_fired_);
-}
-
// Validate that the default FrameEncryptor setting is nullptr.
TEST_F(RtpSenderReceiverTest, AudioSenderCanSetFrameEncryptor) {
CreateAudioRtpSender();