diff --git a/api/metronome/test/BUILD.gn b/api/metronome/test/BUILD.gn index 160b45cdf1..0ea13b3de5 100644 --- a/api/metronome/test/BUILD.gn +++ b/api/metronome/test/BUILD.gn @@ -18,7 +18,6 @@ rtc_library("fake_metronome") { "..:metronome", "../..:priority", "../..:sequence_checker", - "../../../api/task_queue:to_queued_task", "../../../rtc_base:macromagic", "../../../rtc_base:rtc_event", "../../../rtc_base:rtc_task_queue", diff --git a/api/metronome/test/fake_metronome.cc b/api/metronome/test/fake_metronome.cc index 7813a3de48..cb471b9ba9 100644 --- a/api/metronome/test/fake_metronome.cc +++ b/api/metronome/test/fake_metronome.cc @@ -13,7 +13,6 @@ #include "api/priority.h" #include "api/sequence_checker.h" #include "api/task_queue/task_queue_factory.h" -#include "api/task_queue/to_queued_task.h" #include "api/units/time_delta.h" #include "rtc_base/event.h" #include "rtc_base/task_utils/repeating_task.h" @@ -41,8 +40,7 @@ size_t ForcedTickMetronome::NumListeners() { void ForcedTickMetronome::Tick() { for (auto* listener : listeners_) { - listener->OnTickTaskQueue()->PostTask( - ToQueuedTask([listener] { listener->OnTick(); })); + listener->OnTickTaskQueue()->PostTask([listener] { listener->OnTick(); }); } } @@ -66,7 +64,7 @@ void FakeMetronome::AddListener(TickListener* listener) { return TimeDelta::PlusInfinity(); for (auto* listener : listeners_) { listener->OnTickTaskQueue()->PostTask( - ToQueuedTask([listener] { listener->OnTick(); })); + [listener] { listener->OnTick(); }); } return tick_period_; }); diff --git a/api/task_queue/test/BUILD.gn b/api/task_queue/test/BUILD.gn index fa82dd090e..25f7ed0c7f 100644 --- a/api/task_queue/test/BUILD.gn +++ b/api/task_queue/test/BUILD.gn @@ -13,6 +13,8 @@ rtc_library("mock_task_queue_base") { sources = [ "mock_task_queue_base.h" ] deps = [ "../../../api/task_queue:task_queue", + "../../../api/units:time_delta", "../../../test:test_support", ] + absl_deps = [ "//third_party/abseil-cpp/absl/functional:any_invocable" ] } diff --git a/api/task_queue/test/mock_task_queue_base.h b/api/task_queue/test/mock_task_queue_base.h index 68c5c052ed..2e99be7e82 100644 --- a/api/task_queue/test/mock_task_queue_base.h +++ b/api/task_queue/test/mock_task_queue_base.h @@ -11,20 +11,25 @@ #ifndef API_TASK_QUEUE_TEST_MOCK_TASK_QUEUE_BASE_H_ #define API_TASK_QUEUE_TEST_MOCK_TASK_QUEUE_BASE_H_ -#include - +#include "absl/functional/any_invocable.h" #include "api/task_queue/task_queue_base.h" +#include "api/units/time_delta.h" #include "test/gmock.h" namespace webrtc { class MockTaskQueueBase : public TaskQueueBase { public: - MOCK_METHOD0(Delete, void()); - MOCK_METHOD1(PostTask, void(std::unique_ptr)); - MOCK_METHOD2(PostDelayedTask, void(std::unique_ptr, uint32_t)); - MOCK_METHOD2(PostDelayedHighPrecisionTask, - void(std::unique_ptr, uint32_t)); + MOCK_METHOD(void, Delete, (), (override)); + MOCK_METHOD(void, PostTask, (absl::AnyInvocable), (override)); + MOCK_METHOD(void, + PostDelayedTask, + (absl::AnyInvocable, TimeDelta), + (override)); + MOCK_METHOD(void, + PostDelayedHighPrecisionTask, + (absl::AnyInvocable, TimeDelta), + (override)); }; } // namespace webrtc diff --git a/audio/BUILD.gn b/audio/BUILD.gn index 3efd00a9c2..86cf7e8222 100644 --- a/audio/BUILD.gn +++ b/audio/BUILD.gn @@ -62,7 +62,6 @@ rtc_library("audio") { "../api/rtc_event_log", "../api/task_queue", "../api/task_queue:pending_task_safety_flag", - "../api/task_queue:to_queued_task", "../api/transport/rtp:rtp_source", "../call:audio_sender_interface", "../call:bitrate_allocator", @@ -168,6 +167,7 @@ if (rtc_include_tests) { "../api/crypto:frame_decryptor_interface", "../api/rtc_event_log", "../api/task_queue:default_task_queue_factory", + "../api/task_queue/test:mock_task_queue_base", "../api/units:time_delta", "../call:mock_bitrate_allocator", "../call:mock_call_interfaces", @@ -324,7 +324,7 @@ if (rtc_include_tests) { "../test:test_support", "//testing/gtest", ] - + absl_deps = [ "//third_party/abseil-cpp/absl/functional:any_invocable" ] data = [ "//resources/voice_engine/audio_dtx16.wav" ] } } diff --git a/audio/audio_state_unittest.cc b/audio/audio_state_unittest.cc index 824a2ee2b4..4426a782d7 100644 --- a/audio/audio_state_unittest.cc +++ b/audio/audio_state_unittest.cc @@ -14,6 +14,7 @@ #include #include +#include "api/task_queue/test/mock_task_queue_base.h" #include "call/test/mock_audio_send_stream.h" #include "modules/audio_device/include/mock_audio_device.h" #include "modules/audio_mixer/audio_mixer_impl.h" @@ -34,18 +35,14 @@ constexpr int kSampleRate = 16000; constexpr int kNumberOfChannels = 1; struct FakeAsyncAudioProcessingHelper { - class FakeTaskQueue : public StrictMock { + class FakeTaskQueue : public StrictMock { public: FakeTaskQueue() = default; void Delete() override { delete this; } - void PostTask(std::unique_ptr task) override { - std::move(task)->Run(); + void PostTask(absl::AnyInvocable task) override { + std::move(task)(); } - MOCK_METHOD(void, - PostDelayedTask, - (std::unique_ptr task, uint32_t milliseconds), - (override)); }; class FakeTaskQueueFactory : public TaskQueueFactory { diff --git a/audio/channel_receive.cc b/audio/channel_receive.cc index 6b8d1c1488..c1225b1cd4 100644 --- a/audio/channel_receive.cc +++ b/audio/channel_receive.cc @@ -23,7 +23,6 @@ #include "api/sequence_checker.h" #include "api/task_queue/pending_task_safety_flag.h" #include "api/task_queue/task_queue_base.h" -#include "api/task_queue/to_queued_task.h" #include "audio/audio_level.h" #include "audio/channel_receive_frame_transformer_delegate.h" #include "audio/channel_send.h" @@ -482,7 +481,7 @@ AudioMixer::Source::AudioFrameInfo ChannelReceive::GetAudioFrameWithInfo( ++audio_frame_interval_count_; if (audio_frame_interval_count_ >= kHistogramReportingInterval) { audio_frame_interval_count_ = 0; - worker_thread_->PostTask(ToQueuedTask(worker_safety_, [this]() { + worker_thread_->PostTask(SafeTask(worker_safety_.flag(), [this]() { RTC_DCHECK_RUN_ON(&worker_thread_checker_); RTC_HISTOGRAM_COUNTS_1000("WebRTC.Audio.TargetJitterBufferDelayMs", acm_receiver_.TargetDelayMs()); diff --git a/audio/channel_receive_frame_transformer_delegate.cc b/audio/channel_receive_frame_transformer_delegate.cc index 085721eac0..0f742e5b16 100644 --- a/audio/channel_receive_frame_transformer_delegate.cc +++ b/audio/channel_receive_frame_transformer_delegate.cc @@ -12,7 +12,6 @@ #include -#include "api/task_queue/to_queued_task.h" #include "rtc_base/buffer.h" namespace webrtc { @@ -80,10 +79,10 @@ void ChannelReceiveFrameTransformerDelegate::Transform( void ChannelReceiveFrameTransformerDelegate::OnTransformedFrame( std::unique_ptr frame) { rtc::scoped_refptr delegate(this); - channel_receive_thread_->PostTask(ToQueuedTask( + channel_receive_thread_->PostTask( [delegate = std::move(delegate), frame = std::move(frame)]() mutable { delegate->ReceiveFrame(std::move(frame)); - })); + }); } void ChannelReceiveFrameTransformerDelegate::ReceiveFrame( diff --git a/audio/test/audio_bwe_integration_test.cc b/audio/test/audio_bwe_integration_test.cc index 23b8183db4..1d1ecdd75a 100644 --- a/audio/test/audio_bwe_integration_test.cc +++ b/audio/test/audio_bwe_integration_test.cc @@ -12,7 +12,7 @@ #include -#include "api/task_queue/queued_task.h" +#include "absl/functional/any_invocable.h" #include "api/task_queue/task_queue_base.h" #include "call/fake_network_pipe.h" #include "call/simulated_network.h" @@ -84,21 +84,15 @@ void AudioBweTest::PerformTest() { SleepMs(GetNetworkPipeConfig().queue_delay_ms + kExtraProcessTimeMs); } -class StatsPollTask : public QueuedTask { - public: - explicit StatsPollTask(Call* sender_call) : sender_call_(sender_call) {} - - private: - bool Run() override { - RTC_CHECK(sender_call_); - Call::Stats call_stats = sender_call_->GetStats(); +absl::AnyInvocable StatsPollTask(Call* sender_call) { + RTC_CHECK(sender_call); + return [sender_call] { + Call::Stats call_stats = sender_call->GetStats(); EXPECT_GT(call_stats.send_bandwidth_bps, 25000); - TaskQueueBase::Current()->PostDelayedTask(std::unique_ptr(this), - 100); - return false; - } - Call* sender_call_; -}; + TaskQueueBase::Current()->PostDelayedTask(StatsPollTask(sender_call), + TimeDelta::Millis(100)); + }; +} class NoBandwidthDropAfterDtx : public AudioBweTest { public: @@ -144,8 +138,8 @@ class NoBandwidthDropAfterDtx : public AudioBweTest { } void PerformTest() override { - stats_poller_.PostDelayedTask(std::make_unique(sender_call_), - 100); + stats_poller_.PostDelayedTask(StatsPollTask(sender_call_), + TimeDelta::Millis(100)); sender_call_->OnAudioTransportOverheadChanged(0); AudioBweTest::PerformTest(); } diff --git a/audio/voip/test/BUILD.gn b/audio/voip/test/BUILD.gn index d2ae985bc9..e89f2b001a 100644 --- a/audio/voip/test/BUILD.gn +++ b/audio/voip/test/BUILD.gn @@ -15,6 +15,7 @@ if (rtc_include_tests) { sources = [ "mock_task_queue.h" ] deps = [ "../../../api/task_queue:task_queue", + "../../../api/task_queue/test:mock_task_queue_base", "../../../test:test_support", ] } @@ -56,6 +57,7 @@ if (rtc_include_tests) { "../../../test:mock_transport", "../../../test:test_support", ] + absl_deps = [ "//third_party/abseil-cpp/absl/functional:any_invocable" ] } rtc_library("audio_ingress_unittests") { diff --git a/audio/voip/test/audio_channel_unittest.cc b/audio/voip/test/audio_channel_unittest.cc index a4f518c5bd..8955810429 100644 --- a/audio/voip/test/audio_channel_unittest.cc +++ b/audio/voip/test/audio_channel_unittest.cc @@ -9,6 +9,8 @@ */ #include "audio/voip/audio_channel.h" + +#include "absl/functional/any_invocable.h" #include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "api/audio_codecs/builtin_audio_encoder_factory.h" #include "api/call/transport.h" @@ -49,7 +51,7 @@ class AudioChannelTest : public ::testing::Test { // By default, run the queued task immediately. ON_CALL(task_queue_, PostTask) .WillByDefault( - Invoke([&](std::unique_ptr task) { task->Run(); })); + [](absl::AnyInvocable task) { std::move(task)(); }); } void SetUp() override { audio_channel_ = CreateAudioChannel(kLocalSsrc); } diff --git a/audio/voip/test/mock_task_queue.h b/audio/voip/test/mock_task_queue.h index c3553a21e7..547b0d3f75 100644 --- a/audio/voip/test/mock_task_queue.h +++ b/audio/voip/test/mock_task_queue.h @@ -14,13 +14,14 @@ #include #include "api/task_queue/task_queue_factory.h" +#include "api/task_queue/test/mock_task_queue_base.h" #include "test/gmock.h" namespace webrtc { // MockTaskQueue enables immediate task run from global TaskQueueBase. // It's necessary for some tests depending on TaskQueueBase internally. -class MockTaskQueue : public TaskQueueBase { +class MockTaskQueue : public MockTaskQueueBase { public: MockTaskQueue() : current_(this) {} @@ -28,12 +29,6 @@ class MockTaskQueue : public TaskQueueBase { // hold onto current global TaskQueueBase throughout the testing. void Delete() override {} - MOCK_METHOD(void, PostTask, (std::unique_ptr), (override)); - MOCK_METHOD(void, - PostDelayedTask, - (std::unique_ptr, uint32_t), - (override)); - private: CurrentTaskQueueSetter current_; }; diff --git a/call/adaptation/BUILD.gn b/call/adaptation/BUILD.gn index 1aa4da79e4..c1952329f1 100644 --- a/call/adaptation/BUILD.gn +++ b/call/adaptation/BUILD.gn @@ -39,7 +39,6 @@ rtc_library("resource_adaptation") { "../../api:sequence_checker", "../../api/adaptation:resource_adaptation_api", "../../api/task_queue:task_queue", - "../../api/task_queue:to_queued_task", "../../api/video:video_adaptation", "../../api/video:video_frame", "../../api/video:video_stream_encoder", @@ -121,7 +120,6 @@ if (rtc_include_tests) { "../../api:sequence_checker", "../../api/adaptation:resource_adaptation_api", "../../api/task_queue:task_queue", - "../../api/task_queue:to_queued_task", "../../api/video:video_stream_encoder", "../../test:test_support", ] diff --git a/call/adaptation/resource_adaptation_processor.cc b/call/adaptation/resource_adaptation_processor.cc index 54a683bb81..f4d1bf3538 100644 --- a/call/adaptation/resource_adaptation_processor.cc +++ b/call/adaptation/resource_adaptation_processor.cc @@ -17,7 +17,6 @@ #include "absl/algorithm/container.h" #include "absl/strings/string_view.h" #include "api/sequence_checker.h" -#include "api/task_queue/to_queued_task.h" #include "api/video/video_adaptation_counters.h" #include "call/adaptation/video_stream_adapter.h" #include "rtc_base/logging.h" diff --git a/common_video/incoming_video_stream.cc b/common_video/incoming_video_stream.cc index 6279f8330d..5f41ac2970 100644 --- a/common_video/incoming_video_stream.cc +++ b/common_video/incoming_video_stream.cc @@ -14,6 +14,7 @@ #include #include "absl/types/optional.h" +#include "api/units/time_delta.h" #include "common_video/video_render_frames.h" #include "rtc_base/checks.h" #include "rtc_base/trace_event.h" @@ -58,7 +59,7 @@ void IncomingVideoStream::Dequeue() { if (render_buffers_.HasPendingFrames()) { uint32_t wait_time = render_buffers_.TimeToNextFrameRelease(); incoming_render_queue_.PostDelayedHighPrecisionTask( - ToQueuedTask([this]() { Dequeue(); }), wait_time); + [this]() { Dequeue(); }, TimeDelta::Millis(wait_time)); } } diff --git a/logging/BUILD.gn b/logging/BUILD.gn index 8905c4aced..2507e7e17a 100644 --- a/logging/BUILD.gn +++ b/logging/BUILD.gn @@ -367,6 +367,7 @@ if (rtc_enable_protobuf) { "../api:sequence_checker", "../api/rtc_event_log", "../api/task_queue", + "../api/units:time_delta", "../rtc_base:checks", "../rtc_base:logging", "../rtc_base:macromagic", diff --git a/logging/rtc_event_log/rtc_event_log_impl.cc b/logging/rtc_event_log/rtc_event_log_impl.cc index 444dd48794..a48bbdeb8e 100644 --- a/logging/rtc_event_log/rtc_event_log_impl.cc +++ b/logging/rtc_event_log/rtc_event_log_impl.cc @@ -18,8 +18,8 @@ #include "absl/strings/string_view.h" #include "absl/types/optional.h" -#include "api/task_queue/queued_task.h" #include "api/task_queue/task_queue_base.h" +#include "api/units/time_delta.h" #include "logging/rtc_event_log/encoder/rtc_event_log_encoder_legacy.h" #include "logging/rtc_event_log/encoder/rtc_event_log_encoder_new_format.h" #include "rtc_base/checks.h" @@ -182,7 +182,8 @@ void RtcEventLogImpl::ScheduleOutput() { const int64_t time_since_output_ms = now_ms - last_output_ms_; const uint32_t delay = rtc::SafeClamp( *output_period_ms_ - time_since_output_ms, 0, *output_period_ms_); - task_queue_->PostDelayedTask(ToQueuedTask(std::move(output_task)), delay); + task_queue_->PostDelayedTask(std::move(output_task), + TimeDelta::Millis(delay)); } } diff --git a/media/BUILD.gn b/media/BUILD.gn index 2d38313481..8e810b7bcd 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -65,7 +65,6 @@ rtc_library("rtc_media_base") { "../api/crypto:frame_encryptor_interface", "../api/crypto:options", "../api/task_queue:pending_task_safety_flag", - "../api/task_queue:to_queued_task", "../api/transport:datagram_transport_interface", "../api/transport:stun_types", "../api/transport/rtp:rtp_source", @@ -278,7 +277,6 @@ rtc_library("rtc_audio_video") { "../api/audio_codecs:audio_codecs_api", "../api/task_queue", "../api/task_queue:pending_task_safety_flag", - "../api/task_queue:to_queued_task", "../api/transport:bitrate_settings", "../api/transport:field_trial_based_config", "../api/transport/rtp:rtp_source", @@ -422,7 +420,6 @@ if (rtc_build_dcsctp) { "../api:array_view", "../api/task_queue:pending_task_safety_flag", "../api/task_queue:task_queue", - "../api/task_queue:to_queued_task", "../media:rtc_media_base", "../net/dcsctp/public:factory", "../net/dcsctp/public:socket", diff --git a/media/base/media_channel.cc b/media/base/media_channel.cc index c3b2480543..e01bfb1a82 100644 --- a/media/base/media_channel.cc +++ b/media/base/media_channel.cc @@ -10,7 +10,6 @@ #include "media/base/media_channel.h" -#include "api/task_queue/to_queued_task.h" #include "media/base/rtp_utils.h" namespace cricket { @@ -18,8 +17,8 @@ using webrtc::FrameDecryptorInterface; using webrtc::FrameEncryptorInterface; using webrtc::FrameTransformerInterface; using webrtc::PendingTaskSafetyFlag; +using webrtc::SafeTask; using webrtc::TaskQueueBase; -using webrtc::ToQueuedTask; using webrtc::VideoTrackInterface; VideoOptions::VideoOptions() @@ -126,7 +125,7 @@ void MediaChannel::SetPreferredDscp(rtc::DiffServCodePoint new_dscp) { // This is currently the common path as the derived channel classes // get called on the worker thread. There are still some tests though // that call directly on the network thread. - network_thread_->PostTask(ToQueuedTask( + network_thread_->PostTask(SafeTask( network_safety_, [this, new_dscp]() { SetPreferredDscp(new_dscp); })); return; } @@ -190,7 +189,7 @@ void MediaChannel::SendRtp(const uint8_t* data, if (network_thread_->IsCurrent()) { send(); } else { - network_thread_->PostTask(ToQueuedTask(network_safety_, std::move(send))); + network_thread_->PostTask(SafeTask(network_safety_, std::move(send))); } } @@ -207,7 +206,7 @@ void MediaChannel::SendRtcp(const uint8_t* data, size_t len) { if (network_thread_->IsCurrent()) { send(); } else { - network_thread_->PostTask(ToQueuedTask(network_safety_, std::move(send))); + network_thread_->PostTask(SafeTask(network_safety_, std::move(send))); } } diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc index 22796adc3c..199d005a10 100644 --- a/media/engine/webrtc_video_engine.cc +++ b/media/engine/webrtc_video_engine.cc @@ -920,7 +920,7 @@ bool WebRtcVideoChannel::SetSendParameters(const VideoSendParameters& params) { void WebRtcVideoChannel::RequestEncoderFallback() { if (!worker_thread_->IsCurrent()) { worker_thread_->PostTask( - ToQueuedTask(task_safety_, [this] { RequestEncoderFallback(); })); + SafeTask(task_safety_.flag(), [this] { RequestEncoderFallback(); })); return; } @@ -942,7 +942,7 @@ void WebRtcVideoChannel::RequestEncoderSwitch( bool allow_default_fallback) { if (!worker_thread_->IsCurrent()) { worker_thread_->PostTask( - ToQueuedTask(task_safety_, [this, format, allow_default_fallback] { + SafeTask(task_safety_.flag(), [this, format, allow_default_fallback] { RequestEncoderSwitch(format, allow_default_fallback); })); return; @@ -1724,7 +1724,7 @@ void WebRtcVideoChannel::OnPacketReceived(rtc::CopyOnWriteBuffer packet, // to a common implementation and provide a callback on the worker thread // for the exception case (DELIVERY_UNKNOWN_SSRC) and how retry is attempted. worker_thread_->PostTask( - ToQueuedTask(task_safety_, [this, packet, packet_time_us] { + SafeTask(task_safety_.flag(), [this, packet, packet_time_us] { RTC_DCHECK_RUN_ON(&thread_checker_); const webrtc::PacketReceiver::DeliveryStatus delivery_result = call_->Receiver()->DeliverPacket(webrtc::MediaType::VIDEO, packet, @@ -1877,8 +1877,8 @@ void WebRtcVideoChannel::OnNetworkRouteChanged( absl::string_view transport_name, const rtc::NetworkRoute& network_route) { RTC_DCHECK_RUN_ON(&network_thread_checker_); - worker_thread_->PostTask(ToQueuedTask( - task_safety_, + worker_thread_->PostTask(SafeTask( + task_safety_.flag(), [this, name = std::string(transport_name), route = network_route] { RTC_DCHECK_RUN_ON(&thread_checker_); webrtc::RtpTransportControllerSendInterface* transport = diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc index 8511b03a9a..db8ec69446 100644 --- a/media/engine/webrtc_voice_engine.cc +++ b/media/engine/webrtc_voice_engine.cc @@ -25,7 +25,6 @@ #include "api/call/audio_sink.h" #include "api/field_trials_view.h" #include "api/task_queue/pending_task_safety_flag.h" -#include "api/task_queue/to_queued_task.h" #include "media/base/audio_source.h" #include "media/base/media_constants.h" #include "media/base/stream_params.h" @@ -2152,8 +2151,8 @@ void WebRtcVoiceMediaChannel::OnPacketReceived(rtc::CopyOnWriteBuffer packet, // consistency it would be good to move the interaction with call_->Receiver() // to a common implementation and provide a callback on the worker thread // for the exception case (DELIVERY_UNKNOWN_SSRC) and how retry is attempted. - worker_thread_->PostTask(ToQueuedTask(task_safety_, [this, packet, - packet_time_us] { + worker_thread_->PostTask(SafeTask(task_safety_.flag(), [this, packet, + packet_time_us] { RTC_DCHECK_RUN_ON(worker_thread_); webrtc::PacketReceiver::DeliveryStatus delivery_result = @@ -2232,8 +2231,8 @@ void WebRtcVoiceMediaChannel::OnNetworkRouteChanged( call_->OnAudioTransportOverheadChanged(network_route.packet_overhead); - worker_thread_->PostTask(ToQueuedTask( - task_safety_, + worker_thread_->PostTask(SafeTask( + task_safety_.flag(), [this, name = std::string(transport_name), route = network_route] { RTC_DCHECK_RUN_ON(worker_thread_); call_->GetTransportControllerSend()->OnNetworkRouteChanged(name, route); diff --git a/modules/audio_device/audio_device_buffer.cc b/modules/audio_device/audio_device_buffer.cc index c7c31b7667..8cc11debf4 100644 --- a/modules/audio_device/audio_device_buffer.cc +++ b/modules/audio_device/audio_device_buffer.cc @@ -477,10 +477,8 @@ void AudioDeviceBuffer::LogStats(LogState state) { // Keep posting new (delayed) tasks until state is changed to kLogStop. task_queue_.PostDelayedTask( - ToQueuedTask([this] { - AudioDeviceBuffer::LogStats(AudioDeviceBuffer::LOG_ACTIVE); - }), - time_to_wait_ms); + [this] { AudioDeviceBuffer::LogStats(AudioDeviceBuffer::LOG_ACTIVE); }, + TimeDelta::Millis(time_to_wait_ms)); } void AudioDeviceBuffer::ResetRecStats() { diff --git a/net/dcsctp/socket/BUILD.gn b/net/dcsctp/socket/BUILD.gn index 3278a309cb..39254e25f1 100644 --- a/net/dcsctp/socket/BUILD.gn +++ b/net/dcsctp/socket/BUILD.gn @@ -229,7 +229,6 @@ if (rtc_include_tests) { "../../../api:create_network_emulation_manager", "../../../api:network_emulation_manager_api", "../../../api/task_queue:task_queue", - "../../../api/task_queue:to_queued_task", "../../../api/units:time_delta", "../../../call:simulated_network", "../../../rtc_base:checks", diff --git a/net/dcsctp/timer/task_queue_timeout_test.cc b/net/dcsctp/timer/task_queue_timeout_test.cc index da01ecf991..f360ba7a58 100644 --- a/net/dcsctp/timer/task_queue_timeout_test.cc +++ b/net/dcsctp/timer/task_queue_timeout_test.cc @@ -11,7 +11,6 @@ #include -#include "api/task_queue/queued_task.h" #include "api/task_queue/task_queue_base.h" #include "api/task_queue/test/mock_task_queue_base.h" #include "rtc_base/gunit.h" diff --git a/pc/proxy.h b/pc/proxy.h index 89a7f51150..3877a6fcc8 100644 --- a/pc/proxy.h +++ b/pc/proxy.h @@ -66,7 +66,6 @@ #include #include "api/scoped_refptr.h" -#include "api/task_queue/queued_task.h" #include "api/task_queue/task_queue_base.h" #include "rtc_base/event.h" #include "rtc_base/location.h" diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc index 478f714ddb..f79ad4e9a7 100644 --- a/pc/rtc_stats_collector.cc +++ b/pc/rtc_stats_collector.cc @@ -31,7 +31,6 @@ #include "api/sequence_checker.h" #include "api/stats/rtc_stats.h" #include "api/stats/rtcstats_objects.h" -#include "api/task_queue/queued_task.h" #include "api/units/time_delta.h" #include "api/video/video_content_type.h" #include "common_video/include/quality_limitation_reason.h" diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index 546a6d6c51..c183f5fffa 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -601,7 +601,6 @@ rtc_library("rtc_task_queue") { deps = [ ":macromagic", "../api/task_queue", - "../api/task_queue:to_queued_task", "system:rtc_export", ] absl_deps = [ diff --git a/rtc_base/task_queue.cc b/rtc_base/task_queue.cc index 0b54178405..7c972ed152 100644 --- a/rtc_base/task_queue.cc +++ b/rtc_base/task_queue.cc @@ -29,26 +29,4 @@ bool TaskQueue::IsCurrent() const { return impl_->IsCurrent(); } -void TaskQueue::PostTask(std::unique_ptr task) { - impl_->PostTask(std::move(task)); -} - -void TaskQueue::PostDelayedTask(std::unique_ptr task, - uint32_t milliseconds) { - impl_->PostDelayedTask(std::move(task), milliseconds); -} - -void TaskQueue::PostDelayedHighPrecisionTask( - std::unique_ptr task, - uint32_t milliseconds) { - impl_->PostDelayedHighPrecisionTask(std::move(task), milliseconds); -} - -void TaskQueue::PostDelayedTaskWithPrecision( - webrtc::TaskQueueBase::DelayPrecision precision, - std::unique_ptr task, - uint32_t milliseconds) { - impl_->PostDelayedTaskWithPrecision(precision, std::move(task), milliseconds); -} - } // namespace rtc diff --git a/rtc_base/task_queue.h b/rtc_base/task_queue.h index b2a08f8fa0..d0c05515b0 100644 --- a/rtc_base/task_queue.h +++ b/rtc_base/task_queue.h @@ -21,7 +21,6 @@ #include "api/task_queue/queued_task.h" #include "api/task_queue/task_queue_base.h" #include "api/task_queue/task_queue_factory.h" -#include "api/task_queue/to_queued_task.h" #include "rtc_base/system/rtc_export.h" #include "rtc_base/thread_annotations.h" @@ -93,22 +92,17 @@ class RTC_LOCKABLE RTC_EXPORT TaskQueue { webrtc::TaskQueueBase* Get() { return impl_; } // TODO(tommi): For better debuggability, implement RTC_FROM_HERE. - - // Ownership of the task is passed to PostTask. - void PostTask(std::unique_ptr task); - // See webrtc::TaskQueueBase for precision expectations. - void PostDelayedTask(std::unique_ptr task, - uint32_t milliseconds); - void PostDelayedHighPrecisionTask(std::unique_ptr task, - uint32_t milliseconds); - void PostDelayedTaskWithPrecision( - webrtc::TaskQueueBase::DelayPrecision precision, - std::unique_ptr task, - uint32_t milliseconds); - void PostTask(absl::AnyInvocable task) { impl_->PostTask(std::move(task)); } + void PostDelayedTask(absl::AnyInvocable task, + webrtc::TimeDelta delay) { + impl_->PostDelayedTask(std::move(task), delay); + } + void PostDelayedHighPrecisionTask(absl::AnyInvocable task, + webrtc::TimeDelta delay) { + impl_->PostDelayedHighPrecisionTask(std::move(task), delay); + } private: webrtc::TaskQueueBase* const impl_; diff --git a/rtc_base/task_queue_unittest.cc b/rtc_base/task_queue_unittest.cc index bd07a408a6..693cd4bef1 100644 --- a/rtc_base/task_queue_unittest.cc +++ b/rtc_base/task_queue_unittest.cc @@ -16,11 +16,13 @@ #endif #include + #include #include #include #include "absl/memory/memory.h" +#include "api/units/time_delta.h" #include "rtc_base/event.h" #include "rtc_base/task_queue_for_test.h" #include "rtc_base/time_utils.h" @@ -29,6 +31,7 @@ namespace rtc { namespace { +using ::webrtc::TimeDelta; // Noop on all platforms except Windows, where it turns on high precision // multimedia timers which increases the precision of TimeMillis() while in // scope. @@ -66,9 +69,8 @@ TEST(TaskQueueTest, DISABLED_PostDelayedHighRes) { webrtc::TaskQueueForTest queue(kQueueName, TaskQueue::Priority::HIGH); uint32_t start = Time(); - queue.PostDelayedTask( - webrtc::ToQueuedTask([&event, &queue] { CheckCurrent(&event, &queue); }), - 3); + queue.PostDelayedTask([&event, &queue] { CheckCurrent(&event, &queue); }, + TimeDelta::Millis(3)); EXPECT_TRUE(event.Wait(1000)); uint32_t end = TimeMillis(); // These tests are a little relaxed due to how "powerful" our test bots can diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn index bd14a9f3c9..5f21ffe641 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -1563,7 +1563,6 @@ if (is_ios || is_mac) { "../api:field_trials_view", "../api:sequence_checker", "../api/task_queue:pending_task_safety_flag", - "../api/task_queue:to_queued_task", "../rtc_base", "../rtc_base:logging", "../rtc_base:macromagic", diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index e35e4e35b7..f082bd353a 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -583,7 +583,6 @@ if (current_os == "linux" || is_android) { "../../api:scoped_refptr", "../../api:sequence_checker", "../../api/task_queue:pending_task_safety_flag", - "../../api/task_queue:to_queued_task", "../../rtc_base", "../../rtc_base:checks", "../../rtc_base:ip_address", @@ -675,7 +674,6 @@ if (current_os == "linux" || is_android) { "../../api:media_stream_interface", "../../api:sequence_checker", "../../api/task_queue", - "../../api/task_queue:to_queued_task", "../../api/video:encoded_image", "../../api/video:render_resolution", "../../api/video:video_frame", diff --git a/sdk/android/src/jni/android_network_monitor.cc b/sdk/android/src/jni/android_network_monitor.cc index 8b2e6c5e67..539d41487e 100644 --- a/sdk/android/src/jni/android_network_monitor.cc +++ b/sdk/android/src/jni/android_network_monitor.cc @@ -19,7 +19,6 @@ #endif #include "api/sequence_checker.h" -#include "api/task_queue/to_queued_task.h" #include "rtc_base/checks.h" #include "rtc_base/ip_address.h" #include "rtc_base/logging.h" @@ -631,7 +630,7 @@ AndroidNetworkMonitorFactory::CreateNetworkMonitor( void AndroidNetworkMonitor::NotifyConnectionTypeChanged( JNIEnv* env, const JavaRef& j_caller) { - network_thread_->PostTask(ToQueuedTask(safety_flag_, [this] { + network_thread_->PostTask(SafeTask(safety_flag_, [this] { RTC_LOG(LS_INFO) << "Android network monitor detected connection type change."; InvokeNetworksChangedCallback(); @@ -654,8 +653,8 @@ void AndroidNetworkMonitor::NotifyOfNetworkConnect( const JavaRef& j_network_info) { NetworkInformation network_info = GetNetworkInformationFromJava(env, j_network_info); - network_thread_->PostTask(ToQueuedTask( - safety_flag_, [this, network_info = std::move(network_info)] { + network_thread_->PostTask( + SafeTask(safety_flag_, [this, network_info = std::move(network_info)] { OnNetworkConnected_n(network_info); })); } @@ -664,7 +663,7 @@ void AndroidNetworkMonitor::NotifyOfNetworkDisconnect( JNIEnv* env, const JavaRef& j_caller, jlong network_handle) { - network_thread_->PostTask(ToQueuedTask(safety_flag_, [this, network_handle] { + network_thread_->PostTask(SafeTask(safety_flag_, [this, network_handle] { OnNetworkDisconnected_n(static_cast(network_handle)); })); } @@ -678,9 +677,9 @@ void AndroidNetworkMonitor::NotifyOfNetworkPreference( rtc::NetworkPreference preference = static_cast(jpreference); - network_thread_->PostTask(ToQueuedTask( - safety_flag_, - [this, type, preference] { OnNetworkPreference_n(type, preference); })); + network_thread_->PostTask(SafeTask(safety_flag_, [this, type, preference] { + OnNetworkPreference_n(type, preference); + })); } } // namespace jni diff --git a/sdk/android/src/jni/video_encoder_wrapper.cc b/sdk/android/src/jni/video_encoder_wrapper.cc index bd40d7742f..c23ab1e485 100644 --- a/sdk/android/src/jni/video_encoder_wrapper.cc +++ b/sdk/android/src/jni/video_encoder_wrapper.cc @@ -12,7 +12,6 @@ #include -#include "api/task_queue/to_queued_task.h" #include "common_video/h264/h264_common.h" #include "modules/video_coding/include/video_codec_interface.h" #include "modules/video_coding/include/video_error_codes.h" diff --git a/sdk/objc/native/src/objc_network_monitor.mm b/sdk/objc/native/src/objc_network_monitor.mm index 3afa2e6c15..535548c64c 100644 --- a/sdk/objc/native/src/objc_network_monitor.mm +++ b/sdk/objc/native/src/objc_network_monitor.mm @@ -11,8 +11,6 @@ #include "sdk/objc/native/src/objc_network_monitor.h" #include "absl/strings/string_view.h" -#include "api/task_queue/to_queued_task.h" - #include #include "rtc_base/logging.h" @@ -87,7 +85,7 @@ rtc::NetworkMonitorInterface::InterfaceInfo ObjCNetworkMonitor::GetInterfaceInfo void ObjCNetworkMonitor::OnPathUpdate( std::map adapter_type_by_name) { RTC_DCHECK(network_monitor_ != nil); - thread_->PostTask(ToQueuedTask(safety_flag_, [this, adapter_type_by_name] { + thread_->PostTask(SafeTask(safety_flag_, [this, adapter_type_by_name] { RTC_DCHECK_RUN_ON(thread_); adapter_type_by_name_ = adapter_type_by_name; InvokeNetworksChangedCallback(); diff --git a/video/video_stream_decoder_impl.cc b/video/video_stream_decoder_impl.cc index 91be5a0305..fdc79eb229 100644 --- a/video/video_stream_decoder_impl.cc +++ b/video/video_stream_decoder_impl.cc @@ -12,7 +12,6 @@ #include -#include "api/task_queue/queued_task.h" #include "rtc_base/logging.h" #include "rtc_base/numerics/mod_ops.h" #include "rtc_base/time_utils.h" diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc index 23dc28aa82..91e5fb77bc 100644 --- a/video/video_stream_encoder.cc +++ b/video/video_stream_encoder.cc @@ -22,7 +22,6 @@ #include "absl/types/optional.h" #include "api/field_trials_view.h" #include "api/sequence_checker.h" -#include "api/task_queue/queued_task.h" #include "api/task_queue/task_queue_base.h" #include "api/video/encoded_image.h" #include "api/video/i420_buffer.h"