freebsd-ports/www/firefox-esr/files/patch-bug1676134
Jan Beich 4dd7526ead www/firefox-esr: expose PipeWire support after c58401d4dd
Should work on wlroots-based compositors. For example,

  # pkg install firefox sway pam_xdg xdg-desktop-portal-wlr xdg-desktop-portal
  # sysrc seatd_enable=YES
  # service seatd start
  # echo 'session optional pam_xdg.so notroot runtime' >>/etc/pam.d/system
  $ exit # log out to pick up XDG_RUNTIME_DIR
  <new login>
  $ export XDG_CURRENT_DESKTOP=sway
  $ export MOZ_ENABLE_WAYLAND=1
  $ dbus-daemon --session --fork --address=unix:runtime=yes
  $ sway
  <GUI session>
  $ dbus-update-activation-environment --all
  $ daemon -f pipewire
  $ firefox https://mozilla.github.io/webrtc-landing/gum_test.html
  <click on "Screen Capture">
  <select "Use operating system settings">
  <click on "Allow" button>
  <select via cursor the desired screen (output display)>
  <notice the screen mirrored on the web page>
2021-11-21 02:39:12 +00:00

122 lines
6.3 KiB
Text

Enable Pipewire on BSDs
diff --git third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
index a0e116195e0e..cbe27e94108b 100644
--- third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
+++ third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
@@ -87,8 +87,13 @@ if CONFIG["OS_TARGET"] == "DragonFly":
DEFINES["USE_X11"] = "1"
DEFINES["WEBRTC_BSD"] = True
DEFINES["WEBRTC_POSIX"] = True
+ DEFINES["WEBRTC_USE_PIPEWIRE"] = True
DEFINES["_FILE_OFFSET_BITS"] = "64"
+ LOCAL_INCLUDES += [
+ "/third_party/pipewire/"
+ ]
+
OS_LIBS += [
"X11",
"X11-xcb",
@@ -103,11 +108,14 @@ if CONFIG["OS_TARGET"] == "DragonFly":
]
UNIFIED_SOURCES += [
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
@@ -124,8 +132,13 @@ if CONFIG["OS_TARGET"] == "FreeBSD":
DEFINES["USE_X11"] = "1"
DEFINES["WEBRTC_BSD"] = True
DEFINES["WEBRTC_POSIX"] = True
+ DEFINES["WEBRTC_USE_PIPEWIRE"] = True
DEFINES["_FILE_OFFSET_BITS"] = "64"
+ LOCAL_INCLUDES += [
+ "/third_party/pipewire/"
+ ]
+
OS_LIBS += [
"X11",
"X11-xcb",
@@ -140,11 +153,14 @@ if CONFIG["OS_TARGET"] == "FreeBSD":
]
UNIFIED_SOURCES += [
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
@@ -200,8 +216,13 @@ if CONFIG["OS_TARGET"] == "NetBSD":
DEFINES["USE_X11"] = "1"
DEFINES["WEBRTC_BSD"] = True
DEFINES["WEBRTC_POSIX"] = True
+ DEFINES["WEBRTC_USE_PIPEWIRE"] = True
DEFINES["_FILE_OFFSET_BITS"] = "64"
+ LOCAL_INCLUDES += [
+ "/third_party/pipewire/"
+ ]
+
OS_LIBS += [
"X11",
"X11-xcb",
@@ -216,11 +237,14 @@ if CONFIG["OS_TARGET"] == "NetBSD":
]
UNIFIED_SOURCES += [
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",
@@ -237,8 +261,13 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
DEFINES["USE_X11"] = "1"
DEFINES["WEBRTC_BSD"] = True
DEFINES["WEBRTC_POSIX"] = True
+ DEFINES["WEBRTC_USE_PIPEWIRE"] = True
DEFINES["_FILE_OFFSET_BITS"] = "64"
+ LOCAL_INCLUDES += [
+ "/third_party/pipewire/"
+ ]
+
OS_LIBS += [
"X11",
"X11-xcb",
@@ -253,11 +282,14 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
]
UNIFIED_SOURCES += [
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/desktop_device_info_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_display.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/shared_x_util.cc",
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_finder_x11.cc",
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_list_utils.cc",