summaryrefslogtreecommitdiff
blob: c6abf9660468022769e42d1c93a43e9f4ad431e0 (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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Add -DTG_OWT_USE_X11

Allows disabling X11 desktop capturing independently of pipewire support, for
the few people that run wayland without any X11 support whatsoever.

This setup is untested, but supported by the GNI build system, see:
* src/modules/desktop_capture/BUILD.gn (option rtc_use_x11_extensions)

Toggling the WEBRTC_USE_X11 define also affects some files under
src/modules/audio_device, but that falls under "X11 support", regardless...

--- tg_owt-91d836dc84a16584c6ac52b36c04c0de504d9c34.orig/CMakeLists.txt
+++ tg_owt-91d836dc84a16584c6ac52b36c04c0de504d9c34/CMakeLists.txt
@@ -21,11 +21,13 @@
 
 option(BUILD_SHARED_LIBS "Builds shared libraries instead of static." ${TG_OWT_PACKAGED_BUILD})
 option(TG_OWT_USE_PROTOBUF "Use protobuf to generate additional headers. Useful for packaged build." ${BUILD_SHARED_LIBS})
+option(TG_OWT_USE_X11 "Use X11 for desktop capture on non-Apple Unix." ON)
 option(TG_OWT_USE_PIPEWIRE "Use pipewire for desktop capture on non-Apple Unix." ON)
 option(TG_OWT_DLOPEN_PIPEWIRE "dlopen pipewire 0.3 for desktop capture on non-Apple Unix." ${not_packaged_build})
 option(TG_OWT_BUILD_AUDIO_BACKENDS "Build webrtc audio backends." ON)
 
 if (NOT UNIX OR APPLE)
+    set(TG_OWT_USE_X11 OFF)
     set(TG_OWT_USE_PIPEWIRE OFF)
 endif()
 
@@ -87,6 +89,10 @@
 add_library(tg_owt)
 init_target(tg_owt)
 
+if (TG_OWT_USE_X11)
+    link_x11(tg_owt)
+endif()
+
 if (TG_OWT_USE_PIPEWIRE)
     link_glib(tg_owt)
     if (TG_OWT_DLOPEN_PIPEWIRE)
@@ -169,7 +175,6 @@
 target_link_libraries(tg_owt PUBLIC tg_owt::libwebrtcbuild)
 
 if (UNIX AND NOT APPLE)
-    link_x11(tg_owt)
 endif()
 
 function(add_sublibrary postfix)
@@ -2161,6 +2166,37 @@
     )
 endif()
 
+if (NOT TG_OWT_USE_X11)
+    remove_target_sources(tg_owt ${webrtc_loc}
+        modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc
+        modules/desktop_capture/linux/mouse_cursor_monitor_x11.h
+        modules/desktop_capture/linux/screen_capturer_x11.cc
+        modules/desktop_capture/linux/screen_capturer_x11.h
+        modules/desktop_capture/linux/shared_x_display.cc
+        modules/desktop_capture/linux/shared_x_display.h
+        modules/desktop_capture/linux/window_capturer_x11.cc
+        modules/desktop_capture/linux/window_capturer_x11.h
+        modules/desktop_capture/linux/window_finder_x11.cc
+        modules/desktop_capture/linux/window_finder_x11.h
+        modules/desktop_capture/linux/window_list_utils.cc
+        modules/desktop_capture/linux/window_list_utils.h
+        modules/desktop_capture/linux/x_atom_cache.cc
+        modules/desktop_capture/linux/x_atom_cache.h
+        modules/desktop_capture/linux/x_error_trap.cc
+        modules/desktop_capture/linux/x_error_trap.h
+        modules/desktop_capture/linux/x_server_pixel_buffer.cc
+        modules/desktop_capture/linux/x_server_pixel_buffer.h
+        modules/desktop_capture/linux/x_window_property.cc
+        modules/desktop_capture/linux/x_window_property.h
+
+        modules/desktop_capture/screen_drawer.cc
+        modules/desktop_capture/screen_drawer.h
+        modules/desktop_capture/screen_drawer_linux.cc
+        modules/desktop_capture/screen_drawer_lock_posix.cc
+        modules/desktop_capture/screen_drawer_lock_posix.h
+    )
+endif()
+
 if (NOT TG_OWT_USE_PIPEWIRE)
     remove_target_sources(tg_owt ${webrtc_loc}
         modules/desktop_capture/linux/base_capturer_pipewire.cc
--- tg_owt-91d836dc84a16584c6ac52b36c04c0de504d9c34.orig/cmake/libwebrtcbuild.cmake
+++ tg_owt-91d836dc84a16584c6ac52b36c04c0de504d9c34/cmake/libwebrtcbuild.cmake
@@ -27,6 +27,13 @@
     BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0
 )
 
+if (TG_OWT_USE_X11)
+    target_compile_definitions(libwebrtcbuild
+    INTERFACE
+        WEBRTC_USE_X11
+    )
+endif()
+
 if (TG_OWT_USE_PIPEWIRE)
     target_compile_definitions(libwebrtcbuild
     INTERFACE
@@ -63,7 +70,6 @@
     INTERFACE
         WEBRTC_POSIX
         WEBRTC_LINUX
-        WEBRTC_USE_X11
     )
 endif()