forked from pool/MozillaFirefox
Accepting request 823315 from mozilla:Factory
- Mozilla Firefox 79.0 MFSA 2020-30 (bsc#1174538) * CVE-2020-15652 (bmo#1634872) Potential leak of redirect targets when loading scripts in a worker * CVE-2020-6514 (bmo#1642792) WebRTC data channel leaks internal address to peer * CVE-2020-15655 (bmo#1645204) Extension APIs could be used to bypass Same-Origin Policy * CVE-2020-15653 (bmo#1521542) Bypassing iframe sandbox when allowing popups * CVE-2020-6463 (bmo#1635293) Use-after-free in ANGLE gl::Texture::onUnbindAsSamplerTexture * CVE-2020-15656 (bmo#1647293) Type confusion for special arguments in IonMonkey * CVE-2020-15658 (bmo#1637745) Overriding file type when saving to disk * CVE-2020-15657 (bmo#1644954) DLL hijacking due to incorrect loading path * CVE-2020-15654 (bmo#1648333) Custom cursor can overlay user interface * CVE-2020-15659 (bmo#1550133, bmo#1633880, bmo#1638856, bmo#1643613, bmo#1644839, bmo#1645835, bmo#1646006, bmo#1646220, bmo#1646787, bmo#1649347, bmo#1650811, bmo#1651678) Memory safety bugs fixed in Firefox 79 - updated dependency requirements: * mozilla-nspr >= 4.26 * mozilla-nss >= 3.54 * rust >= 1.43 * rust-cbindgen >= 0.14.3 - removed obsolete patch OBS-URL: https://build.opensuse.org/request/show/823315 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/MozillaFirefox?expand=0&rev=317
This commit is contained in:
commit
6e9ebf409b
@ -1,3 +1,43 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 23 21:00:34 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
|
- Mozilla Firefox 79.0
|
||||||
|
MFSA 2020-30 (bsc#1174538)
|
||||||
|
* CVE-2020-15652 (bmo#1634872)
|
||||||
|
Potential leak of redirect targets when loading scripts in a worker
|
||||||
|
* CVE-2020-6514 (bmo#1642792)
|
||||||
|
WebRTC data channel leaks internal address to peer
|
||||||
|
* CVE-2020-15655 (bmo#1645204)
|
||||||
|
Extension APIs could be used to bypass Same-Origin Policy
|
||||||
|
* CVE-2020-15653 (bmo#1521542)
|
||||||
|
Bypassing iframe sandbox when allowing popups
|
||||||
|
* CVE-2020-6463 (bmo#1635293)
|
||||||
|
Use-after-free in ANGLE gl::Texture::onUnbindAsSamplerTexture
|
||||||
|
* CVE-2020-15656 (bmo#1647293)
|
||||||
|
Type confusion for special arguments in IonMonkey
|
||||||
|
* CVE-2020-15658 (bmo#1637745)
|
||||||
|
Overriding file type when saving to disk
|
||||||
|
* CVE-2020-15657 (bmo#1644954)
|
||||||
|
DLL hijacking due to incorrect loading path
|
||||||
|
* CVE-2020-15654 (bmo#1648333)
|
||||||
|
Custom cursor can overlay user interface
|
||||||
|
* CVE-2020-15659 (bmo#1550133, bmo#1633880, bmo#1638856,
|
||||||
|
bmo#1643613, bmo#1644839, bmo#1645835, bmo#1646006, bmo#1646220,
|
||||||
|
bmo#1646787, bmo#1649347, bmo#1650811, bmo#1651678)
|
||||||
|
Memory safety bugs fixed in Firefox 79
|
||||||
|
- updated dependency requirements:
|
||||||
|
* mozilla-nspr >= 4.26
|
||||||
|
* mozilla-nss >= 3.54
|
||||||
|
* rust >= 1.43
|
||||||
|
* rust-cbindgen >= 0.14.3
|
||||||
|
- removed obsolete patch
|
||||||
|
mozilla-bmo1463035.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 21 21:31:20 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
|
- fixed syntax issue in desktop file (boo#1174360)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jul 17 15:07:45 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
|
Fri Jul 17 15:07:45 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ Actions=new-window;PrivateBrowsing;ProfileManager
|
|||||||
|
|
||||||
[Desktop Action new-window]
|
[Desktop Action new-window]
|
||||||
Name=New Window
|
Name=New Window
|
||||||
Exec==%EXEC --new-windows %u
|
Exec=%EXEC --new-window %u
|
||||||
|
|
||||||
[Desktop Action PrivateBrowsing]
|
[Desktop Action PrivateBrowsing]
|
||||||
Name=New Private Browsing Window
|
Name=New Private Browsing Window
|
||||||
|
@ -25,9 +25,9 @@
|
|||||||
# orig_suffix b3
|
# orig_suffix b3
|
||||||
# major 69
|
# major 69
|
||||||
# mainver %major.99
|
# mainver %major.99
|
||||||
%define major 78
|
%define major 79
|
||||||
%define mainver %major.0.2
|
%define mainver %major.0
|
||||||
%define orig_version 78.0.2
|
%define orig_version 79.0
|
||||||
%define orig_suffix %{nil}
|
%define orig_suffix %{nil}
|
||||||
%define update_channel release
|
%define update_channel release
|
||||||
%define branding 1
|
%define branding 1
|
||||||
@ -88,15 +88,15 @@ BuildRequires: gcc9-c++
|
|||||||
%else
|
%else
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: cargo >= 1.41
|
BuildRequires: cargo >= 1.43
|
||||||
BuildRequires: libXcomposite-devel
|
BuildRequires: libXcomposite-devel
|
||||||
BuildRequires: libcurl-devel
|
BuildRequires: libcurl-devel
|
||||||
BuildRequires: libidl-devel
|
BuildRequires: libidl-devel
|
||||||
BuildRequires: libiw-devel
|
BuildRequires: libiw-devel
|
||||||
BuildRequires: libproxy-devel
|
BuildRequires: libproxy-devel
|
||||||
BuildRequires: makeinfo
|
BuildRequires: makeinfo
|
||||||
BuildRequires: mozilla-nspr-devel >= 4.25
|
BuildRequires: mozilla-nspr-devel >= 4.26
|
||||||
BuildRequires: mozilla-nss-devel >= 3.53.1
|
BuildRequires: mozilla-nss-devel >= 3.54
|
||||||
BuildRequires: nasm >= 2.14
|
BuildRequires: nasm >= 2.14
|
||||||
BuildRequires: nodejs10 >= 10.21.0
|
BuildRequires: nodejs10 >= 10.21.0
|
||||||
BuildRequires: python-devel
|
BuildRequires: python-devel
|
||||||
@ -107,8 +107,8 @@ BuildRequires: python36
|
|||||||
BuildRequires: python2-xml
|
BuildRequires: python2-xml
|
||||||
BuildRequires: python3 >= 3.5
|
BuildRequires: python3 >= 3.5
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: rust >= 1.41
|
BuildRequires: rust >= 1.43
|
||||||
BuildRequires: rust-cbindgen >= 0.14.1
|
BuildRequires: rust-cbindgen >= 0.14.3
|
||||||
BuildRequires: unzip
|
BuildRequires: unzip
|
||||||
BuildRequires: update-desktop-files
|
BuildRequires: update-desktop-files
|
||||||
BuildRequires: xorg-x11-libXt-devel
|
BuildRequires: xorg-x11-libXt-devel
|
||||||
@ -186,7 +186,6 @@ Patch1: mozilla-nongnome-proxies.patch
|
|||||||
Patch2: mozilla-kde.patch
|
Patch2: mozilla-kde.patch
|
||||||
Patch3: mozilla-ntlm-full-path.patch
|
Patch3: mozilla-ntlm-full-path.patch
|
||||||
Patch4: mozilla-aarch64-startup-crash.patch
|
Patch4: mozilla-aarch64-startup-crash.patch
|
||||||
Patch5: mozilla-bmo1463035.patch
|
|
||||||
Patch6: mozilla-sandbox-fips.patch
|
Patch6: mozilla-sandbox-fips.patch
|
||||||
Patch7: mozilla-fix-aarch64-libopus.patch
|
Patch7: mozilla-fix-aarch64-libopus.patch
|
||||||
Patch8: mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch
|
Patch8: mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch
|
||||||
@ -326,7 +325,6 @@ cd $RPM_BUILD_DIR/%{srcname}-%{orig_version}
|
|||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
%patch6 -p1
|
||||||
%patch7 -p1
|
%patch7 -p1
|
||||||
%patch8 -p1
|
%patch8 -p1
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:1aa00ec6d40a771d525b867b175be28eda096becc745875bcceb133a985750fc
|
|
||||||
size 334406116
|
|
@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl8GQvUACgkQ8aZmj7t9
|
|
||||||
Vy7cCxAAhfHL3/7MG61pjS8Ns7CcPdSwQ0E81YtYNa6XIPCAgnl50bKANXfdsG1d
|
|
||||||
cQbGI2oTDRWQqH4Iq47lc5rJYQkSy68U8GKiCaPl+0d3/GeBoyrqM1mQd3xy/FTG
|
|
||||||
4JxJU2frX7ATB4mBbTw/zzfguETtKWa6Lciq4dqh1ujbg+dKRaoY0IOsf+XCMRLo
|
|
||||||
BG+m3wnn4s+h8il36DRq60c1Ne2awEJ5lrH6PyDm0nvLCqdiUgy0ZxaXUdVdeWCs
|
|
||||||
6K339udRXmlzI1HHvyN/lBkA272yOfzpTYYJl7XeW75IMep90t/mAlJ+9ksKrnBU
|
|
||||||
AByOA7JpjUuXNtGel3Fszkfwk2SujyXb4m3moDw3l4XfBqXZIB7iBUt4mTAHbpQx
|
|
||||||
zrNAWxVc0MXkyccvqfhUzOnCGYgrT6KNrn6VkTSfEv/c2fAX9IYIw+l/mQoJdMYx
|
|
||||||
OEYF5Jvbb4GMhrwHGTyjk6wUuhB7RTPfLOkyT0iRSh6PTEmKLVw/m4wYExrnPjL4
|
|
||||||
3Rzf0OrSWxvpYSHyT7rWRuhy/Z6X11PMIWw2R+abmkx4cCWe7Df0sHBUlhrEPiRC
|
|
||||||
R+v8wfXVM0Xcip4EI/nriXvm/atar9L5c9N0whdW+FpgeF/KxSt5FZUk7R4I7BIG
|
|
||||||
ga8qdXpdNF7X2ie8bOtYylsm6r7eJSvDy/r6jkYJ2zhpPvDYXsQ=
|
|
||||||
=dKzY
|
|
||||||
-----END PGP SIGNATURE-----
|
|
3
firefox-79.0.source.tar.xz
Normal file
3
firefox-79.0.source.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:12a922855914ec6b4d4f06a4ac58bc549aca6bdafd3722d68a3d709a935e5713
|
||||||
|
size 333220776
|
16
firefox-79.0.source.tar.xz.asc
Normal file
16
firefox-79.0.source.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl8WILAACgkQ8aZmj7t9
|
||||||
|
Vy6pRg/+J6hr1Ky1odA+zPM1IWpPo4jl57vhic9+GjmW+/PFL37IbgzQd+YityrL
|
||||||
|
uY6f/y3iHnqJ/wMAJekiq7MclpWXrno2g15Rjmkd3euwcaph0cTHscWojJWddvCl
|
||||||
|
OmClCvklpfgvpkLqaX1yDTrGS4+d61a60+h8pS4trAeX0atFLGPYIyY6cGHae1m1
|
||||||
|
Xubmgak0lZEKcER0efQyTSXJJ2KFwJ35QkVNE6L76zahBSNK/Nr3sfrABxBNVZnI
|
||||||
|
R/Jhp5dnayeQfyCEDRlMYss8Cxh3YyG2/seKmFi8TVlJhuO0L2ay9TammmFpQp0c
|
||||||
|
iv5MC/FzxBZ9EK4Y0dBNHlLO457NIHpjtXoTu6nP4S7murt+CAPzjI704r9e4GDX
|
||||||
|
l+m3/2hWIwPc5EvTyUsFCdBJEkzeSL97woebcQkPMUNMRvjxxGtTjdsJHAoy/LNr
|
||||||
|
m/2vIev62hBlWKlk3g5CeM4yw4uNJ7AXPe87ZCtAKjppLjTRtRnuQhMeLHt4W2tv
|
||||||
|
J9EHttFsjTij+tx3iGshJKoIF1+MTQlrKrto9BhYPd4IT2lWoxnHFktHx37awhtZ
|
||||||
|
ghLVVbAcXMeonqFf//Rta7eEz1bJYZN1Dcl6xROq9GGTX+QEAYobesI81RjMs8TY
|
||||||
|
lNahX8/4D1kaz5Knp2CYX0iBYfPxic5tFwZ2xqd8pwsbDzPrSNg=
|
||||||
|
=SxfO
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -60,7 +60,7 @@ Open new instance, not a new window in running instance.
|
|||||||
\fB\-\-UILocale\fR \fIlocale\fR
|
\fB\-\-UILocale\fR \fIlocale\fR
|
||||||
Start with \fIlocale\fR resources as UI Locale.
|
Start with \fIlocale\fR resources as UI Locale.
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-save\-mode\fR
|
\fB\-\-safe\-mode\fR
|
||||||
Disables extensions and themes for this session.
|
Disables extensions and themes for this session.
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-headless\fR
|
\fB\-\-headless\fR
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:2323c7ecf0b413f31b4c15164f7998e44a75637a5a40cdbfb7be8bc80622d33d
|
|
||||||
size 52194856
|
|
3
l10n-79.0.tar.xz
Normal file
3
l10n-79.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:cc9f77a4742b9e2e293f869ed5fd726f27a5b14975d7a77ec25e600fc9a98c9a
|
||||||
|
size 52406032
|
@ -1,76 +0,0 @@
|
|||||||
|
|
||||||
# HG changeset patch
|
|
||||||
# User Mike Hommey <mh+mozilla@glandium.org>
|
|
||||||
# Date 1526871862 -32400
|
|
||||||
# Node ID 94f21505ff13cd089f7129cd24927cf8b31a0f43
|
|
||||||
# Parent 0b7e1398ca2e15e27da93144ba9fb30db38367b1
|
|
||||||
Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r?darchons
|
|
||||||
|
|
||||||
For some reason, GNU as is not happy with the assembly generated after
|
|
||||||
bug 1238661 anymore on Debian armel.
|
|
||||||
|
|
||||||
OTOH, as mentioned in bug 1238661 comment 4, we actually don't need this
|
|
||||||
workaround anymore, so let's just kill it.
|
|
||||||
|
|
||||||
diff --git a/mozglue/baseprofiler/core/platform-linux-android.cpp b/mozglue/baseprofiler/core/platform-linux-android.cpp
|
|
||||||
--- a/mozglue/baseprofiler/core/platform-linux-android.cpp
|
|
||||||
+++ b/mozglue/baseprofiler/core/platform-linux-android.cpp
|
|
||||||
@@ -55,17 +55,16 @@
|
|
||||||
#ifdef __GLIBC__
|
|
||||||
# include <execinfo.h> // backtrace, backtrace_symbols
|
|
||||||
#endif // def __GLIBC__
|
|
||||||
#include <strings.h> // index
|
|
||||||
#include <errno.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
#include "prenv.h"
|
|
||||||
-#include "mozilla/LinuxSignal.h"
|
|
||||||
#include "mozilla/PodOperations.h"
|
|
||||||
#include "mozilla/DebugOnly.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include <list>
|
|
||||||
|
|
||||||
using namespace mozilla;
|
|
||||||
|
|
||||||
@@ -266,17 +265,17 @@ Sampler::Sampler(PSLockRef aLock)
|
|
||||||
|
|
||||||
// NOTE: We don't initialize LUL here, instead initializing it in
|
|
||||||
// SamplerThread's constructor. This is because with the
|
|
||||||
// profiler_suspend_and_sample_thread entry point, we want to be able to
|
|
||||||
// sample without waiting for LUL to be initialized.
|
|
||||||
|
|
||||||
// Request profiling signals.
|
|
||||||
struct sigaction sa;
|
|
||||||
- sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler);
|
|
||||||
+ sa.sa_sigaction = SigprofHandler;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sa.sa_flags = SA_RESTART | SA_SIGINFO;
|
|
||||||
if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) {
|
|
||||||
MOZ_CRASH("Error installing SIGPROF handler in the profiler");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sampler::Disable(PSLockRef aLock) {
|
|
||||||
diff --git a/tools/profiler/core/platform-linux-android.cpp b/tools/profiler/core/platform-linux-android.cpp
|
|
||||||
--- a/tools/profiler/core/platform-linux-android.cpp
|
|
||||||
+++ b/tools/profiler/core/platform-linux-android.cpp
|
|
||||||
@@ -258,17 +258,17 @@ Sampler::Sampler(PSLockRef aLock)
|
|
||||||
|
|
||||||
// NOTE: We don't initialize LUL here, instead initializing it in
|
|
||||||
// SamplerThread's constructor. This is because with the
|
|
||||||
// profiler_suspend_and_sample_thread entry point, we want to be able to
|
|
||||||
// sample without waiting for LUL to be initialized.
|
|
||||||
|
|
||||||
// Request profiling signals.
|
|
||||||
struct sigaction sa;
|
|
||||||
- sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler);
|
|
||||||
+ sa.sa_sigaction = SigprofHandler;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sa.sa_flags = SA_RESTART | SA_SIGINFO;
|
|
||||||
if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) {
|
|
||||||
MOZ_CRASH("Error installing SIGPROF handler in the profiler");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sampler::Disable(PSLockRef aLock) {
|
|
@ -3,7 +3,7 @@
|
|||||||
# Date 1559294891 -7200
|
# Date 1559294891 -7200
|
||||||
# Fri May 31 11:28:11 2019 +0200
|
# Fri May 31 11:28:11 2019 +0200
|
||||||
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
|
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
|
||||||
# Parent aa58e8c70d1448a08407c6c191ea8b76d61e8bf6
|
# Parent 43647626f7204e312a4e38cac0414a461b06667f
|
||||||
Description: Add KDE integration to Firefox (toolkit parts)
|
Description: Add KDE integration to Firefox (toolkit parts)
|
||||||
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
|
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
|
||||||
Author: Lubos Lunak <lunak@suse.com>
|
Author: Lubos Lunak <lunak@suse.com>
|
||||||
@ -31,7 +31,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
|||||||
#ifdef MOZ_MEMORY
|
#ifdef MOZ_MEMORY
|
||||||
# include "mozmemory.h"
|
# include "mozmemory.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -4566,25 +4567,37 @@ nsresult Preferences::InitInitialObjects
|
@@ -4570,25 +4571,37 @@ nsresult Preferences::InitInitialObjects
|
||||||
// application pref files for backwards compatibility.
|
// application pref files for backwards compatibility.
|
||||||
static const char* specialFiles[] = {
|
static const char* specialFiles[] = {
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_MACOSX)
|
||||||
@ -69,7 +69,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
|||||||
|
|
||||||
// Load jar:$app/omni.jar!/defaults/preferences/*.js
|
// Load jar:$app/omni.jar!/defaults/preferences/*.js
|
||||||
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
|
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
|
||||||
@@ -4630,17 +4643,17 @@ nsresult Preferences::InitInitialObjects
|
@@ -4634,17 +4647,17 @@ nsresult Preferences::InitInitialObjects
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
|
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
|
||||||
@ -91,7 +91,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
|||||||
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
|
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
|
||||||
--- a/modules/libpref/moz.build
|
--- a/modules/libpref/moz.build
|
||||||
+++ b/modules/libpref/moz.build
|
+++ b/modules/libpref/moz.build
|
||||||
@@ -114,16 +114,20 @@ EXPORTS.mozilla += [
|
@@ -117,16 +117,20 @@ EXPORTS.mozilla += [
|
||||||
]
|
]
|
||||||
EXPORTS.mozilla += sorted(['!' + g for g in gen_h])
|
EXPORTS.mozilla += sorted(['!' + g for g in gen_h])
|
||||||
|
|
||||||
@ -106,12 +106,12 @@ diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
|
|||||||
+
|
+
|
||||||
gen_all_tuple = tuple(gen_h + gen_cpp + gen_rs)
|
gen_all_tuple = tuple(gen_h + gen_cpp + gen_rs)
|
||||||
|
|
||||||
GENERATED_FILES += [gen_all_tuple]
|
GeneratedFile(*gen_all_tuple, script='init/generate_static_pref_list.py',
|
||||||
|
entry_point='emit_code', inputs=['init/StaticPrefList.yaml'])
|
||||||
static_pref_list = GENERATED_FILES[gen_all_tuple]
|
|
||||||
static_pref_list.script = 'init/generate_static_pref_list.py:emit_code'
|
|
||||||
static_pref_list.inputs = ['init/StaticPrefList.yaml']
|
|
||||||
|
|
||||||
|
PYTHON_UNITTEST_MANIFESTS += [
|
||||||
|
'test/python.ini',
|
||||||
|
]
|
||||||
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
|
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
|
||||||
--- a/python/mozbuild/mozpack/chrome/flags.py
|
--- a/python/mozbuild/mozpack/chrome/flags.py
|
||||||
+++ b/python/mozbuild/mozpack/chrome/flags.py
|
+++ b/python/mozbuild/mozpack/chrome/flags.py
|
||||||
@ -356,7 +356,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
|||||||
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
|
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
|
||||||
--- a/toolkit/xre/moz.build
|
--- a/toolkit/xre/moz.build
|
||||||
+++ b/toolkit/xre/moz.build
|
+++ b/toolkit/xre/moz.build
|
||||||
@@ -88,17 +88,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
|
@@ -90,17 +90,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
|
||||||
'../components/printingui',
|
'../components/printingui',
|
||||||
]
|
]
|
||||||
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
|
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
|
||||||
@ -1293,7 +1293,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
|
|||||||
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
|
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
|
||||||
--- a/widget/gtk/moz.build
|
--- a/widget/gtk/moz.build
|
||||||
+++ b/widget/gtk/moz.build
|
+++ b/widget/gtk/moz.build
|
||||||
@@ -131,16 +131,17 @@ include('/ipc/chromium/chromium-config.m
|
@@ -133,16 +133,17 @@ include('/ipc/chromium/chromium-config.m
|
||||||
|
|
||||||
FINAL_LIBRARY = 'xul'
|
FINAL_LIBRARY = 'xul'
|
||||||
|
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent f530b1587cd1c0a79c34f91a9690c4cc4c33ac31
|
||||||
|
|
||||||
diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild
|
diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild
|
||||||
index 2081d0c683a4..641133bf1ea4 100644
|
|
||||||
--- a/config/system-headers.mozbuild
|
--- a/config/system-headers.mozbuild
|
||||||
+++ b/config/system-headers.mozbuild
|
+++ b/config/system-headers.mozbuild
|
||||||
@@ -314,6 +314,7 @@ system_headers = [
|
@@ -309,16 +309,17 @@ system_headers = [
|
||||||
|
'gdk/gdkkeysyms.h',
|
||||||
|
'gdk/gdkprivate.h',
|
||||||
|
'gdk/gdkwayland.h',
|
||||||
|
'gdk/gdkx.h',
|
||||||
|
'gdk-pixbuf/gdk-pixbuf.h',
|
||||||
'Gestalt.h',
|
'Gestalt.h',
|
||||||
'getopt.h',
|
'getopt.h',
|
||||||
'gio/gio.h',
|
'gio/gio.h',
|
||||||
@ -10,7 +17,17 @@ index 2081d0c683a4..641133bf1ea4 100644
|
|||||||
'glibconfig.h',
|
'glibconfig.h',
|
||||||
'glib.h',
|
'glib.h',
|
||||||
'glib-object.h',
|
'glib-object.h',
|
||||||
@@ -607,6 +608,7 @@ system_headers = [
|
'glob.h',
|
||||||
|
'gmodule.h',
|
||||||
|
'gnome.h',
|
||||||
|
'gnu/libc-version.h',
|
||||||
|
'gps.h',
|
||||||
|
@@ -602,16 +603,17 @@ system_headers = [
|
||||||
|
'pango/pangoxft.h',
|
||||||
|
'pascal.h',
|
||||||
|
'Patches.h',
|
||||||
|
'Path.h',
|
||||||
|
'pcfs/pc_dir.h',
|
||||||
'Pgenerr.h',
|
'Pgenerr.h',
|
||||||
'PGenErr.h',
|
'PGenErr.h',
|
||||||
'Ph.h',
|
'Ph.h',
|
||||||
@ -18,11 +35,20 @@ index 2081d0c683a4..641133bf1ea4 100644
|
|||||||
'pixman.h',
|
'pixman.h',
|
||||||
'pk11func.h',
|
'pk11func.h',
|
||||||
'pk11pqg.h',
|
'pk11pqg.h',
|
||||||
|
'pk11priv.h',
|
||||||
|
'pk11pub.h',
|
||||||
|
'pk11sdr.h',
|
||||||
|
'pkcs11f.h',
|
||||||
|
'pkcs11.h',
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
||||||
index ba885217b3ba..201d3b755221 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
||||||
@@ -158,7 +158,7 @@ if (rtc_include_tests) {
|
@@ -153,17 +153,17 @@ if (rtc_include_tests) {
|
||||||
|
"../../test:test_support",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (is_linux) {
|
if (is_linux) {
|
||||||
if (rtc_use_pipewire) {
|
if (rtc_use_pipewire) {
|
||||||
pkg_config("pipewire") {
|
pkg_config("pipewire") {
|
||||||
@ -31,12 +57,21 @@ index ba885217b3ba..201d3b755221 100644
|
|||||||
|
|
||||||
defines = [ "WEBRTC_USE_PIPEWIRE" ]
|
defines = [ "WEBRTC_USE_PIPEWIRE" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pkg_config("gio") {
|
||||||
|
packages = [
|
||||||
|
"gio-2.0",
|
||||||
|
"gio-unix-2.0",
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||||
index 90b40431c7e4..d844aa79d591 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||||
@@ -194,6 +194,30 @@ if CONFIG["OS_TARGET"] == "Linux":
|
@@ -289,16 +289,40 @@ if CONFIG["OS_TARGET"] == "WINNT":
|
||||||
"/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc"
|
"/media/webrtc/trunk/webrtc/modules/desktop_capture/win/screen_capturer_win_directx.cc",
|
||||||
|
"/media/webrtc/trunk/webrtc/modules/desktop_capture/win/screen_capturer_win_magnifier.cc",
|
||||||
|
"/media/webrtc/trunk/webrtc/modules/desktop_capture/win/win_shared.cc",
|
||||||
|
"/media/webrtc/trunk/webrtc/modules/desktop_capture/win/window_capture_utils.cc",
|
||||||
|
"/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_win.cc",
|
||||||
|
"/media/webrtc/trunk/webrtc/modules/desktop_capture/window_finder_win.cc"
|
||||||
]
|
]
|
||||||
|
|
||||||
+# PipeWire specific files
|
+# PipeWire specific files
|
||||||
@ -66,11 +101,20 @@ index 90b40431c7e4..d844aa79d591 100644
|
|||||||
if CONFIG["OS_TARGET"] == "NetBSD":
|
if CONFIG["OS_TARGET"] == "NetBSD":
|
||||||
|
|
||||||
DEFINES["USE_X11"] = "1"
|
DEFINES["USE_X11"] = "1"
|
||||||
|
DEFINES["WEBRTC_BSD"] = True
|
||||||
|
DEFINES["WEBRTC_POSIX"] = True
|
||||||
|
DEFINES["_FILE_OFFSET_BITS"] = "64"
|
||||||
|
|
||||||
|
OS_LIBS += [
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h
|
||||||
index 1eb8ead26efa..316468eed1fc 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h
|
||||||
@@ -141,7 +141,7 @@ class DesktopCaptureOptions {
|
@@ -136,15 +136,15 @@ class DesktopCaptureOptions {
|
||||||
|
#if defined(USE_X11)
|
||||||
|
bool use_update_notifications_ = false;
|
||||||
|
#else
|
||||||
|
bool use_update_notifications_ = true;
|
||||||
|
#endif
|
||||||
bool disable_effects_ = true;
|
bool disable_effects_ = true;
|
||||||
bool detect_updated_region_ = false;
|
bool detect_updated_region_ = false;
|
||||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||||
@ -79,11 +123,18 @@ index 1eb8ead26efa..316468eed1fc 100644
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace webrtc
|
||||||
|
|
||||||
|
#endif // MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_OPTIONS_H_
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||||
index 379341c833de..76349f1fbd4d 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||||
@@ -15,8 +15,11 @@
|
@@ -10,18 +10,21 @@
|
||||||
|
|
||||||
|
#include "modules/desktop_capture/linux/base_capturer_pipewire.h"
|
||||||
|
|
||||||
|
#include <gio/gunixfdlist.h>
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
#include <spa/param/format-utils.h>
|
#include <spa/param/format-utils.h>
|
||||||
#include <spa/param/props.h>
|
#include <spa/param/props.h>
|
||||||
@ -97,34 +148,36 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
@@ -36,31 +39,36 @@ const char kSessionInterfaceName[] = "org.freedesktop.portal.Session";
|
|
||||||
|
#include "modules/desktop_capture/desktop_capture_options.h"
|
||||||
|
#include "modules/desktop_capture/desktop_capturer.h"
|
||||||
|
#include "rtc_base/checks.h"
|
||||||
|
#include "rtc_base/logging.h"
|
||||||
|
@@ -31,181 +34,158 @@ namespace webrtc {
|
||||||
|
const char kDesktopBusName[] = "org.freedesktop.portal.Desktop";
|
||||||
|
const char kDesktopObjectPath[] = "/org/freedesktop/portal/desktop";
|
||||||
|
const char kDesktopRequestObjectPath[] =
|
||||||
|
"/org/freedesktop/portal/desktop/request";
|
||||||
|
const char kSessionInterfaceName[] = "org.freedesktop.portal.Session";
|
||||||
const char kRequestInterfaceName[] = "org.freedesktop.portal.Request";
|
const char kRequestInterfaceName[] = "org.freedesktop.portal.Request";
|
||||||
const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast";
|
const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast";
|
||||||
|
|
||||||
-// static
|
+
|
||||||
|
// static
|
||||||
-void BaseCapturerPipeWire::OnStateChanged(void* data,
|
-void BaseCapturerPipeWire::OnStateChanged(void* data,
|
||||||
- pw_remote_state old_state,
|
- pw_remote_state old_state,
|
||||||
- pw_remote_state state,
|
- pw_remote_state state,
|
||||||
- const char* error_message) {
|
- const char* error_message) {
|
||||||
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||||
- RTC_DCHECK(that);
|
- RTC_DCHECK(that);
|
||||||
|
|
||||||
- switch (state) {
|
|
||||||
- case PW_REMOTE_STATE_ERROR:
|
|
||||||
- RTC_LOG(LS_ERROR) << "PipeWire remote state error: " << error_message;
|
|
||||||
- break;
|
|
||||||
- case PW_REMOTE_STATE_CONNECTED:
|
|
||||||
- RTC_LOG(LS_INFO) << "PipeWire remote state: connected.";
|
|
||||||
- that->CreateReceivingStream();
|
|
||||||
- break;
|
|
||||||
- case PW_REMOTE_STATE_CONNECTING:
|
|
||||||
- RTC_LOG(LS_INFO) << "PipeWire remote state: connecting.";
|
|
||||||
+// static
|
|
||||||
+void BaseCapturerPipeWire::SyncDmaBuf(int fd, uint64_t start_or_end) {
|
+void BaseCapturerPipeWire::SyncDmaBuf(int fd, uint64_t start_or_end) {
|
||||||
+ struct dma_buf_sync sync = { 0 };
|
+ struct dma_buf_sync sync = { 0 };
|
||||||
+
|
+
|
||||||
+ sync.flags = start_or_end | DMA_BUF_SYNC_READ;
|
+ sync.flags = start_or_end | DMA_BUF_SYNC_READ;
|
||||||
+
|
|
||||||
|
- switch (state) {
|
||||||
|
- case PW_REMOTE_STATE_ERROR:
|
||||||
|
- RTC_LOG(LS_ERROR) << "PipeWire remote state error: " << error_message;
|
||||||
+ while(true) {
|
+ while(true) {
|
||||||
+ int ret;
|
+ int ret;
|
||||||
+ ret = ioctl (fd, DMA_BUF_IOCTL_SYNC, &sync);
|
+ ret = ioctl (fd, DMA_BUF_IOCTL_SYNC, &sync);
|
||||||
@ -133,15 +186,22 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
+ } else if (ret == -1) {
|
+ } else if (ret == -1) {
|
||||||
+ RTC_LOG(LS_ERROR) << "Failed to synchronize DMA buffer: " << g_strerror(errno);
|
+ RTC_LOG(LS_ERROR) << "Failed to synchronize DMA buffer: " << g_strerror(errno);
|
||||||
break;
|
break;
|
||||||
- case PW_REMOTE_STATE_UNCONNECTED:
|
- case PW_REMOTE_STATE_CONNECTED:
|
||||||
- RTC_LOG(LS_INFO) << "PipeWire remote state: unconnected.";
|
- RTC_LOG(LS_INFO) << "PipeWire remote state: connected.";
|
||||||
|
- that->CreateReceivingStream();
|
||||||
+ } else {
|
+ } else {
|
||||||
break;
|
break;
|
||||||
|
- case PW_REMOTE_STATE_CONNECTING:
|
||||||
|
- RTC_LOG(LS_INFO) << "PipeWire remote state: connecting.";
|
||||||
|
- break;
|
||||||
|
- case PW_REMOTE_STATE_UNCONNECTED:
|
||||||
|
- RTC_LOG(LS_INFO) << "PipeWire remote state: unconnected.";
|
||||||
|
- break;
|
||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+// static
|
// static
|
||||||
+void BaseCapturerPipeWire::OnCoreError(void *data,
|
+void BaseCapturerPipeWire::OnCoreError(void *data,
|
||||||
+ uint32_t id,
|
+ uint32_t id,
|
||||||
+ int seq,
|
+ int seq,
|
||||||
@ -150,23 +210,28 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
+ RTC_LOG(LS_ERROR) << "core error: " << message;
|
+ RTC_LOG(LS_ERROR) << "core error: " << message;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
// static
|
+// static
|
||||||
void BaseCapturerPipeWire::OnStreamStateChanged(void* data,
|
void BaseCapturerPipeWire::OnStreamStateChanged(void* data,
|
||||||
pw_stream_state old_state,
|
pw_stream_state old_state,
|
||||||
@@ -73,76 +81,54 @@ void BaseCapturerPipeWire::OnStreamStateChanged(void* data,
|
pw_stream_state state,
|
||||||
|
const char* error_message) {
|
||||||
|
BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||||
|
RTC_DCHECK(that);
|
||||||
|
|
||||||
|
switch (state) {
|
||||||
case PW_STREAM_STATE_ERROR:
|
case PW_STREAM_STATE_ERROR:
|
||||||
RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message;
|
RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message;
|
||||||
break;
|
break;
|
||||||
- case PW_STREAM_STATE_CONFIGURE:
|
- case PW_STREAM_STATE_CONFIGURE:
|
||||||
- pw_stream_set_active(that->pw_stream_, true);
|
- pw_stream_set_active(that->pw_stream_, true);
|
||||||
- break;
|
- break;
|
||||||
- case PW_STREAM_STATE_UNCONNECTED:
|
+ case PW_STREAM_STATE_PAUSED:
|
||||||
- case PW_STREAM_STATE_CONNECTING:
|
+ case PW_STREAM_STATE_STREAMING:
|
||||||
|
case PW_STREAM_STATE_UNCONNECTED:
|
||||||
|
case PW_STREAM_STATE_CONNECTING:
|
||||||
- case PW_STREAM_STATE_READY:
|
- case PW_STREAM_STATE_READY:
|
||||||
case PW_STREAM_STATE_PAUSED:
|
- case PW_STREAM_STATE_PAUSED:
|
||||||
case PW_STREAM_STATE_STREAMING:
|
- case PW_STREAM_STATE_STREAMING:
|
||||||
+ case PW_STREAM_STATE_UNCONNECTED:
|
|
||||||
+ case PW_STREAM_STATE_CONNECTING:
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -256,20 +321,20 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
@@ -150,15 +136,25 @@ void BaseCapturerPipeWire::OnStreamProcess(void* data) {
|
void BaseCapturerPipeWire::OnStreamProcess(void* data) {
|
||||||
BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||||
RTC_DCHECK(that);
|
RTC_DCHECK(that);
|
||||||
|
|
||||||
- pw_buffer* buf = nullptr;
|
- pw_buffer* buf = nullptr;
|
||||||
+ struct pw_buffer *next_buffer;
|
+ struct pw_buffer *next_buffer;
|
||||||
+ struct pw_buffer *buffer = nullptr;
|
+ struct pw_buffer *buffer = nullptr;
|
||||||
+
|
|
||||||
|
- if (!(buf = pw_stream_dequeue_buffer(that->pw_stream_))) {
|
||||||
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
||||||
+ while (next_buffer) {
|
+ while (next_buffer) {
|
||||||
+ buffer = next_buffer;
|
+ buffer = next_buffer;
|
||||||
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
||||||
|
+
|
||||||
- if (!(buf = pw_stream_dequeue_buffer(that->pw_stream_))) {
|
|
||||||
+ if (next_buffer)
|
+ if (next_buffer)
|
||||||
+ pw_stream_queue_buffer (that->pw_stream_, buffer);
|
+ pw_stream_queue_buffer (that->pw_stream_, buffer);
|
||||||
+ }
|
+ }
|
||||||
@ -286,7 +351,10 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
BaseCapturerPipeWire::BaseCapturerPipeWire(CaptureSourceType source_type)
|
BaseCapturerPipeWire::BaseCapturerPipeWire(CaptureSourceType source_type)
|
||||||
@@ -169,38 +165,22 @@ BaseCapturerPipeWire::~BaseCapturerPipeWire() {
|
: capture_source_type_(source_type) {}
|
||||||
|
|
||||||
|
BaseCapturerPipeWire::~BaseCapturerPipeWire() {
|
||||||
|
if (pw_main_loop_) {
|
||||||
pw_thread_loop_stop(pw_main_loop_);
|
pw_thread_loop_stop(pw_main_loop_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,16 +397,22 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
if (start_request_signal_id_) {
|
if (start_request_signal_id_) {
|
||||||
g_dbus_connection_signal_unsubscribe(connection_, start_request_signal_id_);
|
g_dbus_connection_signal_unsubscribe(connection_, start_request_signal_id_);
|
||||||
}
|
}
|
||||||
@@ -250,27 +230,35 @@ void BaseCapturerPipeWire::InitPortal() {
|
if (sources_request_signal_id_) {
|
||||||
|
g_dbus_connection_signal_unsubscribe(connection_,
|
||||||
|
sources_request_signal_id_);
|
||||||
|
}
|
||||||
|
if (session_request_signal_id_) {
|
||||||
|
@@ -245,142 +225,220 @@ void BaseCapturerPipeWire::InitPortal()
|
||||||
|
kDesktopBusName, kDesktopObjectPath, kScreenCastInterfaceName,
|
||||||
|
/*cancellable=*/nullptr,
|
||||||
|
reinterpret_cast<GAsyncReadyCallback>(OnProxyRequested), this);
|
||||||
|
}
|
||||||
|
|
||||||
void BaseCapturerPipeWire::InitPipeWire() {
|
void BaseCapturerPipeWire::InitPipeWire() {
|
||||||
pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
|
pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
|
||||||
|
|
||||||
- pw_loop_ = pw_loop_new(/*properties=*/nullptr);
|
- pw_loop_ = pw_loop_new(/*properties=*/nullptr);
|
||||||
- pw_main_loop_ = pw_thread_loop_new(pw_loop_, "pipewire-main-loop");
|
- pw_main_loop_ = pw_thread_loop_new(pw_loop_, "pipewire-main-loop");
|
||||||
-
|
|
||||||
- pw_core_ = pw_core_new(pw_loop_, /*properties=*/nullptr);
|
|
||||||
- pw_core_type_ = pw_core_get_type(pw_core_);
|
|
||||||
- pw_remote_ = pw_remote_new(pw_core_, nullptr, /*user_data_size=*/0);
|
|
||||||
+ pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr);
|
+ pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr);
|
||||||
+ pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0);
|
+ pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0);
|
||||||
+ if (!pw_context_) {
|
+ if (!pw_context_) {
|
||||||
@ -346,6 +420,10 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
|
- pw_core_ = pw_core_new(pw_loop_, /*properties=*/nullptr);
|
||||||
|
- pw_core_type_ = pw_core_get_type(pw_core_);
|
||||||
|
- pw_remote_ = pw_remote_new(pw_core_, nullptr, /*user_data_size=*/0);
|
||||||
|
-
|
||||||
- InitPipeWireTypes();
|
- InitPipeWireTypes();
|
||||||
+ pw_core_ = pw_context_connect(pw_context_, nullptr, 0);
|
+ pw_core_ = pw_context_connect(pw_context_, nullptr, 0);
|
||||||
+ if (!pw_core_) {
|
+ if (!pw_core_) {
|
||||||
@ -378,7 +456,7 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
|
|
||||||
if (pw_thread_loop_start(pw_main_loop_) < 0) {
|
if (pw_thread_loop_start(pw_main_loop_) < 0) {
|
||||||
RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop";
|
RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop";
|
||||||
@@ -278,81 +266,132 @@ void BaseCapturerPipeWire::InitPipeWire() {
|
portal_init_failed_ = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,19 +469,20 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
- spa_type_format_video_map(map, &pw_type_->format_video);
|
- spa_type_format_video_map(map, &pw_type_->format_video);
|
||||||
- spa_type_video_format_map(map, &pw_type_->video_format);
|
- spa_type_video_format_map(map, &pw_type_->video_format);
|
||||||
-}
|
-}
|
||||||
-
|
|
||||||
-void BaseCapturerPipeWire::CreateReceivingStream() {
|
|
||||||
+pw_stream* BaseCapturerPipeWire::CreateReceivingStream() {
|
+pw_stream* BaseCapturerPipeWire::CreateReceivingStream() {
|
||||||
spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1};
|
+ spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1};
|
||||||
|
+ spa_rectangle pwMaxScreenBounds = spa_rectangle{INT32_MAX, INT32_MAX};
|
||||||
|
|
||||||
|
-void BaseCapturerPipeWire::CreateReceivingStream() {
|
||||||
|
- spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1};
|
||||||
- spa_rectangle pwScreenBounds =
|
- spa_rectangle pwScreenBounds =
|
||||||
- spa_rectangle{static_cast<uint32_t>(desktop_size_.width()),
|
- spa_rectangle{static_cast<uint32_t>(desktop_size_.width()),
|
||||||
- static_cast<uint32_t>(desktop_size_.height())};
|
- static_cast<uint32_t>(desktop_size_.height())};
|
||||||
+ spa_rectangle pwMaxScreenBounds = spa_rectangle{INT32_MAX, INT32_MAX};
|
+ auto stream = pw_stream_new(pw_core_, "webrtc-pipewire-stream", nullptr);
|
||||||
|
|
||||||
- spa_fraction pwFrameRateMin = spa_fraction{0, 1};
|
- spa_fraction pwFrameRateMin = spa_fraction{0, 1};
|
||||||
- spa_fraction pwFrameRateMax = spa_fraction{60, 1};
|
- spa_fraction pwFrameRateMax = spa_fraction{60, 1};
|
||||||
+ auto stream = pw_stream_new(pw_core_, "webrtc-pipewire-stream", nullptr);
|
-
|
||||||
|
|
||||||
- pw_properties* reuseProps = pw_properties_new("pipewire.client.reuse", "1",
|
- pw_properties* reuseProps = pw_properties_new("pipewire.client.reuse", "1",
|
||||||
- /*end of varargs*/ nullptr);
|
- /*end of varargs*/ nullptr);
|
||||||
- pw_stream_ = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps);
|
- pw_stream_ = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps);
|
||||||
@ -439,12 +518,11 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
- // min and max values and it is undecided (u) to allow negotiation
|
- // min and max values and it is undecided (u) to allow negotiation
|
||||||
- ":", pw_type_->format_video.max_framerate, "Fru", &pwFrameRateMax, 2,
|
- ":", pw_type_->format_video.max_framerate, "Fru", &pwFrameRateMax, 2,
|
||||||
- &pwFrameRateMin, &pwFrameRateMax));
|
- &pwFrameRateMin, &pwFrameRateMax));
|
||||||
-
|
|
||||||
- pw_stream_add_listener(pw_stream_, &spa_stream_listener_, &pw_stream_events_,
|
|
||||||
- this);
|
|
||||||
+ const spa_pod* params[2];
|
+ const spa_pod* params[2];
|
||||||
+ spa_pod_builder builder = SPA_POD_BUILDER_INIT(buffer, sizeof (buffer));
|
+ spa_pod_builder builder = SPA_POD_BUILDER_INIT(buffer, sizeof (buffer));
|
||||||
+
|
|
||||||
|
- pw_stream_add_listener(pw_stream_, &spa_stream_listener_, &pw_stream_events_,
|
||||||
|
- this);
|
||||||
+ params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
+ params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||||
+ SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
+ SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
+ SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),
|
+ SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),
|
||||||
@ -494,13 +572,13 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno);
|
+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno);
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
|
- if (!(src = spaBuffer->datas[0].data)) {
|
||||||
+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
||||||
+ } else if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
|
+ } else if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
|
||||||
+ int fd;
|
+ int fd;
|
||||||
+ fd = spaBuffer->datas[0].fd;
|
+ fd = spaBuffer->datas[0].fd;
|
||||||
|
+
|
||||||
- if (!(src = spaBuffer->datas[0].data)) {
|
|
||||||
+ map = static_cast<uint8_t*>(mmap(
|
+ map = static_cast<uint8_t*>(mmap(
|
||||||
+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||||
+ PROT_READ, MAP_PRIVATE, fd, 0));
|
+ PROT_READ, MAP_PRIVATE, fd, 0));
|
||||||
@ -569,14 +647,27 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
if (srcStride != (desktop_size_.width() * kBytesPerPixel)) {
|
if (srcStride != (desktop_size_.width() * kBytesPerPixel)) {
|
||||||
RTC_LOG(LS_ERROR) << "Got buffer with stride different from screen stride: "
|
RTC_LOG(LS_ERROR) << "Got buffer with stride different from screen stride: "
|
||||||
<< srcStride
|
<< srcStride
|
||||||
@@ -361,21 +400,40 @@ void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
|
<< " != " << (desktop_size_.width() * kBytesPerPixel);
|
||||||
|
portal_init_failed_ = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (!current_frame_) {
|
- if (!current_frame_) {
|
||||||
- current_frame_ = static_cast<uint8_t*>(malloc(maxSize));
|
- current_frame_ = static_cast<uint8_t*>(malloc(maxSize));
|
||||||
|
- }
|
||||||
|
- RTC_DCHECK(current_frame_ != nullptr);
|
||||||
+ dst = current_frame_.get();
|
+ dst = current_frame_.get();
|
||||||
+
|
|
||||||
|
- // If both sides decided to go with the RGBx format we need to convert it to
|
||||||
|
- // BGRx to match color format expected by WebRTC.
|
||||||
|
- if (spa_video_format_->format == pw_type_->video_format.RGBx) {
|
||||||
|
- uint8_t* tempFrame = static_cast<uint8_t*>(malloc(maxSize));
|
||||||
|
- std::memcpy(tempFrame, src, maxSize);
|
||||||
|
- ConvertRGBxToBGRx(tempFrame, maxSize);
|
||||||
|
- std::memcpy(current_frame_, tempFrame, maxSize);
|
||||||
|
- free(tempFrame);
|
||||||
|
- } else {
|
||||||
|
- std::memcpy(current_frame_, src, maxSize);
|
||||||
+ // Adjust source content based on crop video position
|
+ // Adjust source content based on crop video position
|
||||||
+ if (video_crop_size_initialized_ &&
|
+ if (video_crop_size_initialized_ &&
|
||||||
+ (video_crop->region.position.y + video_crop_size_.height() <= desktop_size_.height())) {
|
+ (video_crop->region.position.y + video_crop_size_.height() <= desktop_size_.height())) {
|
||||||
@ -602,19 +693,8 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
+ }
|
+ }
|
||||||
+ src += srcStride - xOffset;
|
+ src += srcStride - xOffset;
|
||||||
+ dst += dstStride;
|
+ dst += dstStride;
|
||||||
}
|
+ }
|
||||||
- RTC_DCHECK(current_frame_ != nullptr);
|
+
|
||||||
|
|
||||||
- // If both sides decided to go with the RGBx format we need to convert it to
|
|
||||||
- // BGRx to match color format expected by WebRTC.
|
|
||||||
- if (spa_video_format_->format == pw_type_->video_format.RGBx) {
|
|
||||||
- uint8_t* tempFrame = static_cast<uint8_t*>(malloc(maxSize));
|
|
||||||
- std::memcpy(tempFrame, src, maxSize);
|
|
||||||
- ConvertRGBxToBGRx(tempFrame, maxSize);
|
|
||||||
- std::memcpy(current_frame_, tempFrame, maxSize);
|
|
||||||
- free(tempFrame);
|
|
||||||
- } else {
|
|
||||||
- std::memcpy(current_frame_, src, maxSize);
|
|
||||||
+ if (map) {
|
+ if (map) {
|
||||||
+ if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
|
+ if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
|
||||||
+ SyncDmaBuf(spaBuffer->datas[0].fd, DMA_BUF_SYNC_END);
|
+ SyncDmaBuf(spaBuffer->datas[0].fd, DMA_BUF_SYNC_END);
|
||||||
@ -623,7 +703,17 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -725,10 +783,7 @@ void BaseCapturerPipeWire::OnStartRequestResponseSignal(
|
void BaseCapturerPipeWire::ConvertRGBxToBGRx(uint8_t* frame, uint32_t size) {
|
||||||
|
// Change color format for KDE KWin which uses RGBx and not BGRx
|
||||||
|
for (uint32_t i = 0; i < size; i += 4) {
|
||||||
|
uint8_t tempR = frame[i];
|
||||||
|
uint8_t tempB = frame[i + 2];
|
||||||
|
@@ -720,20 +778,17 @@ void BaseCapturerPipeWire::OnStartReques
|
||||||
|
guint32 stream_id;
|
||||||
|
gint32 width;
|
||||||
|
gint32 height;
|
||||||
|
GVariant* options;
|
||||||
|
|
||||||
g_variant_get(variant, "(u@a{sv})", &stream_id, &options);
|
g_variant_get(variant, "(u@a{sv})", &stream_id, &options);
|
||||||
RTC_DCHECK(options != nullptr);
|
RTC_DCHECK(options != nullptr);
|
||||||
|
|
||||||
@ -635,7 +725,17 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
g_variant_unref(options);
|
g_variant_unref(options);
|
||||||
g_variant_unref(variant);
|
g_variant_unref(variant);
|
||||||
}
|
}
|
||||||
@@ -813,10 +868,15 @@ void BaseCapturerPipeWire::CaptureFrame() {
|
}
|
||||||
|
g_variant_iter_free(iter);
|
||||||
|
g_variant_unref(response_data);
|
||||||
|
|
||||||
|
that->OpenPipeWireRemote();
|
||||||
|
@@ -808,20 +863,25 @@ void BaseCapturerPipeWire::CaptureFrame(
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!current_frame_) {
|
||||||
|
callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -654,7 +754,17 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
if (!result) {
|
if (!result) {
|
||||||
callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
|
callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
|
||||||
return;
|
return;
|
||||||
@@ -837,4 +897,22 @@ bool BaseCapturerPipeWire::SelectSource(SourceId id) {
|
}
|
||||||
|
callback_->OnCaptureResult(Result::SUCCESS, std::move(result));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BaseCapturerPipeWire::GetSourceList(SourceList* sources) {
|
||||||
|
@@ -832,9 +892,27 @@ bool BaseCapturerPipeWire::GetSourceList
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BaseCapturerPipeWire::SelectSource(SourceId id) {
|
||||||
|
// Screen selection is handled by the xdg-desktop-portal.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -678,10 +788,14 @@ index 379341c833de..76349f1fbd4d 100644
|
|||||||
+
|
+
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
||||||
index 56b101acbaa6..de54157d1a2a 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
||||||
@@ -22,17 +22,13 @@
|
@@ -17,99 +17,103 @@
|
||||||
|
#include <spa/param/video/format-utils.h>
|
||||||
|
|
||||||
|
#include "modules/desktop_capture/desktop_capture_options.h"
|
||||||
|
#include "modules/desktop_capture/desktop_capturer.h"
|
||||||
|
#include "rtc_base/constructormagic.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
@ -704,7 +818,10 @@ index 56b101acbaa6..de54157d1a2a 100644
|
|||||||
|
|
||||||
explicit BaseCapturerPipeWire(CaptureSourceType source_type);
|
explicit BaseCapturerPipeWire(CaptureSourceType source_type);
|
||||||
~BaseCapturerPipeWire() override;
|
~BaseCapturerPipeWire() override;
|
||||||
@@ -43,28 +39,32 @@ class BaseCapturerPipeWire : public DesktopCapturer {
|
|
||||||
|
// DesktopCapturer interface.
|
||||||
|
void Start(Callback* delegate) override;
|
||||||
|
void CaptureFrame() override;
|
||||||
bool GetSourceList(SourceList* sources) override;
|
bool GetSourceList(SourceList* sources) override;
|
||||||
bool SelectSource(SourceId id) override;
|
bool SelectSource(SourceId id) override;
|
||||||
|
|
||||||
@ -745,7 +862,13 @@ index 56b101acbaa6..de54157d1a2a 100644
|
|||||||
|
|
||||||
// <-- end of PipeWire types
|
// <-- end of PipeWire types
|
||||||
|
|
||||||
@@ -78,33 +78,37 @@ class BaseCapturerPipeWire : public DesktopCapturer {
|
GDBusConnection* connection_ = nullptr;
|
||||||
|
GDBusProxy* proxy_ = nullptr;
|
||||||
|
gchar* portal_handle_ = nullptr;
|
||||||
|
gchar* session_handle_ = nullptr;
|
||||||
|
gchar* sources_handle_ = nullptr;
|
||||||
|
gchar* start_handle_ = nullptr;
|
||||||
|
guint session_request_signal_id_ = 0;
|
||||||
guint sources_request_signal_id_ = 0;
|
guint sources_request_signal_id_ = 0;
|
||||||
guint start_request_signal_id_ = 0;
|
guint start_request_signal_id_ = 0;
|
||||||
|
|
||||||
@ -792,11 +915,20 @@ index 56b101acbaa6..de54157d1a2a 100644
|
|||||||
static void OnStreamProcess(void* data);
|
static void OnStreamProcess(void* data);
|
||||||
static void OnNewBuffer(void* data, uint32_t id);
|
static void OnNewBuffer(void* data, uint32_t id);
|
||||||
|
|
||||||
|
guint SetupRequestResponseSignal(const gchar* object_path,
|
||||||
|
GDBusSignalCallback callback);
|
||||||
|
|
||||||
|
static void OnProxyRequested(GObject* object,
|
||||||
|
GAsyncResult* result,
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
||||||
index 26956fc67dc8..3813d697bb38 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
||||||
@@ -15,7 +15,7 @@
|
@@ -10,17 +10,17 @@
|
||||||
|
|
||||||
|
#include "modules/desktop_capture/linux/screen_capturer_pipewire.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
ScreenCapturerPipeWire::ScreenCapturerPipeWire()
|
ScreenCapturerPipeWire::ScreenCapturerPipeWire()
|
||||||
@ -805,11 +937,20 @@ index 26956fc67dc8..3813d697bb38 100644
|
|||||||
ScreenCapturerPipeWire::~ScreenCapturerPipeWire() {}
|
ScreenCapturerPipeWire::~ScreenCapturerPipeWire() {}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
std::unique_ptr<DesktopCapturer>
|
||||||
|
ScreenCapturerPipeWire::CreateRawScreenCapturer(
|
||||||
|
const DesktopCaptureOptions& options) {
|
||||||
|
return std::make_unique<ScreenCapturerPipeWire>();
|
||||||
|
}
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
||||||
index 35436475cb4d..c43a1f1a0c4e 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
||||||
@@ -15,7 +15,7 @@
|
@@ -10,17 +10,17 @@
|
||||||
|
|
||||||
|
#include "modules/desktop_capture/linux/window_capturer_pipewire.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
WindowCapturerPipeWire::WindowCapturerPipeWire()
|
WindowCapturerPipeWire::WindowCapturerPipeWire()
|
||||||
@ -818,11 +959,20 @@ index 35436475cb4d..c43a1f1a0c4e 100644
|
|||||||
WindowCapturerPipeWire::~WindowCapturerPipeWire() {}
|
WindowCapturerPipeWire::~WindowCapturerPipeWire() {}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
std::unique_ptr<DesktopCapturer>
|
||||||
|
WindowCapturerPipeWire::CreateRawWindowCapturer(
|
||||||
|
const DesktopCaptureOptions& options) {
|
||||||
|
return std::make_unique<WindowCapturerPipeWire>();
|
||||||
|
}
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
||||||
index cf8a9dd0e0db..d27fab8d28d9 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
||||||
@@ -26,7 +26,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
|
@@ -21,17 +21,17 @@
|
||||||
|
|
||||||
|
namespace webrtc {
|
||||||
|
|
||||||
|
// static
|
||||||
|
std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
|
||||||
const DesktopCaptureOptions& options) {
|
const DesktopCaptureOptions& options) {
|
||||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||||
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
||||||
@ -831,11 +981,20 @@ index cf8a9dd0e0db..d27fab8d28d9 100644
|
|||||||
}
|
}
|
||||||
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
||||||
|
|
||||||
|
#if defined(USE_X11)
|
||||||
|
return ScreenCapturerX11::CreateRawScreenCapturer(options);
|
||||||
|
#endif // defined(USE_X11)
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
||||||
index 82359e50c2db..bb9724cf7cc2 100644
|
|
||||||
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
||||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
||||||
@@ -26,7 +26,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
|
@@ -21,17 +21,17 @@
|
||||||
|
|
||||||
|
namespace webrtc {
|
||||||
|
|
||||||
|
// static
|
||||||
|
std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
|
||||||
const DesktopCaptureOptions& options) {
|
const DesktopCaptureOptions& options) {
|
||||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||||
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
||||||
@ -844,3 +1003,8 @@ index 82359e50c2db..bb9724cf7cc2 100644
|
|||||||
}
|
}
|
||||||
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
||||||
|
|
||||||
|
#if defined(USE_X11)
|
||||||
|
return WindowCapturerX11::CreateRawWindowCapturer(options);
|
||||||
|
#endif // defined(USE_X11)
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
PRODUCT="firefox"
|
PRODUCT="firefox"
|
||||||
CHANNEL="release"
|
CHANNEL="release"
|
||||||
VERSION="78.0.2"
|
VERSION="79.0"
|
||||||
VERSION_SUFFIX=""
|
VERSION_SUFFIX=""
|
||||||
PREV_VERSION="78.0.1"
|
PREV_VERSION="78.0.2"
|
||||||
PREV_VERSION_SUFFIX=""
|
PREV_VERSION_SUFFIX=""
|
||||||
#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
|
#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
|
||||||
|
|
||||||
RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-release"
|
RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-release"
|
||||||
RELEASE_TAG="e56adbbfe01c2443bae35e3d6f34867e36c3828e"
|
RELEASE_TAG="df3ed76cf46b23c9b658cd5be4cdd4162d86f736"
|
||||||
RELEASE_TIMESTAMP="20200708170202"
|
RELEASE_TIMESTAMP="20200720193547"
|
||||||
|
Loading…
Reference in New Issue
Block a user