We already cherry-picked this when we vendored f30c044cf9. Upstream commit: https://webrtc.googlesource.com/src/+/995688c8e85b520d50961486abbe0cc03eae9558 Revert "more p2p cleanups" This reverts commit f30c044cf9bd06f91017c171d98690094ce6d88b. Reason for revert: breaks roll to chromium: https://ci.chromium.org/ui/p/chromium/builders/try/mac_chromium_compile_dbg_ng/2290104/overview Original change's description: > more p2p cleanups > > Move test code from p2p/base and rtc_base/ into p2p/test/ > This p2p/base much less crowded and > clarifies that the rtc_base/nat* is in fact only test code. > > BUG=webrtc:0 > > Change-Id: I4d14fae24cb0eff6783962f4b4483b560367ca5d > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/378900 > Commit-Queue: Jonas Oreland <jonaso@webrtc.org> > Reviewed-by: Harald Alvestrand <hta@webrtc.org> > Auto-Submit: Jonas Oreland <jonaso@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#43995} Bug: webrtc:0 Change-Id: I6c79fa85f53fdb9a1dacbe38911771f9a4289c76 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/379040 Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43999} Differential Revision: https://phabricator.services.mozilla.com/D244009
39 lines
1.6 KiB
Diff
39 lines
1.6 KiB
Diff
From: Byron Campen <docfaraday@gmail.com>
|
|
Date: Thu, 20 Jul 2023 14:24:00 +0000
|
|
Subject: Bug 1838080: Ensure that last ref to transformation_queue_ is not
|
|
released on itself. r=pehrsons,webrtc-reviewers
|
|
|
|
Differential Revision: https://phabricator.services.mozilla.com/D181699
|
|
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/91d9e8b6a5c430a73561ffd2330865f04fcb1a6d
|
|
---
|
|
.../rtp_sender_video_frame_transformer_delegate.cc | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
|
|
diff --git a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
|
|
index 86c69f7861..fd76cde157 100644
|
|
--- a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
|
|
+++ b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
|
|
@@ -34,6 +34,7 @@
|
|
#include "api/video_codecs/video_codec.h"
|
|
#include "modules/rtp_rtcp/source/rtp_video_header.h"
|
|
#include "rtc_base/checks.h"
|
|
+#include "rtc_base/event.h"
|
|
#include "rtc_base/synchronization/mutex.h"
|
|
|
|
namespace webrtc {
|
|
@@ -287,6 +288,14 @@ void RTPSenderVideoFrameTransformerDelegate::Reset() {
|
|
MutexLock lock(&sender_lock_);
|
|
sender_ = nullptr;
|
|
}
|
|
+ // Wait until all pending tasks are executed, to ensure that the last ref
|
|
+ // standing is not on the transformation queue.
|
|
+ rtc::Event flush;
|
|
+ transformation_queue_->PostTask([this, &flush]() {
|
|
+ RTC_DCHECK_RUN_ON(transformation_queue_.get());
|
|
+ flush.Set();
|
|
+ });
|
|
+ flush.Wait(rtc::Event::kForever);
|
|
}
|
|
|
|
std::unique_ptr<TransformableVideoFrameInterface> CloneSenderVideoFrame(
|