Stop using rtc::TaskQueue::Current in RtcpTransceiver
Bug: webrtc:10191 Change-Id: Ifc080021ebcb203ea72beba8846e940a0c382dd1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126120 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#27015}
This commit is contained in:

committed by
Commit Bot

parent
dc62ae432d
commit
6318f13295
@ -22,7 +22,10 @@
|
|||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
namespace {
|
namespace {
|
||||||
struct Destructor {
|
struct Destructor {
|
||||||
void operator()() { rtcp_transceiver = nullptr; }
|
void operator()() {
|
||||||
|
rtcp_transceiver->StopPeriodicTask();
|
||||||
|
rtcp_transceiver = nullptr;
|
||||||
|
}
|
||||||
std::unique_ptr<RtcpTransceiverImpl> rtcp_transceiver;
|
std::unique_ptr<RtcpTransceiverImpl> rtcp_transceiver;
|
||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@ -97,13 +97,7 @@ RtcpTransceiverImpl::RtcpTransceiverImpl(const RtcpTransceiverConfig& config)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RtcpTransceiverImpl::~RtcpTransceiverImpl() {
|
RtcpTransceiverImpl::~RtcpTransceiverImpl() = default;
|
||||||
// If RtcpTransceiverImpl is destroyed off task queue, assume it is destroyed
|
|
||||||
// after TaskQueue. In that case there is no need to Cancel periodic task.
|
|
||||||
if (config_.task_queue == rtc::TaskQueue::Current()) {
|
|
||||||
periodic_task_handle_.Stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RtcpTransceiverImpl::AddMediaReceiverRtcpObserver(
|
void RtcpTransceiverImpl::AddMediaReceiverRtcpObserver(
|
||||||
uint32_t remote_ssrc,
|
uint32_t remote_ssrc,
|
||||||
|
@ -39,6 +39,8 @@ class RtcpTransceiverImpl {
|
|||||||
RtcpTransceiverImpl& operator=(const RtcpTransceiverImpl&) = delete;
|
RtcpTransceiverImpl& operator=(const RtcpTransceiverImpl&) = delete;
|
||||||
~RtcpTransceiverImpl();
|
~RtcpTransceiverImpl();
|
||||||
|
|
||||||
|
void StopPeriodicTask() { periodic_task_handle_.Stop(); }
|
||||||
|
|
||||||
void AddMediaReceiverRtcpObserver(uint32_t remote_ssrc,
|
void AddMediaReceiverRtcpObserver(uint32_t remote_ssrc,
|
||||||
MediaReceiverRtcpObserver* observer);
|
MediaReceiverRtcpObserver* observer);
|
||||||
void RemoveMediaReceiverRtcpObserver(uint32_t remote_ssrc,
|
void RemoveMediaReceiverRtcpObserver(uint32_t remote_ssrc,
|
||||||
|
@ -136,7 +136,7 @@ RtcpTransceiverConfig DefaultTestConfig() {
|
|||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtcpTransceiverImplTest, CanDestroyOnTaskQueue) {
|
TEST(RtcpTransceiverImplTest, NeedToStopPeriodicTaskToDestroyOnTaskQueue) {
|
||||||
FakeRtcpTransport transport;
|
FakeRtcpTransport transport;
|
||||||
rtc::TaskQueue queue("rtcp");
|
rtc::TaskQueue queue("rtcp");
|
||||||
RtcpTransceiverConfig config = DefaultTestConfig();
|
RtcpTransceiverConfig config = DefaultTestConfig();
|
||||||
@ -149,6 +149,7 @@ TEST(RtcpTransceiverImplTest, CanDestroyOnTaskQueue) {
|
|||||||
|
|
||||||
rtc::Event done;
|
rtc::Event done;
|
||||||
queue.PostTask([rtcp_transceiver, &done] {
|
queue.PostTask([rtcp_transceiver, &done] {
|
||||||
|
rtcp_transceiver->StopPeriodicTask();
|
||||||
delete rtcp_transceiver;
|
delete rtcp_transceiver;
|
||||||
done.Set();
|
done.Set();
|
||||||
});
|
});
|
||||||
@ -188,6 +189,7 @@ TEST(RtcpTransceiverImplTest, DelaysSendingFirstCompondPacket) {
|
|||||||
// Cleanup.
|
// Cleanup.
|
||||||
rtc::Event done;
|
rtc::Event done;
|
||||||
queue.PostTask([&] {
|
queue.PostTask([&] {
|
||||||
|
rtcp_transceiver->StopPeriodicTask();
|
||||||
rtcp_transceiver.reset();
|
rtcp_transceiver.reset();
|
||||||
done.Set();
|
done.Set();
|
||||||
});
|
});
|
||||||
@ -221,6 +223,7 @@ TEST(RtcpTransceiverImplTest, PeriodicallySendsPackets) {
|
|||||||
// Cleanup.
|
// Cleanup.
|
||||||
rtc::Event done;
|
rtc::Event done;
|
||||||
queue.PostTask([&] {
|
queue.PostTask([&] {
|
||||||
|
rtcp_transceiver->StopPeriodicTask();
|
||||||
rtcp_transceiver.reset();
|
rtcp_transceiver.reset();
|
||||||
done.Set();
|
done.Set();
|
||||||
});
|
});
|
||||||
@ -266,6 +269,7 @@ TEST(RtcpTransceiverImplTest, SendCompoundPacketDelaysPeriodicSendPackets) {
|
|||||||
// Cleanup.
|
// Cleanup.
|
||||||
rtc::Event done;
|
rtc::Event done;
|
||||||
queue.PostTask([&] {
|
queue.PostTask([&] {
|
||||||
|
rtcp_transceiver->StopPeriodicTask();
|
||||||
rtcp_transceiver.reset();
|
rtcp_transceiver.reset();
|
||||||
done.Set();
|
done.Set();
|
||||||
});
|
});
|
||||||
@ -330,6 +334,7 @@ TEST(RtcpTransceiverImplTest, SendsPeriodicRtcpWhenNetworkStateIsUp) {
|
|||||||
// Cleanup.
|
// Cleanup.
|
||||||
rtc::Event done;
|
rtc::Event done;
|
||||||
queue.PostTask([&] {
|
queue.PostTask([&] {
|
||||||
|
rtcp_transceiver->StopPeriodicTask();
|
||||||
rtcp_transceiver.reset();
|
rtcp_transceiver.reset();
|
||||||
done.Set();
|
done.Set();
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user