summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/moz-patch-stack/0053.patch
blob: 38f35ba6e0f5376db0e0caa2d4cded669fb729e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
From: Landry Breuil <landry@openbsd.org>
Date: Wed, 22 Dec 2021 00:09:00 +0000
Subject: Bug 1654448 - P2 - readd partial support for BSD to webrtc
 build;r=mjf

only OpenBSD/amd64 is supported for now

Depends on D134432

Differential Revision: https://phabricator.services.mozilla.com/D134433
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/0300b32b7de70fb8976dc82d7d3bb3adb9685857
---
 BUILD.gn                                       | 3 +++
 modules/video_capture/BUILD.gn                 | 2 +-
 modules/video_capture/linux/device_info_v4l2.h | 2 ++
 rtc_base/platform_thread_types.cc              | 4 +++-
 webrtc.gni                                     | 2 +-
 5 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/BUILD.gn b/BUILD.gn
index e514b4d6a7..9fd472f10b 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -221,6 +221,9 @@ config("common_inherited_config") {
   if (is_linux || is_chromeos) {
     defines += [ "WEBRTC_LINUX" ]
   }
+  if (is_bsd) {
+    defines += [ "WEBRTC_BSD" ]
+  }
   if (is_mac) {
     defines += [ "WEBRTC_MAC" ]
   }
diff --git a/modules/video_capture/BUILD.gn b/modules/video_capture/BUILD.gn
index d473dbb74c..8f89918359 100644
--- a/modules/video_capture/BUILD.gn
+++ b/modules/video_capture/BUILD.gn
@@ -71,7 +71,7 @@ if (!build_with_chromium || is_linux || is_chromeos) {
       "video_capture_options.h",
     ]
 
-    if (is_linux || is_chromeos) {
+    if (is_linux || is_bsd || is_chromeos) {
       sources += [
         "linux/device_info_linux.cc",
         "linux/device_info_v4l2.cc",
diff --git a/modules/video_capture/linux/device_info_v4l2.h b/modules/video_capture/linux/device_info_v4l2.h
index e3c2395f49..119cb07ab8 100644
--- a/modules/video_capture/linux/device_info_v4l2.h
+++ b/modules/video_capture/linux/device_info_v4l2.h
@@ -16,7 +16,9 @@
 #include "modules/video_capture/device_info_impl.h"
 
 #include "rtc_base/platform_thread.h"
+#ifdef WEBRTC_LINUX
 #include <sys/inotify.h>
+#endif
 
 struct v4l2_capability;
 
diff --git a/rtc_base/platform_thread_types.cc b/rtc_base/platform_thread_types.cc
index d64ea689bb..c3c6955a7b 100644
--- a/rtc_base/platform_thread_types.cc
+++ b/rtc_base/platform_thread_types.cc
@@ -50,7 +50,9 @@ PlatformThreadId CurrentThreadId() {
   return static_cast<PlatformThreadId>(pthread_self());
 #else
   // Default implementation for nacl and solaris.
-  return reinterpret_cast<PlatformThreadId>(pthread_self());
+  // WEBRTC_BSD: pthread_t is a pointer, so cannot be casted to pid_t
+  //             (aka int32_t) on 64-bit archs. Required on OpenBSD.
+  return reinterpret_cast<long>(pthread_self());
 #endif
 #endif  // defined(WEBRTC_POSIX)
 }
diff --git a/webrtc.gni b/webrtc.gni
index 44eaa2db04..bacd158140 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -360,7 +360,7 @@ rtc_opus_dir = "//third_party/opus"
 
 # Desktop capturer is supported only on Windows, OSX and Linux.
 rtc_desktop_capture_supported =
-    (is_win && current_os != "winuwp") || is_mac ||
+    (is_win && current_os != "winuwp") || is_mac || is_bsd ||
     ((is_linux || is_chromeos) && (rtc_use_x11_extensions || rtc_use_pipewire))
 
 ###############################################################################