Poison default task queue factory Users of webrtc generally should be able to choose own task queue implementation. Poison avoids accidental dependency of a low level component on the default implementation Android and ios apis are still de-facto forced to use the default implementation. Bug: webrtc:10284 Change-Id: I67ecf2317f43ee32b0c9e8a6e69f1e0987cf1914 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144786 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28524}
diff --git a/BUILD.gn b/BUILD.gn index 8334573..af0de9f 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -675,3 +675,6 @@ group("poison_software_video_codecs") { } + +group("poison_default_task_queue") { +}
diff --git a/api/BUILD.gn b/api/BUILD.gn index 01d79ea..645daee 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn
@@ -38,6 +38,7 @@ if (!build_with_chromium) { rtc_static_library("create_peerconnection_factory") { visibility = [ "*" ] + allow_poison = [ "default_task_queue" ] sources = [ "create_peerconnection_factory.cc", "create_peerconnection_factory.h",
diff --git a/api/task_queue/BUILD.gn b/api/task_queue/BUILD.gn index 19b9e0e..4b84607 100644 --- a/api/task_queue/BUILD.gn +++ b/api/task_queue/BUILD.gn
@@ -49,6 +49,9 @@ rtc_source_set("default_task_queue_factory") { visibility = [ "*" ] + if (!is_ios && !is_android) { + poisonous = [ "default_task_queue" ] + } sources = [ "default_task_queue_factory.h", ]
diff --git a/media/BUILD.gn b/media/BUILD.gn index 6361fb8..bf585ac 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn
@@ -343,6 +343,7 @@ visibility = [ "*" ] allow_poison = [ "audio_codecs", + "default_task_queue", "software_video_codecs", ] sources = [
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn index 2eab502..8303d8a 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn
@@ -459,7 +459,10 @@ if (rtc_use_metal_rendering) { rtc_static_library("metal_objc") { visibility = [ "*" ] - allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. + allow_poison = [ + "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. + "default_task_queue", + ] sources = [ "objc/components/renderer/metal/RTCMTLI420Renderer.h", "objc/components/renderer/metal/RTCMTLI420Renderer.mm", @@ -658,7 +661,10 @@ # The applications which only use WebRTC DataChannel can depend on this. rtc_static_library("peerconnectionfactory_no_media_objc") { visibility = [ "*" ] - allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. + allow_poison = [ + "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. + "default_task_queue", + ] defines = [ "HAVE_NO_MEDIA" ] sources = [ @@ -776,7 +782,10 @@ rtc_static_library("peerconnectionfactory_base_objc") { visibility = [ "*" ] - allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. + allow_poison = [ + "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. + "default_task_queue", + ] configs += [ "..:no_exit_time_destructors", "..:no_global_constructors", @@ -908,7 +917,6 @@ ":videorendereradapter_objc", ":videosource_objc", ":videotoolbox_objc", - "../api:create_peerconnection_factory", "../api:libjingle_peerconnection_api", "../api:rtc_event_log_output_file", "../api:rtc_stats_api",
diff --git a/webrtc.gni b/webrtc.gni index 9e13283..e27a84a 100644 --- a/webrtc.gni +++ b/webrtc.gni
@@ -368,6 +368,9 @@ # Software video codecs (VP8 and VP9 through libvpx). "software_video_codecs", + + # Default task queue implementation. + "default_task_queue", ] absl_include_config = "//third_party/abseil-cpp:absl_include_config"