From 711a31aead9007e42dd73c302c8ec40f9e931619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Tue, 4 Sep 2018 14:32:13 +0200 Subject: [PATCH] Explicitly wrap main thread in test_main.cc. Bug: webrtc:9714 Change-Id: I6ee234f9a0b88b3656a683f2455c3e4b2acf0d54 Reviewed-on: https://webrtc-review.googlesource.com/97683 Reviewed-by: Tommi Reviewed-by: Karl Wiberg Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/master@{#24560} --- rtc_base/messagequeue.cc | 14 +++++++++----- test/BUILD.gn | 2 +- test/test_main.cc | 5 +++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/rtc_base/messagequeue.cc b/rtc_base/messagequeue.cc index 035ff07066..93e6b1e7f8 100644 --- a/rtc_base/messagequeue.cc +++ b/rtc_base/messagequeue.cc @@ -163,11 +163,15 @@ void MessageQueueManager::ProcessAllMessageQueuesInternal() { new ScopedIncrement(&queues_not_done)); } } - // Note: One of the message queues may have been on this thread, which is why - // we can't synchronously wait for queues_not_done to go to 0; we need to - // process messages as well. - while (AtomicOps::AcquireLoad(&queues_not_done) > 0) { - rtc::Thread::Current()->ProcessMessages(0); + + rtc::Thread* current = rtc::Thread::Current(); + if (current) { + // Note: One of the message queues may have been on this thread, which is + // why we can't synchronously wait for queues_not_done to go to 0; we need + // to process messages as well. + while (AtomicOps::AcquireLoad(&queues_not_done) > 0) { + current->ProcessMessages(0); + } } } diff --git a/test/BUILD.gn b/test/BUILD.gn index 054af655d6..aefd8f9509 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -209,7 +209,7 @@ if (rtc_include_tests) { ":field_trial", ":fileutils", ":perf_test", - "../rtc_base:rtc_base_approved", + "../rtc_base:rtc_base", "../system_wrappers:field_trial_default", "../system_wrappers:metrics_default", "../system_wrappers:runtime_enabled_features_default", diff --git a/test/test_main.cc b/test/test_main.cc index 277d420c67..6be25085b4 100644 --- a/test/test_main.cc +++ b/test/test_main.cc @@ -10,6 +10,7 @@ #include "rtc_base/flags.h" #include "rtc_base/logging.h" +#include "rtc_base/thread.h" #include "system_wrappers/include/field_trial_default.h" #include "system_wrappers/include/metrics_default.h" #include "test/field_trial.h" @@ -87,6 +88,10 @@ int main(int argc, char* argv[]) { rtc::LogMessage::SetLogToStderr(FLAG_logs); + // Ensure that main thread gets wrapped as an rtc::Thread. + rtc::ThreadManager::Instance()->WrapCurrentThread(); + RTC_CHECK(rtc::Thread::Current()); + #if defined(WEBRTC_IOS) rtc::test::InitTestSuite(RUN_ALL_TESTS, argc, argv,