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}
This commit is contained in:
Danil Chapovalov 2019-07-10 12:44:43 +02:00 committed by Commit Bot
parent 80cb3f6db6
commit 41300af876
6 changed files with 23 additions and 4 deletions

View File

@ -675,3 +675,6 @@ group("poison_audio_codecs") {
group("poison_software_video_codecs") {
}
group("poison_default_task_queue") {
}

View File

@ -38,6 +38,7 @@ rtc_source_set("callfactory_api") {
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",

View File

@ -49,6 +49,9 @@ rtc_source_set("task_queue_test") {
rtc_source_set("default_task_queue_factory") {
visibility = [ "*" ]
if (!is_ios && !is_android) {
poisonous = [ "default_task_queue" ]
}
sources = [
"default_task_queue_factory.h",
]

View File

@ -343,6 +343,7 @@ rtc_source_set("rtc_media_engine_defaults") {
visibility = [ "*" ]
allow_poison = [
"audio_codecs",
"default_task_queue",
"software_video_codecs",
]
sources = [

View File

@ -459,7 +459,10 @@ if (is_ios || is_mac) {
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 @@ if (is_ios || is_mac) {
# 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 @@ if (is_ios || is_mac) {
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 @@ if (is_ios || is_mac) {
":videorendereradapter_objc",
":videosource_objc",
":videotoolbox_objc",
"../api:create_peerconnection_factory",
"../api:libjingle_peerconnection_api",
"../api:rtc_event_log_output_file",
"../api:rtc_stats_api",

View File

@ -368,6 +368,9 @@ all_poison_types = [
# 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"