Fix potential race in CallTest.

The FrameGeneratorCapturer instances continue to live after
RunBaseTest() returns, and have their own internal task queues. This
means any class that listens for frames may be called after return
from RunBaseTest(), at which point they may be destroyed.

This CL makes sure we remove any capturer before returning.

A specific example of this problem is
VideoSendStreamTest.SuspendBelowMinBitrate

Bug: None
Change-Id: I857566301acce3e32c0888c7a1d2ee3470e6eb28
Reviewed-on: https://webrtc-review.googlesource.com/c/116684
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26375}
This commit is contained in:
Erik Språng
2019-01-09 15:46:36 +01:00
committed by Commit Bot
parent 2c58ba1f24
commit 6a32de4285

View File

@ -37,6 +37,7 @@ CallTest::CallTest()
audio_send_config_(/*send_transport=*/nullptr,
/*media_transport=*/nullptr),
audio_send_stream_(nullptr),
frame_generator_capturer_(nullptr),
fake_encoder_factory_([this]() {
std::unique_ptr<FakeEncoder> fake_encoder;
if (video_encoder_configs_[0].codec_type == kVideoCodecVP8) {
@ -175,6 +176,8 @@ void CallTest::RunBaseTest(BaseTest* test) {
DestroyStreams();
send_transport_.reset();
receive_transport_.reset();
frame_generator_capturer_ = nullptr;
video_sources_.clear();
DestroyCalls();
});
}