- Mozilla Thunderbird 91.0.1
- appdate screenshot URL updated (by mailaender@opensuse.org) - Mozilla Thunderbird 91.0 * based on Mozilla's 91 ESR codebase * many new and changed features https://www.thunderbird.net/en-US/thunderbird/91.0/releasenotes/#whatsnew * Renamed "Add-ons" to "Add-ons and Themes" and "Options" to "Preferences" * Thunderbird now operates in multi-process (e10s) mode by default * New user interface for adding attachments * Enable redirect of messages * CardDAV address book support - Removed obsolete patches: * mozilla-bmo1463035.patch * mozilla-ppc-altivec_static_inline.patch * mozilla-pipewire-0-3.patch * mozilla-bmo1554971.patch - add mozilla-libavcodec58_91.patch - removed obsolete BigEndian ICU build workaround - updated build requirements - build using clang OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaThunderbird?expand=0&rev=600
This commit is contained in:
parent
3e12a2f698
commit
6c01889e00
@ -1,7 +1,30 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 17 09:15:53 UTC 2021 - Matthias Mailänder <mailaender@opensuse.org>
|
||||
Tue Aug 17 07:19:15 UTC 2021 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||
|
||||
- Fix the appdata screenshot URL.
|
||||
- Mozilla Thunderbird 91.0.1
|
||||
- appdate screenshot URL updated (by mailaender@opensuse.org)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Aug 15 17:21:46 UTC 2021 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||
|
||||
- Mozilla Thunderbird 91.0
|
||||
* based on Mozilla's 91 ESR codebase
|
||||
* many new and changed features
|
||||
https://www.thunderbird.net/en-US/thunderbird/91.0/releasenotes/#whatsnew
|
||||
* Renamed "Add-ons" to "Add-ons and Themes" and "Options" to "Preferences"
|
||||
* Thunderbird now operates in multi-process (e10s) mode by default
|
||||
* New user interface for adding attachments
|
||||
* Enable redirect of messages
|
||||
* CardDAV address book support
|
||||
- Removed obsolete patches:
|
||||
* mozilla-bmo1463035.patch
|
||||
* mozilla-ppc-altivec_static_inline.patch
|
||||
* mozilla-pipewire-0-3.patch
|
||||
* mozilla-bmo1554971.patch
|
||||
- add mozilla-libavcodec58_91.patch
|
||||
- removed obsolete BigEndian ICU build workaround
|
||||
- updated build requirements
|
||||
- build using clang
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 5 15:47:34 UTC 2021 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||
|
@ -25,20 +25,18 @@
|
||||
# orig_suffix b3
|
||||
# major 69
|
||||
# mainver %major.99
|
||||
%define major 78
|
||||
%define mainver %major.13.0
|
||||
%define orig_version 78.13.0
|
||||
%define major 91
|
||||
%define mainver %major.0.1
|
||||
%define orig_version 91.0.1
|
||||
%define orig_suffix %{nil}
|
||||
%define update_channel release
|
||||
%define source_prefix thunderbird-%{orig_version}
|
||||
|
||||
%if 0%{?suse_version} > 1500
|
||||
# PGO builds do not work in TW currently (bmo#1642410)
|
||||
# PGO builds do not work in TW currently (bmo#1680306)
|
||||
%define do_profiling 0
|
||||
%endif
|
||||
|
||||
# upstream default is clang (to use gcc for large parts set to 0)
|
||||
%define clang_build 0
|
||||
%define clang_build 1
|
||||
|
||||
# PIE, full relro
|
||||
%define build_hardened 1
|
||||
@ -49,6 +47,16 @@
|
||||
%bcond_with mozilla_tb_valgrind
|
||||
%bcond_without mozilla_tb_optimize_for_size
|
||||
|
||||
# define if ccache should be used or not
|
||||
%define useccache 1
|
||||
|
||||
# Firefox only supports i686
|
||||
%ifarch %ix86
|
||||
ExclusiveArch: i586 i686
|
||||
BuildArch: i686
|
||||
%{expand:%%global optflags %(echo "%optflags"|sed -e s/i586/i686/) -march=i686 -mtune=generic}
|
||||
%endif
|
||||
|
||||
# general build definitions
|
||||
%define progname thunderbird
|
||||
%define pkgname MozillaThunderbird
|
||||
@ -82,31 +90,33 @@ BuildRequires: gcc9-c++
|
||||
%else
|
||||
BuildRequires: gcc-c++
|
||||
%endif
|
||||
BuildRequires: cargo >= 1.41
|
||||
%if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300
|
||||
BuildRequires: cargo >= 1.51
|
||||
BuildRequires: rust >= 1.51
|
||||
%else
|
||||
# Newer sle/leap/tw use parallel versioned rust releases which have
|
||||
# a different method for provides that we can use to request a
|
||||
# specific version
|
||||
BuildRequires: rust+cargo >= 1.51
|
||||
%endif
|
||||
%if 0%{useccache} != 0
|
||||
BuildRequires: ccache
|
||||
%endif
|
||||
BuildRequires: libXcomposite-devel
|
||||
BuildRequires: libcurl-devel
|
||||
BuildRequires: libidl-devel
|
||||
BuildRequires: mozilla-nspr-devel >= 4.25.1
|
||||
BuildRequires: mozilla-nss-devel >= 3.53.1
|
||||
BuildRequires: mozilla-nspr-devel >= 4.32
|
||||
BuildRequires: mozilla-nss-devel >= 3.68
|
||||
BuildRequires: nasm >= 2.14
|
||||
BuildRequires: nodejs >= 10.21.0
|
||||
# Leap 15 still requires python2 for BE (ICU creation)
|
||||
%if 0%{?suse_version} < 1550
|
||||
BuildRequires: python-devel
|
||||
BuildRequires: python2-xml
|
||||
%endif
|
||||
BuildRequires: nodejs >= 10.22.1
|
||||
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} < 150000
|
||||
# SLE12 exception
|
||||
BuildRequires: python-libxml2
|
||||
BuildRequires: python36
|
||||
%else
|
||||
# TW is python2 free
|
||||
BuildRequires: python3 >= 3.5
|
||||
BuildRequires: python3-devel
|
||||
%endif
|
||||
BuildRequires: rust >= 1.41
|
||||
BuildRequires: rust-cbindgen >= 0.14.1
|
||||
BuildRequires: rust-cbindgen >= 0.19.0
|
||||
BuildRequires: unzip
|
||||
BuildRequires: update-desktop-files
|
||||
BuildRequires: xorg-x11-libXt-devel
|
||||
@ -127,9 +137,7 @@ BuildRequires: clang-devel >= 5
|
||||
BuildRequires: pkgconfig(gdk-x11-2.0)
|
||||
BuildRequires: pkgconfig(glib-2.0) >= 2.22
|
||||
BuildRequires: pkgconfig(gobject-2.0)
|
||||
BuildRequires: pkgconfig(gtk+-2.0) >= 2.18.0
|
||||
BuildRequires: pkgconfig(gtk+-3.0) >= 3.14.0
|
||||
BuildRequires: pkgconfig(gtk+-unix-print-2.0)
|
||||
BuildRequires: pkgconfig(gtk+-unix-print-3.0)
|
||||
BuildRequires: pkgconfig(libffi)
|
||||
BuildRequires: pkgconfig(libpulse)
|
||||
@ -179,28 +187,25 @@ Patch1: mozilla-nongnome-proxies.patch
|
||||
Patch2: mozilla-kde.patch
|
||||
Patch3: mozilla-ntlm-full-path.patch
|
||||
Patch4: mozilla-aarch64-startup-crash.patch
|
||||
Patch5: mozilla-bmo1463035.patch
|
||||
Patch6: mozilla-sandbox-fips.patch
|
||||
Patch7: mozilla-fix-aarch64-libopus.patch
|
||||
Patch8: mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch
|
||||
Patch9: mozilla-s390-context.patch
|
||||
Patch11: mozilla-reduce-rust-debuginfo.patch
|
||||
Patch12: mozilla-ppc-altivec_static_inline.patch
|
||||
Patch13: mozilla-bmo1005535.patch
|
||||
Patch14: mozilla-bmo1568145.patch
|
||||
Patch15: mozilla-bmo1504834-part1.patch
|
||||
Patch16: mozilla-bmo1504834-part2.patch
|
||||
Patch17: mozilla-bmo1504834-part3.patch
|
||||
Patch18: mozilla-bmo1554971.patch
|
||||
Patch19: mozilla-bmo1512162.patch
|
||||
Patch20: mozilla-fix-top-level-asm.patch
|
||||
Patch21: mozilla-bmo1504834-part4.patch
|
||||
Patch22: mozilla-bmo849632.patch
|
||||
Patch23: mozilla-pipewire-0-3.patch
|
||||
Patch24: mozilla-bmo1602730.patch
|
||||
Patch25: mozilla-bmo998749.patch
|
||||
Patch26: mozilla-bmo1626236.patch
|
||||
Patch27: mozilla-s390x-skia-gradient.patch
|
||||
Patch28: mozilla-libavcodec58_91.patch
|
||||
%endif
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
PreReq: /bin/sh
|
||||
@ -281,30 +286,25 @@ fi
|
||||
%endif
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%patch22 -p1
|
||||
%if %{with_pipewire0_3}
|
||||
%patch23 -p1
|
||||
%endif
|
||||
%patch24 -p1
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
%patch27 -p1
|
||||
%patch28 -p1
|
||||
%endif
|
||||
|
||||
%build
|
||||
@ -343,6 +343,8 @@ export MOZ_BUILD_DATE=$RELEASE_TIMESTAMP
|
||||
export MOZILLA_OFFICIAL=1
|
||||
export BUILD_OFFICIAL=1
|
||||
export MOZ_TELEMETRY_REPORTING=1
|
||||
export MOZ_REQUIRE_SIGNING=
|
||||
export MACH_USE_SYSTEM_PYTHON=1
|
||||
%if 0%{?suse_version} <= 1320
|
||||
export CC=gcc-9
|
||||
%else
|
||||
@ -380,6 +382,7 @@ echo "export MOZCONFIG=\"$MOZCONFIG\""
|
||||
echo "export MOZILLA_OFFICIAL=1"
|
||||
echo "export BUILD_OFFICIAL=1"
|
||||
echo "export MOZ_TELEMETRY_REPORTING=1"
|
||||
echo "export MOZ_REQUIRE_SIGNING="
|
||||
echo ""
|
||||
cat << EOF
|
||||
%else
|
||||
@ -389,13 +392,14 @@ cat << EOF
|
||||
%limit_build -m 2000
|
||||
%endif
|
||||
# TODO: Check if this can be removed
|
||||
export MOZ_DEBUG_FLAGS="-pipe"
|
||||
#export MOZ_DEBUG_FLAGS="-pipe"
|
||||
cat << EOF > $MOZCONFIG
|
||||
%endif
|
||||
mk_add_options MOZILLA_OFFICIAL=1
|
||||
mk_add_options BUILD_OFFICIAL=1
|
||||
mk_add_options MOZ_MAKE_FLAGS=%{?jobs:-j%jobs}
|
||||
mk_add_options MOZ_OBJDIR=$RPM_BUILD_DIR/obj
|
||||
ac_add_options --disable-bootstrap
|
||||
ac_add_options --prefix=%{_prefix}
|
||||
ac_add_options --libdir=%{_libdir}
|
||||
ac_add_options --includedir=%{_includedir}
|
||||
@ -420,7 +424,9 @@ ac_add_options --disable-elf-hack
|
||||
#%endif
|
||||
ac_add_options --with-system-nspr
|
||||
ac_add_options --with-system-nss
|
||||
%if 0%{useccache} != 0
|
||||
ac_add_options --with-ccache
|
||||
%endif
|
||||
ac_add_options --with-system-zlib
|
||||
ac_add_options --disable-updater
|
||||
ac_add_options --disable-tests
|
||||
@ -449,7 +455,7 @@ ac_add_options --enable-optimize="-O1"
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
# LTO needs newer toolchain stack only (at least GCC 8.2.1 (r268506)
|
||||
%if 0%{?suse_version} > 1500
|
||||
%if 0%{?suse_version} > 1500 && 0%{?suse_version} < 1550
|
||||
ac_add_options --enable-lto
|
||||
%if 0%{?do_profiling}
|
||||
ac_add_options MOZ_PGO=1
|
||||
@ -462,17 +468,9 @@ ac_add_options --enable-valgrind
|
||||
%endif
|
||||
EOF
|
||||
%if !%{with only_print_mozconfig}
|
||||
%ifarch ppc64 s390x s390
|
||||
# NOTE: Currently, system-icu is too old, so we can't build with that,
|
||||
# but have to generate the .dat-file freshly. This seems to be a
|
||||
# less fragile approach anyways.
|
||||
# ac_add_options --with-system-icu
|
||||
echo "Generate big endian version of config/external/icu/data/icud58l.dat"
|
||||
./mach python intl/icu_sources_data.py .
|
||||
ls -l config/external/icu/data
|
||||
rm -f config/external/icu/data/icudt*l.dat
|
||||
%endif
|
||||
%if 0%{useccache} != 0
|
||||
ccache -s
|
||||
%endif
|
||||
%if 0%{?do_profiling}
|
||||
xvfb-run --server-args="-screen 0 1920x1080x24" \
|
||||
%endif
|
||||
@ -640,8 +638,6 @@ exit 0
|
||||
%{progdir}/application.ini
|
||||
%{progdir}/dependentlibs.list
|
||||
%{progdir}/fonts/
|
||||
%dir %{progdir}/gtk2
|
||||
%{progdir}/gtk2/libmozgtk.so
|
||||
%{progdir}/*.so
|
||||
%{progdir}/omni.ja
|
||||
%{progdir}/pingsender
|
||||
|
@ -2,7 +2,7 @@
|
||||
<constraints>
|
||||
<hardware>
|
||||
<disk>
|
||||
<size unit="G">24</size>
|
||||
<size unit="G">36</size>
|
||||
</disk>
|
||||
<memory>
|
||||
<size unit="G">9</size>
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7bedbcd970a24ebe34ef36398c901a69d028b6979793b925f613aacae5001d3f
|
||||
size 29083700
|
3
l10n-91.0.1.tar.xz
Normal file
3
l10n-91.0.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:688f8c867e7e216a61979343302c79ac750e896db44d48775a0709a4d81972e5
|
||||
size 30122772
|
@ -3,14 +3,19 @@
|
||||
# Date 1558442998 -7200
|
||||
# Tue May 21 14:49:58 2019 +0200
|
||||
# Node ID 386083b58d8558141901d796ec6919a4aba7ad3a
|
||||
# Parent 835641be7eb9408aa1eff0d38b37f6c523d2ef98
|
||||
# Parent a30a9b9aae5740f096a16118ed9e4bc45d3d1c35
|
||||
bsc#991344 - Rpi3: Firefox crashes after a few seconds of usage
|
||||
bmo#1302554 - ARM/AARCH64: Firefox crashes on NULL nsIChannel** result pointer in nsIOService::NewChannelFromURIWithProxyFlagsInternal()
|
||||
|
||||
diff -r 835641be7eb9 -r 386083b58d85 netwerk/base/nsIOService.cpp
|
||||
--- a/netwerk/base/nsIOService.cpp Fri Feb 26 16:20:09 2016 +0000
|
||||
+++ b/netwerk/base/nsIOService.cpp Tue May 21 14:49:58 2019 +0200
|
||||
@@ -1000,7 +1000,13 @@
|
||||
diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
|
||||
--- a/netwerk/base/nsIOService.cpp
|
||||
+++ b/netwerk/base/nsIOService.cpp
|
||||
@@ -1032,17 +1032,23 @@ nsresult nsIOService::NewChannelFromURIW
|
||||
"doesn't support nsIUploadChannel2. An extension has "
|
||||
"supplied a non-functional http protocol handler. This will "
|
||||
"break behavior and in future releases not work at all.");
|
||||
}
|
||||
gHasWarnedUploadChannel2 = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,3 +29,8 @@ diff -r 835641be7eb9 -r 386083b58d85 netwerk/base/nsIOService.cpp
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsIOService::NewChannelFromURIWithProxyFlags(
|
||||
nsIURI* aURI, nsIURI* aProxyURI, uint32_t aProxyFlags,
|
||||
nsINode* aLoadingNode, nsIPrincipal* aLoadingPrincipal,
|
||||
nsIPrincipal* aTriggeringPrincipal, uint32_t aSecurityFlags,
|
||||
|
@ -3,13 +3,18 @@
|
||||
# Date 1558451540 -7200
|
||||
# Tue May 21 17:12:20 2019 +0200
|
||||
# Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad
|
||||
# Parent 0b9b94a6526d4f1aa6e23b95c1f5f7c0bef841a7
|
||||
# Parent c0fdccc716e80a6d289c94f5d507ae141c62a3bf
|
||||
Bug 1005535 - Get skia GPU building on big endian.
|
||||
|
||||
diff -r 0b9b94a6526d gfx/skia/skia/src/gpu/GrColor.h
|
||||
--- a/gfx/skia/skia/src/gpu/GrColor.h Tue May 21 17:26:58 2019 +0200
|
||||
+++ b/gfx/skia/skia/src/gpu/GrColor.h Wed Jan 08 12:14:52 2020 +0100
|
||||
@@ -64,7 +64,7 @@
|
||||
diff --git a/gfx/skia/skia/src/gpu/GrColor.h b/gfx/skia/skia/src/gpu/GrColor.h
|
||||
--- a/gfx/skia/skia/src/gpu/GrColor.h
|
||||
+++ b/gfx/skia/skia/src/gpu/GrColor.h
|
||||
@@ -59,17 +59,17 @@ static inline GrColor GrColorPackRGBA(un
|
||||
#define GrColorUnpackG(color) (((color) >> GrColor_SHIFT_G) & 0xFF)
|
||||
#define GrColorUnpackB(color) (((color) >> GrColor_SHIFT_B) & 0xFF)
|
||||
#define GrColorUnpackA(color) (((color) >> GrColor_SHIFT_A) & 0xFF)
|
||||
|
||||
/**
|
||||
* Since premultiplied means that alpha >= color, we construct a color with
|
||||
* each component==255 and alpha == 0 to be "illegal"
|
||||
*/
|
||||
@ -18,3 +23,8 @@ diff -r 0b9b94a6526d gfx/skia/skia/src/gpu/GrColor.h
|
||||
|
||||
/** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */
|
||||
static inline float GrNormalizeByteToFloat(uint8_t value) {
|
||||
static const float ONE_OVER_255 = 1.f / 255.f;
|
||||
return value * ONE_OVER_255;
|
||||
}
|
||||
|
||||
/** Used to pick vertex attribute types. */
|
||||
|
@ -1,46 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Mike Hommey <mh+mozilla@glandium.org>
|
||||
# Date 1526871862 -32400
|
||||
# Mon May 21 12:04:22 2018 +0900
|
||||
# Node ID 74a0c200d7f748a3fe46bb22a38625b074da8e26
|
||||
# Parent 0bf4a038a7129aa6bfd7bb27e7455ab649344ac5
|
||||
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 -r 0bf4a038a712 -r 74a0c200d7f7 mozglue/baseprofiler/core/platform-linux-android.cpp
|
||||
--- a/mozglue/baseprofiler/core/platform-linux-android.cpp Tue May 21 14:49:58 2019 +0200
|
||||
+++ b/mozglue/baseprofiler/core/platform-linux-android.cpp Mon May 21 12:04:22 2018 +0900
|
||||
@@ -60,7 +60,6 @@
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "prenv.h"
|
||||
-#include "mozilla/LinuxSignal.h"
|
||||
#include "mozilla/PodOperations.h"
|
||||
#include "mozilla/DebugOnly.h"
|
||||
|
||||
@@ -271,7 +270,7 @@
|
||||
|
||||
// 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) {
|
||||
diff -r 0bf4a038a712 -r 74a0c200d7f7 tools/profiler/core/platform-linux-android.cpp
|
||||
--- a/tools/profiler/core/platform-linux-android.cpp Tue May 21 14:49:58 2019 +0200
|
||||
+++ b/tools/profiler/core/platform-linux-android.cpp Mon May 21 12:04:22 2018 +0900
|
||||
@@ -263,7 +263,7 @@
|
||||
|
||||
// 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) {
|
@ -1,11 +1,11 @@
|
||||
# HG changeset patch
|
||||
# Parent 9db312f823881c04c5c16a7623df08cf6aef371d
|
||||
# Parent b5471d23321d16a0bacc25b7afd27d2e16adba1a
|
||||
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834
|
||||
|
||||
diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
|
||||
--- a/gfx/2d/DrawTargetSkia.cpp
|
||||
+++ b/gfx/2d/DrawTargetSkia.cpp
|
||||
@@ -131,18 +131,17 @@ static IntRect CalculateSurfaceBounds(co
|
||||
@@ -130,18 +130,17 @@ static IntRect CalculateSurfaceBounds(co
|
||||
Rect sampledBounds = inverse.TransformBounds(*aBounds);
|
||||
if (!sampledBounds.ToIntRect(&bounds)) {
|
||||
return surfaceBounds;
|
||||
@ -28,7 +28,7 @@ diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
|
||||
diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h
|
||||
--- a/gfx/2d/Types.h
|
||||
+++ b/gfx/2d/Types.h
|
||||
@@ -82,25 +82,18 @@ enum class SurfaceFormat : int8_t {
|
||||
@@ -84,25 +84,18 @@ enum class SurfaceFormat : int8_t {
|
||||
Depth,
|
||||
|
||||
// This represents the unknown format.
|
||||
|
@ -1,14 +1,19 @@
|
||||
# HG changeset patch
|
||||
# Parent 0e579dcbf7328dda4512cbdafc9b42acec4935ea
|
||||
# Parent 9319844dca3133fa8bd7107079f1d1ddc5c0bf70
|
||||
Skia does not support big endian. The places to fix are too numerous and upstream (skia, not Mozilla)
|
||||
has no interest in maintaining big endian.
|
||||
So here we try to swizzle the input for skia, so that skia always works on LE, and when it comes
|
||||
out again, we transform back to BE.
|
||||
|
||||
diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp
|
||||
--- a/gfx/2d/ConvolutionFilter.cpp Wed Jan 08 12:17:44 2020 +0100
|
||||
+++ b/gfx/2d/ConvolutionFilter.cpp Wed Jan 08 12:17:49 2020 +0100
|
||||
@@ -35,9 +35,38 @@
|
||||
diff --git a/gfx/2d/ConvolutionFilter.cpp b/gfx/2d/ConvolutionFilter.cpp
|
||||
--- a/gfx/2d/ConvolutionFilter.cpp
|
||||
+++ b/gfx/2d/ConvolutionFilter.cpp
|
||||
@@ -29,32 +29,79 @@ bool ConvolutionFilter::GetFilterOffsetA
|
||||
int32_t* aResultLength) {
|
||||
if (aRowIndex >= mFilter->numValues()) {
|
||||
return false;
|
||||
}
|
||||
mFilter->FilterForValue(aRowIndex, aResultOffset, aResultLength);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -47,7 +52,11 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp
|
||||
}
|
||||
|
||||
void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst,
|
||||
@@ -49,8 +78,26 @@
|
||||
int32_t aRowIndex, int32_t aRowSize,
|
||||
bool aHasAlpha) {
|
||||
MOZ_ASSERT(aRowIndex < mFilter->numValues());
|
||||
|
||||
int32_t filterOffset;
|
||||
int32_t filterLength;
|
||||
auto filterValues =
|
||||
mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength);
|
||||
@ -74,10 +83,20 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp
|
||||
}
|
||||
|
||||
/* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
|
||||
diff -r 0e579dcbf732 gfx/skia/skia/include/core/SkPreConfig.h
|
||||
--- a/gfx/skia/skia/include/core/SkPreConfig.h Wed Jan 08 12:17:44 2020 +0100
|
||||
+++ b/gfx/skia/skia/include/core/SkPreConfig.h Wed Jan 08 12:17:49 2020 +0100
|
||||
@@ -73,7 +73,7 @@
|
||||
* SkBitmapScaler/SkResizeFilter::computeFactors. It is governed by Skia's
|
||||
* BSD-style license (see gfx/skia/LICENSE) and the following copyright:
|
||||
* Copyright (c) 2015 Google Inc.
|
||||
*/
|
||||
bool ConvolutionFilter::ComputeResizeFilter(ResizeMethod aResizeMethod,
|
||||
diff --git a/gfx/skia/skia/include/core/SkPreConfig.h b/gfx/skia/skia/include/core/SkPreConfig.h
|
||||
--- a/gfx/skia/skia/include/core/SkPreConfig.h
|
||||
+++ b/gfx/skia/skia/include/core/SkPreConfig.h
|
||||
@@ -68,17 +68,17 @@
|
||||
#define SK_CPU_BENDIAN
|
||||
#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
|
||||
#define SK_CPU_LENDIAN
|
||||
#elif defined(__sparc) || defined(__sparc__) || \
|
||||
defined(_POWER) || defined(__powerpc__) || \
|
||||
defined(__ppc__) || defined(__hppa) || \
|
||||
defined(__PPC__) || defined(__PPC64__) || \
|
||||
defined(_MIPSEB) || defined(__ARMEB__) || \
|
||||
@ -86,3 +105,8 @@ diff -r 0e579dcbf732 gfx/skia/skia/include/core/SkPreConfig.h
|
||||
(defined(__sh__) && defined(__BIG_ENDIAN__)) || \
|
||||
(defined(__ia64) && defined(__BIG_ENDIAN__))
|
||||
#define SK_CPU_BENDIAN
|
||||
#else
|
||||
#define SK_CPU_LENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -1,12 +1,17 @@
|
||||
# HG changeset patch
|
||||
# Parent aecb4600e5da17443b224c79eee178c1d8e155e3
|
||||
# Parent d1d66f7e4d0e7fd45e91e4fcee07555e72046d48
|
||||
For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
|
||||
right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
|
||||
|
||||
diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h
|
||||
--- a/gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200
|
||||
+++ b/gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200
|
||||
@@ -238,7 +238,18 @@
|
||||
diff --git a/gfx/skia/skia/include/private/SkNx.h b/gfx/skia/skia/include/private/SkNx.h
|
||||
--- a/gfx/skia/skia/include/private/SkNx.h
|
||||
+++ b/gfx/skia/skia/include/private/SkNx.h
|
||||
@@ -233,17 +233,28 @@ struct SkNx<1,T> {
|
||||
AI SkNx operator<<(int bits) const { return fVal << bits; }
|
||||
AI SkNx operator>>(int bits) const { return fVal >> bits; }
|
||||
|
||||
AI SkNx operator+(const SkNx& y) const { return fVal + y.fVal; }
|
||||
AI SkNx operator-(const SkNx& y) const { return fVal - y.fVal; }
|
||||
AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
|
||||
AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
|
||||
|
||||
@ -25,10 +30,20 @@ diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h
|
||||
AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
|
||||
AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
|
||||
|
||||
diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||
--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200
|
||||
+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200
|
||||
@@ -203,7 +203,13 @@
|
||||
AI SkNx operator==(const SkNx& y) const { return FromBits(fVal == y.fVal ? ~0 : 0); }
|
||||
AI SkNx operator!=(const SkNx& y) const { return FromBits(fVal != y.fVal ? ~0 : 0); }
|
||||
AI SkNx operator<=(const SkNx& y) const { return FromBits(fVal <= y.fVal ? ~0 : 0); }
|
||||
AI SkNx operator>=(const SkNx& y) const { return FromBits(fVal >= y.fVal ? ~0 : 0); }
|
||||
AI SkNx operator< (const SkNx& y) const { return FromBits(fVal < y.fVal ? ~0 : 0); }
|
||||
diff --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||
--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||
+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||
@@ -198,17 +198,23 @@ namespace SK_OPTS_NS {
|
||||
const SkAlpha* mask, size_t maskRB,
|
||||
int w, int h) {
|
||||
auto fn = [](const Sk4px& d, const Sk4px& aa) {
|
||||
// = (s + d(1-sa))aa + d(1-aa)
|
||||
// = s*aa + d(1-sa*aa)
|
||||
// ~~~>
|
||||
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
|
||||
// c = 0*aa + d(1-1*aa) = d(1-aa)
|
||||
@ -42,3 +57,8 @@ diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||
+ d.approxMulDiv255(aa.inv());
|
||||
};
|
||||
while (h --> 0) {
|
||||
Sk4px::MapDstAlpha(w, dst, mask, fn);
|
||||
dst += dstRB / sizeof(*dst);
|
||||
mask += maskRB / sizeof(*mask);
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +1,24 @@
|
||||
# HG changeset patch
|
||||
# Parent 46ea866ca3acb8bb5e1709ceb799b9c94f591dec
|
||||
# Parent 883d2c7fec80b9714ccfefa461a02f5b09e3ee09
|
||||
Problem description: Tab-titles that are too long to fit into a tab get faded out.
|
||||
On big endian this is broken and instead of fading out, the
|
||||
On big endian this is broken and instead of fading out, the
|
||||
tab gets white and the font transparent, leading to an unreadable
|
||||
tab-title
|
||||
Solution: This is not a real solution, but a hack. The real solution would have been
|
||||
to byte-swap the correct buffer, but I could not find it.
|
||||
So the next best thing is to deactivate the fading-effect. Now all tab-titles
|
||||
are readable, albeit not as pretty to look at as they could be.
|
||||
are readable, albeit not as pretty to look at as they could be.
|
||||
Side-effects: I have not yet found an unwanted side-effect.
|
||||
|
||||
diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
|
||||
--- a/gfx/2d/DrawTargetSkia.cpp Tue Oct 22 12:27:22 2019 +0200
|
||||
+++ b/gfx/2d/DrawTargetSkia.cpp Thu Oct 31 09:11:56 2019 +0100
|
||||
@@ -1861,6 +1861,14 @@
|
||||
diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
|
||||
--- a/gfx/2d/DrawTargetSkia.cpp
|
||||
+++ b/gfx/2d/DrawTargetSkia.cpp
|
||||
@@ -1856,16 +1856,24 @@ void DrawTargetSkia::PushLayerWithBlend(
|
||||
}
|
||||
|
||||
SkCanvas::SaveLayerRec saveRec(
|
||||
aBounds.IsEmpty() ? nullptr : &bounds, &paint, nullptr, clipImage.get(),
|
||||
&clipMatrix,
|
||||
SkCanvas::kPreserveLCDText_SaveLayerFlag |
|
||||
(aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0));
|
||||
|
||||
@ -28,3 +33,8 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp
|
||||
mCanvas->saveLayer(saveRec);
|
||||
|
||||
SetPermitSubpixelAA(aOpaque);
|
||||
|
||||
#ifdef MOZ_WIDGET_COCOA
|
||||
CGContextRelease(mCG);
|
||||
mCG = nullptr;
|
||||
#endif
|
||||
|
@ -1,12 +1,17 @@
|
||||
# HG changeset patch
|
||||
# Parent e5858dc7ab007042436496f7cfb9a5abf10f5082
|
||||
# Parent f9f5af4c88f2f3172a4f30d7e42bd2131bf24146
|
||||
This fixes a broken build for gcc < 9 on ppc64le.
|
||||
This patch can be removed for newer gcc-versions.
|
||||
|
||||
diff -r e5858dc7ab00 -r 5d3469aabe61 js/xpconnect/src/XPCWrappedNative.cpp
|
||||
--- a/js/xpconnect/src/XPCWrappedNative.cpp Thu Nov 29 10:07:29 2018 +0100
|
||||
+++ b/js/xpconnect/src/XPCWrappedNative.cpp Tue Sep 10 12:42:13 2019 +0200
|
||||
@@ -1092,7 +1092,11 @@
|
||||
diff --git a/js/xpconnect/src/XPCWrappedNative.cpp b/js/xpconnect/src/XPCWrappedNative.cpp
|
||||
--- a/js/xpconnect/src/XPCWrappedNative.cpp
|
||||
+++ b/js/xpconnect/src/XPCWrappedNative.cpp
|
||||
@@ -1072,17 +1072,21 @@ class MOZ_STACK_CLASS CallMethodHelper f
|
||||
uint32_t* result);
|
||||
|
||||
MOZ_ALWAYS_INLINE bool GetInterfaceTypeFromParam(const nsXPTType& type,
|
||||
nsID* result) const;
|
||||
|
||||
MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
|
||||
MutableHandleValue srcp) const;
|
||||
|
||||
@ -19,7 +24,17 @@ diff -r e5858dc7ab00 -r 5d3469aabe61 js/xpconnect/src/XPCWrappedNative.cpp
|
||||
|
||||
MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
|
||||
|
||||
@@ -1139,7 +1143,11 @@
|
||||
nsXPTCVariant* GetDispatchParam(uint8_t paramIndex) {
|
||||
if (paramIndex >= mJSContextIndex) {
|
||||
paramIndex += 1;
|
||||
}
|
||||
if (paramIndex >= mOptArgcIndex) {
|
||||
@@ -1119,17 +1123,21 @@ class MOZ_STACK_CLASS CallMethodHelper f
|
||||
|
||||
{
|
||||
// Success checked later.
|
||||
mIFaceInfo->GetMethodInfo(mVTableIndex, &mMethodInfo);
|
||||
}
|
||||
|
||||
~CallMethodHelper();
|
||||
|
||||
@ -32,3 +47,8 @@ diff -r e5858dc7ab00 -r 5d3469aabe61 js/xpconnect/src/XPCWrappedNative.cpp
|
||||
|
||||
// Trace implementation so we can put our CallMethodHelper in a Rooted<T>.
|
||||
void trace(JSTracer* aTrc);
|
||||
};
|
||||
|
||||
// static
|
||||
bool XPCWrappedNative::CallMethod(XPCCallContext& ccx,
|
||||
CallMode mode /*= CALL_METHOD */) {
|
||||
|
@ -15,8 +15,8 @@ diff -r a25cebecb02d -r 378b81b00e73 toolkit/components/extensions/schemas/runti
|
||||
{
|
||||
"id": "PlatformArch",
|
||||
"type": "string",
|
||||
- "enum": ["arm", "x86-32", "x86-64"],
|
||||
+ "enum": ["arm", "x86-32", "x86-64", "s390x", "aarch64", "ppc64le"],
|
||||
- "enum": ["aarch64", "arm", "ppc64", "s390x", "sparc64", "x86-32", "x86-64"],
|
||||
+ "enum": ["aarch64", "arm", "ppc64", "s390x", "sparc64", "x86-32", "x86-64", "ppc64le"],
|
||||
"allowedContexts": ["content", "devtools"],
|
||||
"description": "The machine's processor architecture."
|
||||
},
|
||||
|
@ -8,10 +8,14 @@ and https://reproducible-builds.org/specs/source-date-epoch/
|
||||
for the definition of this variable.
|
||||
|
||||
diff --git a/python/mozbuild/mozbuild/action/langpack_manifest.py b/python/mozbuild/mozbuild/action/langpack_manifest.py
|
||||
index 6f72697..d4cca96 100644
|
||||
--- a/python/mozbuild/mozbuild/action/langpack_manifest.py
|
||||
+++ b/python/mozbuild/mozbuild/action/langpack_manifest.py
|
||||
@@ -16,6 +16,7 @@ import os
|
||||
@@ -11,16 +11,17 @@
|
||||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
import io
|
||||
import datetime
|
||||
@ -19,7 +23,17 @@ index 6f72697..d4cca96 100644
|
||||
import requests
|
||||
import mozversioncontrol
|
||||
import mozpack.path as mozpath
|
||||
@@ -100,7 +101,7 @@ def get_timestamp_for_locale(path):
|
||||
from mozpack.chrome.manifest import (
|
||||
Manifest,
|
||||
ManifestLocale,
|
||||
parse_manifest,
|
||||
)
|
||||
@@ -100,17 +101,17 @@ def get_dt_from_hg(path):
|
||||
# ts == "20170914215617"
|
||||
###
|
||||
def get_timestamp_for_locale(path):
|
||||
dt = None
|
||||
if os.path.isdir(os.path.join(path, ".hg")):
|
||||
dt = get_dt_from_hg(path)
|
||||
|
||||
if dt is None:
|
||||
@ -28,3 +42,8 @@ index 6f72697..d4cca96 100644
|
||||
|
||||
dt = dt.replace(microsecond=0)
|
||||
return dt.strftime("%Y%m%d%H%M%S")
|
||||
|
||||
|
||||
###
|
||||
# Parses multiple defines files into a single key-value pair object.
|
||||
#
|
||||
|
@ -1,12 +1,20 @@
|
||||
# HG changeset patch
|
||||
# Parent 3de59fe1b8708c01e134ce698c4232b8a854f617
|
||||
Problem: webGL sites are displayed in the wrong color (usually blue-ish)
|
||||
Solution: Problem is with skia once again. Output of webgl seems endian-correct, but skia only
|
||||
knows how to deal with little endian.
|
||||
So we swizzle the output of webgl after reading it from readpixels()
|
||||
Note: This does not fix all webGL sites, but is a step in the right direction
|
||||
diff -r 6b017d3e9733 gfx/gl/GLContext.h
|
||||
--- a/gfx/gl/GLContext.h Mon Sep 09 10:04:05 2019 +0200
|
||||
+++ b/gfx/gl/GLContext.h Wed Nov 13 17:13:04 2019 +0100
|
||||
@@ -1551,6 +1551,13 @@
|
||||
|
||||
diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h
|
||||
--- a/gfx/gl/GLContext.h
|
||||
+++ b/gfx/gl/GLContext.h
|
||||
@@ -1548,16 +1548,23 @@ class GLContext : public GenericAtomicRe
|
||||
AFTER_GL_CALL;
|
||||
}
|
||||
|
||||
void raw_fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
|
||||
GLenum format, GLenum type, GLvoid* pixels) {
|
||||
BEFORE_GL_CALL;
|
||||
mSymbols.fReadPixels(x, y, width, height, format, type, pixels);
|
||||
OnSyncCall();
|
||||
@ -20,4 +28,8 @@ diff -r 6b017d3e9733 gfx/gl/GLContext.h
|
||||
AFTER_GL_CALL;
|
||||
mHeavyGLCallsSinceLastFlush = true;
|
||||
}
|
||||
|
||||
|
||||
void fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
|
||||
GLenum format, GLenum type, GLvoid* pixels);
|
||||
|
||||
public:
|
||||
|
@ -1,6 +1,15 @@
|
||||
--- a/js/src/wasm/WasmSignalHandlers.cpp 2019-05-16 11:25:13.260881532 +0200
|
||||
+++ b/js/src/wasm/WasmSignalHandlers.cpp 2019-05-16 11:24:35.164589301 +0200
|
||||
@@ -243,7 +243,7 @@ using mozilla::DebugOnly;
|
||||
# HG changeset patch
|
||||
# Parent 9bc02ee6567ae3f1dad1f8578e650c0a1faa0179
|
||||
|
||||
diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
|
||||
--- a/js/src/wasm/WasmSignalHandlers.cpp
|
||||
+++ b/js/src/wasm/WasmSignalHandlers.cpp
|
||||
@@ -240,17 +240,17 @@ using mozilla::DebugOnly;
|
||||
// Those definitions are however not present in the headers of every Linux
|
||||
// distro - Raspbian is known to be a problem, for example. However those
|
||||
// distros are tier-3 platforms.
|
||||
//
|
||||
// If you run into compile problems on a tier-3 platform, you can disable the
|
||||
// emulation here.
|
||||
|
||||
#if defined(__linux__) && defined(__arm__)
|
||||
@ -9,3 +18,8 @@
|
||||
#endif
|
||||
|
||||
#ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
|
||||
# include <sys/user.h>
|
||||
#endif
|
||||
|
||||
#if defined(ANDROID)
|
||||
// Not all versions of the Android NDK define ucontext_t or mcontext_t.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# HG changeset patch
|
||||
# Parent 1317782cd47f1d1f2410712a1dd283b305393eae
|
||||
# Parent 2640f2f68373b7bec776bb11d3b3fb75c72a8adb
|
||||
|
||||
diff --git a/media/libopus/silk/arm/arm_silk_map.c b/media/libopus/silk/arm/arm_silk_map.c
|
||||
--- a/media/libopus/silk/arm/arm_silk_map.c
|
||||
|
@ -8,28 +8,50 @@ Subject: [PATCH] Fix top-level asm issue.
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build
|
||||
index aae85843e9f6..208368dfd189 100644
|
||||
--- a/security/sandbox/linux/moz.build
|
||||
+++ b/security/sandbox/linux/moz.build
|
||||
@@ -61,7 +61,6 @@ UNIFIED_SOURCES += [
|
||||
'../chromium/sandbox/linux/bpf_dsl/policy_compiler.cc',
|
||||
'../chromium/sandbox/linux/bpf_dsl/syscall_set.cc',
|
||||
'../chromium/sandbox/linux/seccomp-bpf/die.cc',
|
||||
- '../chromium/sandbox/linux/seccomp-bpf/syscall.cc',
|
||||
'broker/SandboxBrokerCommon.cpp',
|
||||
'Sandbox.cpp',
|
||||
'SandboxBrokerClient.cpp',
|
||||
@@ -77,6 +76,7 @@ UNIFIED_SOURCES += [
|
||||
SOURCES += [
|
||||
'../chromium/base/strings/safe_sprintf.cc',
|
||||
'../chromium/base/third_party/icu/icu_utf.cc',
|
||||
+ '../chromium/sandbox/linux/seccomp-bpf/syscall.cc',
|
||||
'../chromium/sandbox/linux/seccomp-bpf/trap.cc',
|
||||
'../chromium/sandbox/linux/services/syscall_wrappers.cc',
|
||||
@@ -66,32 +66,32 @@ UNIFIED_SOURCES += [
|
||||
"../chromium/base/time/time_now_posix.cc",
|
||||
"../chromium/sandbox/linux/bpf_dsl/bpf_dsl.cc",
|
||||
"../chromium/sandbox/linux/bpf_dsl/codegen.cc",
|
||||
"../chromium/sandbox/linux/bpf_dsl/dump_bpf.cc",
|
||||
"../chromium/sandbox/linux/bpf_dsl/policy.cc",
|
||||
"../chromium/sandbox/linux/bpf_dsl/policy_compiler.cc",
|
||||
"../chromium/sandbox/linux/bpf_dsl/syscall_set.cc",
|
||||
"../chromium/sandbox/linux/seccomp-bpf/die.cc",
|
||||
- "../chromium/sandbox/linux/seccomp-bpf/syscall.cc",
|
||||
"broker/SandboxBrokerCommon.cpp",
|
||||
"Sandbox.cpp",
|
||||
"SandboxBrokerClient.cpp",
|
||||
"SandboxFilter.cpp",
|
||||
"SandboxFilterUtil.cpp",
|
||||
"SandboxHooks.cpp",
|
||||
"SandboxInfo.cpp",
|
||||
"SandboxLogging.cpp",
|
||||
"SandboxOpenedFiles.cpp",
|
||||
"SandboxReporterClient.cpp",
|
||||
]
|
||||
@@ -96,6 +96,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
|
||||
SOURCES['../chromium/sandbox/linux/services/syscall_wrappers.cc'].flags += [
|
||||
'-Wno-empty-body',
|
||||
|
||||
SOURCES += [
|
||||
"../chromium/base/strings/safe_sprintf.cc",
|
||||
"../chromium/base/third_party/icu/icu_utf.cc",
|
||||
+ "../chromium/sandbox/linux/seccomp-bpf/syscall.cc",
|
||||
"../chromium/sandbox/linux/seccomp-bpf/trap.cc",
|
||||
"../chromium/sandbox/linux/services/syscall_wrappers.cc",
|
||||
]
|
||||
|
||||
# This copy of SafeSPrintf doesn't need to avoid the Chromium logging
|
||||
# dependency like the one in libxul does, but this way the behavior is
|
||||
# consistent. See also the comment in SandboxLogging.h.
|
||||
SOURCES["../chromium/base/strings/safe_sprintf.cc"].flags += ["-DNDEBUG"]
|
||||
@@ -105,16 +105,19 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc")
|
||||
"-Wno-unreachable-code-return"
|
||||
]
|
||||
|
||||
if CONFIG["CC_TYPE"] in ("clang", "gcc"):
|
||||
CXXFLAGS += ["-Wno-shadow", "-Wno-error=stack-protector"]
|
||||
SOURCES["../chromium/sandbox/linux/services/syscall_wrappers.cc"].flags += [
|
||||
"-Wno-empty-body",
|
||||
]
|
||||
+ SOURCES['../chromium/sandbox/linux/seccomp-bpf/syscall.cc'].flags += [
|
||||
+ '-fno-lto'
|
||||
@ -37,6 +59,8 @@ index aae85843e9f6..208368dfd189 100644
|
||||
|
||||
# gcc lto likes to put the top level asm in syscall.cc in a different partition
|
||||
# from the function using it which breaks the build. Work around that by
|
||||
--
|
||||
2.23.0
|
||||
|
||||
# forcing there to be only one partition.
|
||||
for f in CONFIG["OS_CXXFLAGS"]:
|
||||
if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang":
|
||||
LDFLAGS += ["--param lto-partitions=1"]
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
# Date 1559294891 -7200
|
||||
# Fri May 31 11:28:11 2019 +0200
|
||||
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
|
||||
# Parent aa58e8c70d1448a08407c6c191ea8b76d61e8bf6
|
||||
# Parent c8bc6be5267f16016d506973a2d6a7c58a1cd441
|
||||
Description: Add KDE integration to Firefox (toolkit parts)
|
||||
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
|
||||
Author: Lubos Lunak <lunak@suse.com>
|
||||
@ -13,15 +13,15 @@ Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
|
||||
diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
||||
--- a/modules/libpref/Preferences.cpp
|
||||
+++ b/modules/libpref/Preferences.cpp
|
||||
@@ -83,16 +83,17 @@
|
||||
#include "nsXPCOM.h"
|
||||
#include "nsXULAppAPI.h"
|
||||
#include "nsZipArchive.h"
|
||||
@@ -84,16 +84,17 @@
|
||||
#include "plbase64.h"
|
||||
#include "PLDHashTable.h"
|
||||
#include "plstr.h"
|
||||
#include "prlink.h"
|
||||
#include "xpcpublic.h"
|
||||
#ifdef MOZ_BACKGROUNDTASKS
|
||||
# include "mozilla/BackgroundTasks.h"
|
||||
#endif
|
||||
+#include "nsKDEUtils.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
@ -31,7 +31,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
||||
#ifdef MOZ_MEMORY
|
||||
# include "mozmemory.h"
|
||||
#endif
|
||||
@@ -4566,25 +4567,37 @@ nsresult Preferences::InitInitialObjects
|
||||
@@ -4635,25 +4636,37 @@ nsresult Preferences::InitInitialObjects
|
||||
// application pref files for backwards compatibility.
|
||||
static const char* specialFiles[] = {
|
||||
#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
|
||||
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
|
||||
@@ -4630,17 +4643,17 @@ nsresult Preferences::InitInitialObjects
|
||||
@@ -4718,17 +4731,17 @@ nsresult Preferences::InitInitialObjects
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
|
||||
@ -91,13 +91,13 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
||||
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
|
||||
--- a/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])
|
||||
|
||||
UNIFIED_SOURCES += [
|
||||
'Preferences.cpp',
|
||||
'SharedPrefMap.cpp',
|
||||
"Preferences.cpp",
|
||||
"SharedPrefMap.cpp",
|
||||
]
|
||||
|
||||
+LOCAL_INCLUDES += [
|
||||
@ -106,76 +106,76 @@ diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
|
||||
+
|
||||
gen_all_tuple = tuple(gen_h + gen_cpp + gen_rs)
|
||||
|
||||
GENERATED_FILES += [gen_all_tuple]
|
||||
|
||||
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']
|
||||
|
||||
GeneratedFile(
|
||||
*gen_all_tuple,
|
||||
script="init/generate_static_pref_list.py",
|
||||
entry_point="emit_code",
|
||||
inputs=["init/StaticPrefList.yaml"]
|
||||
)
|
||||
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
|
||||
--- a/python/mozbuild/mozpack/chrome/flags.py
|
||||
+++ b/python/mozbuild/mozpack/chrome/flags.py
|
||||
@@ -227,16 +227,17 @@ class Flags(OrderedDict):
|
||||
'contentaccessible': Flag,
|
||||
'os': StringFlag,
|
||||
'osversion': VersionFlag,
|
||||
'abi': StringFlag,
|
||||
'platform': Flag,
|
||||
'xpcnativewrappers': Flag,
|
||||
'tablet': Flag,
|
||||
'process': StringFlag,
|
||||
+ 'desktop': StringFlag,
|
||||
@@ -229,16 +229,17 @@ class Flags(OrderedDict):
|
||||
"os": StringFlag,
|
||||
"osversion": VersionFlag,
|
||||
"abi": StringFlag,
|
||||
"platform": Flag,
|
||||
"xpcnativewrappers": Flag,
|
||||
"tablet": Flag,
|
||||
"process": StringFlag,
|
||||
"backgroundtask": StringFlag,
|
||||
+ "desktop": StringFlag,
|
||||
}
|
||||
RE = re.compile(r'([!<>=]+)')
|
||||
RE = re.compile(r"([!<>=]+)")
|
||||
|
||||
def __init__(self, *flags):
|
||||
'''
|
||||
"""
|
||||
Initialize a set of flags given in string form.
|
||||
flags = Flags('contentaccessible=yes', 'appversion>=3.5')
|
||||
'''
|
||||
"""
|
||||
diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
|
||||
--- a/python/mozbuild/mozpack/chrome/manifest.py
|
||||
+++ b/python/mozbuild/mozpack/chrome/manifest.py
|
||||
@@ -37,16 +37,17 @@ class ManifestEntry(object):
|
||||
'platformversion',
|
||||
'os',
|
||||
'osversion',
|
||||
'abi',
|
||||
'xpcnativewrappers',
|
||||
'tablet',
|
||||
'process',
|
||||
'contentaccessible',
|
||||
+ 'desktop',
|
||||
@@ -39,16 +39,17 @@ class ManifestEntry(object):
|
||||
"os",
|
||||
"osversion",
|
||||
"abi",
|
||||
"xpcnativewrappers",
|
||||
"tablet",
|
||||
"process",
|
||||
"contentaccessible",
|
||||
"backgroundtask",
|
||||
+ "desktop",
|
||||
]
|
||||
|
||||
def __init__(self, base, *flags):
|
||||
'''
|
||||
"""
|
||||
Initialize a manifest entry with the given base path and flags.
|
||||
'''
|
||||
"""
|
||||
self.base = base
|
||||
self.flags = Flags(*flags)
|
||||
diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
|
||||
--- a/toolkit/components/downloads/moz.build
|
||||
+++ b/toolkit/components/downloads/moz.build
|
||||
@@ -46,10 +46,14 @@ XPCOM_MANIFESTS += [
|
||||
@@ -45,10 +45,14 @@ XPCOM_MANIFESTS += [
|
||||
|
||||
if CONFIG['MOZ_PLACES']:
|
||||
if CONFIG["MOZ_PLACES"]:
|
||||
EXTRA_JS_MODULES += [
|
||||
'DownloadHistory.jsm',
|
||||
"DownloadHistory.jsm",
|
||||
]
|
||||
|
||||
FINAL_LIBRARY = 'xul'
|
||||
FINAL_LIBRARY = "xul"
|
||||
|
||||
+LOCAL_INCLUDES += [
|
||||
+ '/toolkit/xre'
|
||||
+]
|
||||
+
|
||||
with Files('**'):
|
||||
BUG_COMPONENT = ('Toolkit', 'Downloads API')
|
||||
with Files("**"):
|
||||
BUG_COMPONENT = ("Toolkit", "Downloads API")
|
||||
diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
||||
--- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
||||
+++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
||||
@@ -1203,36 +1203,66 @@ nsUnknownContentTypeDialog.prototype = {
|
||||
@@ -1231,36 +1231,66 @@ nsUnknownContentTypeDialog.prototype = {
|
||||
params.handlerApp &&
|
||||
params.handlerApp.executable &&
|
||||
params.handlerApp.executable.isFile()
|
||||
@ -302,7 +302,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
||||
nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
|
||||
// dbus prevents us from being threadsafe, but this routine should not block
|
||||
// anyhow
|
||||
@@ -384,21 +387,50 @@ nsresult nsUnixSystemProxySettings::GetP
|
||||
@@ -381,21 +384,50 @@ nsresult nsUnixSystemProxySettings::GetP
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -338,7 +338,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
||||
+ url += nsPrintfCString("%d", aPort);
|
||||
+ }
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "GETPROXY" ));
|
||||
+ command.AppendElement( "GETPROXY"_ns );
|
||||
+ command.AppendElement( url );
|
||||
+ nsTArray<nsCString> result;
|
||||
+ if( !nsKDEUtils::command( command, &result ) || result.Length() != 1 )
|
||||
@ -356,26 +356,26 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
|
||||
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
|
||||
--- a/toolkit/xre/moz.build
|
||||
+++ b/toolkit/xre/moz.build
|
||||
@@ -88,17 +88,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
|
||||
'../components/printingui',
|
||||
@@ -93,17 +93,19 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "co
|
||||
"../components/printingui",
|
||||
]
|
||||
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
|
||||
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit":
|
||||
UNIFIED_SOURCES += [
|
||||
'nsNativeAppSupportDefault.cpp',
|
||||
'UIKitDirProvider.mm',
|
||||
"nsNativeAppSupportDefault.cpp",
|
||||
"UIKitDirProvider.mm",
|
||||
]
|
||||
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
|
||||
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
||||
+ EXPORTS += ['nsKDEUtils.h']
|
||||
UNIFIED_SOURCES += [
|
||||
+ 'nsKDEUtils.cpp',
|
||||
'nsNativeAppSupportUnix.cpp',
|
||||
+ "nsKDEUtils.cpp",
|
||||
"nsNativeAppSupportUnix.cpp",
|
||||
]
|
||||
else:
|
||||
UNIFIED_SOURCES += [
|
||||
'nsNativeAppSupportDefault.cpp',
|
||||
"nsNativeAppSupportDefault.cpp",
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_HAS_REMOTE']:
|
||||
if CONFIG["MOZ_HAS_REMOTE"]:
|
||||
diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
@ -454,8 +454,8 @@ new file mode 100644
|
||||
+static bool getKdeSupport()
|
||||
+ {
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "CHECK" ));
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( MAKE_STR( KMOZILLAHELPER_VERSION )));
|
||||
+ command.AppendElement( "CHECK"_ns );
|
||||
+ command.AppendElement( "KMOZILLAHELPER_VERSION"_ns );
|
||||
+ bool kde = nsKDEUtils::command( command );
|
||||
+#ifdef DEBUG_KDE
|
||||
+ fprintf( stderr, "KDE RUNNING %d\n", kde );
|
||||
@ -841,44 +841,44 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle
|
||||
diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
|
||||
--- a/uriloader/exthandler/moz.build
|
||||
+++ b/uriloader/exthandler/moz.build
|
||||
@@ -85,17 +85,19 @@ else:
|
||||
@@ -80,17 +80,19 @@ else:
|
||||
SOURCES += [
|
||||
osdir + '/nsOSHelperAppService.cpp',
|
||||
osdir + "/nsOSHelperAppService.cpp",
|
||||
]
|
||||
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
|
||||
CXXFLAGS += ['-Wno-error=shadow']
|
||||
if CONFIG["CC_TYPE"] in ("clang", "gcc"):
|
||||
CXXFLAGS += ["-Wno-error=shadow"]
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
|
||||
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
||||
UNIFIED_SOURCES += [
|
||||
+ 'unix/nsCommonRegistry.cpp',
|
||||
'unix/nsGNOMERegistry.cpp',
|
||||
+ 'unix/nsKDERegistry.cpp',
|
||||
'unix/nsMIMEInfoUnix.cpp',
|
||||
+ "unix/nsCommonRegistry.cpp",
|
||||
"unix/nsGNOMERegistry.cpp",
|
||||
+ "unix/nsKDERegistry.cpp",
|
||||
"unix/nsMIMEInfoUnix.cpp",
|
||||
]
|
||||
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
|
||||
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
|
||||
UNIFIED_SOURCES += [
|
||||
'android/nsAndroidHandlerApp.cpp',
|
||||
'android/nsExternalURLHandlerService.cpp',
|
||||
'android/nsMIMEInfoAndroid.cpp',
|
||||
"android/nsMIMEInfoAndroid.cpp",
|
||||
]
|
||||
@@ -135,16 +137,17 @@ include('/ipc/chromium/chromium-config.m
|
||||
FINAL_LIBRARY = 'xul'
|
||||
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
|
||||
UNIFIED_SOURCES += [
|
||||
@@ -128,16 +130,17 @@ include("/ipc/chromium/chromium-config.m
|
||||
FINAL_LIBRARY = "xul"
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
'/docshell/base',
|
||||
'/dom/base',
|
||||
'/dom/ipc',
|
||||
'/netwerk/base',
|
||||
'/netwerk/protocol/http',
|
||||
+ '/toolkit/xre',
|
||||
"/docshell/base",
|
||||
"/dom/base",
|
||||
"/dom/ipc",
|
||||
"/netwerk/base",
|
||||
"/netwerk/protocol/http",
|
||||
+ "/toolkit/xre",
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_ENABLE_DBUS']:
|
||||
CXXFLAGS += CONFIG['TK_CFLAGS']
|
||||
CXXFLAGS += CONFIG['MOZ_DBUS_CFLAGS']
|
||||
if CONFIG["MOZ_ENABLE_DBUS"]:
|
||||
CXXFLAGS += CONFIG["TK_CFLAGS"]
|
||||
CXXFLAGS += CONFIG["MOZ_DBUS_CFLAGS"]
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
|
||||
CXXFLAGS += CONFIG['TK_CFLAGS']
|
||||
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
||||
CXXFLAGS += CONFIG["TK_CFLAGS"]
|
||||
diff --git a/uriloader/exthandler/unix/nsCommonRegistry.cpp b/uriloader/exthandler/unix/nsCommonRegistry.cpp
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
@ -991,7 +991,7 @@ new file mode 100644
|
||||
+nsKDERegistry::HandlerExists(const char *aProtocolScheme)
|
||||
+{
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "HANDLEREXISTS" ));
|
||||
+ command.AppendElement( "HANDLEREXISTS"_ns );
|
||||
+ command.AppendElement( nsAutoCString( aProtocolScheme ));
|
||||
+ return nsKDEUtils::command( command );
|
||||
+}
|
||||
@ -1000,7 +1000,7 @@ new file mode 100644
|
||||
+nsKDERegistry::LoadURL(nsIURI *aURL)
|
||||
+{
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "OPEN" ));
|
||||
+ command.AppendElement( "OPEN"_ns );
|
||||
+ nsCString url;
|
||||
+ aURL->GetSpec( url );
|
||||
+ command.AppendElement( url );
|
||||
@ -1016,7 +1016,7 @@ new file mode 100644
|
||||
+ nsAString& aDesc)
|
||||
+{
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "GETAPPDESCFORSCHEME" ));
|
||||
+ command.AppendElement( "GETAPPDESCFORSCHEME"_ns );
|
||||
+ command.AppendElement( aScheme );
|
||||
+ nsTArray<nsCString> output;
|
||||
+ if( nsKDEUtils::command( command, &output ) && output.Length() == 1 )
|
||||
@ -1029,7 +1029,7 @@ new file mode 100644
|
||||
+{
|
||||
+ NS_ASSERTION(aFileExt[0] != '.', "aFileExt shouldn't start with a dot");
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "GETFROMEXTENSION" ));
|
||||
+ command.AppendElement( "GETFROMEXTENSION"_ns );
|
||||
+ command.AppendElement( aFileExt );
|
||||
+ return GetFromHelper( command );
|
||||
+}
|
||||
@ -1038,7 +1038,7 @@ new file mode 100644
|
||||
+nsKDERegistry::GetFromType(const nsACString& aMIMEType)
|
||||
+{
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "GETFROMTYPE" ));
|
||||
+ command.AppendElement( "GETFROMTYPE"_ns );
|
||||
+ command.AppendElement( aMIMEType );
|
||||
+ return GetFromHelper( command );
|
||||
+}
|
||||
@ -1171,9 +1171,9 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
|
||||
+ bool supports;
|
||||
+ if( NS_SUCCEEDED( GetHasDefaultHandler( &supports )) && supports ) {
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "OPEN" ));
|
||||
+ command.AppendElement( "OPEN"_ns );
|
||||
+ command.AppendElement( nativePath );
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "MIMETYPE" ));
|
||||
+ command.AppendElement( "MIMETYPE"_ns );
|
||||
+ command.AppendElement( mSchemeOrType );
|
||||
+ if( nsKDEUtils::command( command ))
|
||||
+ return NS_OK;
|
||||
@ -1206,15 +1206,15 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
|
||||
#ifdef MOZ_WIDGET_GTK
|
||||
-# include "nsGNOMERegistry.h"
|
||||
+# include "nsCommonRegistry.h"
|
||||
# ifdef MOZ_BUILD_APP_IS_BROWSER
|
||||
# include "nsIToolkitShellService.h"
|
||||
# include "nsIGNOMEShellService.h"
|
||||
# endif
|
||||
#endif
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsUnicharUtils.h"
|
||||
#include "nsIFileStreams.h"
|
||||
#include "nsILineInputStream.h"
|
||||
#include "nsIFile.h"
|
||||
@@ -1022,17 +1022,17 @@ nsresult nsOSHelperAppService::GetHandle
|
||||
@@ -1024,17 +1024,17 @@ nsresult nsOSHelperAppService::GetHandle
|
||||
|
||||
nsresult nsOSHelperAppService::OSProtocolHandlerExists(
|
||||
const char* aProtocolScheme, bool* aHandlerExists) {
|
||||
@ -1233,7 +1233,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
|
||||
nsCOMPtr<nsIHandlerService> handlerSvc =
|
||||
do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
|
||||
if (NS_SUCCEEDED(rv) && handlerSvc) {
|
||||
@@ -1042,17 +1042,17 @@ nsresult nsOSHelperAppService::OSProtoco
|
||||
@@ -1044,17 +1044,17 @@ nsresult nsOSHelperAppService::OSProtoco
|
||||
}
|
||||
|
||||
return rv;
|
||||
@ -1252,7 +1252,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
|
||||
|
||||
NS_IMETHODIMP nsOSHelperAppService::IsCurrentAppOSDefaultForProtocol(
|
||||
const nsACString& aScheme, bool* _retval) {
|
||||
@@ -1139,17 +1139,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
|
||||
@@ -1147,17 +1147,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
|
||||
nsresult rv =
|
||||
LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
|
||||
minorType, mime_types_description, true);
|
||||
@ -1271,7 +1271,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
|
||||
|
||||
rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
|
||||
minorType, mime_types_description, false);
|
||||
@@ -1251,17 +1251,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
|
||||
@@ -1258,17 +1258,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
|
||||
|
||||
// Now look up our extensions
|
||||
nsAutoString extensions, mime_types_description;
|
||||
@ -1293,23 +1293,23 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
|
||||
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
|
||||
--- a/widget/gtk/moz.build
|
||||
+++ b/widget/gtk/moz.build
|
||||
@@ -131,16 +131,17 @@ include('/ipc/chromium/chromium-config.m
|
||||
|
||||
FINAL_LIBRARY = 'xul'
|
||||
@@ -136,16 +136,17 @@ FINAL_LIBRARY = "xul"
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
'/layout/base',
|
||||
'/layout/generic',
|
||||
'/layout/xul',
|
||||
'/other-licenses/atk-1.0',
|
||||
+ '/toolkit/xre',
|
||||
'/widget',
|
||||
'/widget/headless',
|
||||
"/layout/base",
|
||||
"/layout/forms",
|
||||
"/layout/generic",
|
||||
"/layout/xul",
|
||||
"/other-licenses/atk-1.0",
|
||||
"/third_party/cups/include",
|
||||
+ "/toolkit/xre",
|
||||
"/widget",
|
||||
"/widget/headless",
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_X11']:
|
||||
if CONFIG["MOZ_X11"]:
|
||||
LOCAL_INCLUDES += [
|
||||
'/widget/x11',
|
||||
"/widget/x11",
|
||||
]
|
||||
diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
||||
--- a/widget/gtk/nsFilePicker.cpp
|
||||
@ -1337,20 +1337,20 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "MozContainer.h"
|
||||
#include "gfxPlatformGtk.h"
|
||||
#include "WidgetUtilsGtk.h"
|
||||
|
||||
#include "nsFilePicker.h"
|
||||
+#include "nsKDEUtils.h"
|
||||
+#include "nsURLHelper.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
#define MAX_PREVIEW_SIZE 180
|
||||
// bug 1184009
|
||||
#define MAX_PREVIEW_SOURCE_SIZE 4096
|
||||
|
||||
nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
|
||||
@@ -231,17 +234,19 @@ nsFilePicker::AppendFilters(int32_t aFil
|
||||
#undef LOG
|
||||
#ifdef MOZ_LOGGING
|
||||
# include "mozilla/Logging.h"
|
||||
# include "nsTArray.h"
|
||||
# include "Units.h"
|
||||
extern mozilla::LazyLogModule gWidgetLog;
|
||||
# define LOG(args) MOZ_LOG(gWidgetLog, mozilla::LogLevel::Debug, args)
|
||||
@@ -242,17 +245,19 @@ nsFilePicker::AppendFilters(int32_t aFil
|
||||
mAllowURLs = !!(aFilterMask & filterAllowURLs);
|
||||
return nsBaseFilePicker::AppendFilters(aFilterMask);
|
||||
}
|
||||
@ -1371,7 +1371,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
||||
|
||||
mFilters.AppendElement(filter);
|
||||
mFilterNames.AppendElement(name);
|
||||
@@ -341,16 +346,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
|
||||
@@ -352,16 +357,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -1411,7 +1411,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
||||
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
|
||||
|
||||
const gchar* accept_button;
|
||||
@@ -570,16 +598,244 @@ void nsFilePicker::Done(void* file_choos
|
||||
@@ -581,16 +609,244 @@ void nsFilePicker::Done(void* file_choos
|
||||
mCallback->Done(result);
|
||||
mCallback = nullptr;
|
||||
} else {
|
||||
@ -1534,10 +1534,10 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
||||
+ }
|
||||
+ command.AppendElement( title );
|
||||
+ if( mMode == nsIFilePicker::modeOpenMultiple )
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "MULTIPLE" ));
|
||||
+ command.AppendElement( "MULTIPLE"_ns );
|
||||
+ if( PRInt32 xid = windowToXid( mParentWidget ))
|
||||
+ {
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
|
||||
+ command.AppendElement( "PARENT"_ns );
|
||||
+ nsAutoCString parent;
|
||||
+ parent.AppendInt( xid );
|
||||
+ command.AppendElement( parent );
|
||||
@ -1625,11 +1625,11 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
||||
+ title.Adopt(ToNewUTF8String(mTitle));
|
||||
+
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "APPSDIALOG" ));
|
||||
+ command.AppendElement( "APPSDIALOG"_ns );
|
||||
+ command.AppendElement( title );
|
||||
+ if( PRInt32 xid = windowToXid( mParentWidget ))
|
||||
+ {
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
|
||||
+ command.AppendElement( "PARENT"_ns );
|
||||
+ nsAutoCString parent;
|
||||
+ parent.AppendInt( xid );
|
||||
+ command.AppendElement( parent );
|
||||
@ -1685,7 +1685,7 @@ diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
|
||||
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
|
||||
--- a/xpcom/components/ManifestParser.cpp
|
||||
+++ b/xpcom/components/ManifestParser.cpp
|
||||
@@ -34,16 +34,17 @@
|
||||
@@ -38,16 +38,17 @@
|
||||
#include "nsTextFormatter.h"
|
||||
#include "nsVersionComparator.h"
|
||||
#include "nsXPCOMCIDInternal.h"
|
||||
@ -1703,25 +1703,25 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
|
||||
int argc;
|
||||
|
||||
bool ischrome;
|
||||
@@ -394,16 +395,17 @@ void ParseManifest(NSLocationType aType,
|
||||
NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
|
||||
NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
|
||||
NS_NAMED_LITERAL_STRING(kApplication, "application");
|
||||
NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
|
||||
NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion");
|
||||
NS_NAMED_LITERAL_STRING(kOs, "os");
|
||||
NS_NAMED_LITERAL_STRING(kOsVersion, "osversion");
|
||||
NS_NAMED_LITERAL_STRING(kABI, "abi");
|
||||
+ NS_NAMED_LITERAL_STRING(kDesktop, "desktop");
|
||||
NS_NAMED_LITERAL_STRING(kProcess, "process");
|
||||
@@ -397,16 +398,17 @@ void ParseManifest(NSLocationType aType,
|
||||
constexpr auto kRemoteEnabled = u"remoteenabled"_ns;
|
||||
constexpr auto kRemoteRequired = u"remoterequired"_ns;
|
||||
constexpr auto kApplication = u"application"_ns;
|
||||
constexpr auto kAppVersion = u"appversion"_ns;
|
||||
constexpr auto kGeckoVersion = u"platformversion"_ns;
|
||||
constexpr auto kOs = u"os"_ns;
|
||||
constexpr auto kOsVersion = u"osversion"_ns;
|
||||
constexpr auto kABI = u"abi"_ns;
|
||||
+ constexpr auto kDesktop = u"desktop"_ns;
|
||||
constexpr auto kProcess = u"process"_ns;
|
||||
#if defined(MOZ_WIDGET_ANDROID)
|
||||
NS_NAMED_LITERAL_STRING(kTablet, "tablet");
|
||||
constexpr auto kTablet = u"tablet"_ns;
|
||||
#endif
|
||||
|
||||
NS_NAMED_LITERAL_STRING(kMain, "main");
|
||||
NS_NAMED_LITERAL_STRING(kContent, "content");
|
||||
|
||||
@@ -449,39 +451,44 @@ void ParseManifest(NSLocationType aType,
|
||||
// You might expect this to be guarded by MOZ_BACKGROUNDTASKS, but it's not
|
||||
// possible to have conditional manifest contents, so we need to recognize and
|
||||
// discard these tokens even when MOZ_BACKGROUNDTASKS is not set.
|
||||
constexpr auto kBackgroundTask = u"backgroundtask"_ns;
|
||||
@@ -456,39 +458,44 @@ void ParseManifest(NSLocationType aType,
|
||||
CopyUTF8toUTF16(s, abi);
|
||||
abi.Insert(char16_t('_'), 0);
|
||||
abi.Insert(osTarget, 0);
|
||||
@ -1739,17 +1739,17 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
|
||||
nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
|
||||
info.dwMinorVersion);
|
||||
}
|
||||
+ desktop = NS_LITERAL_STRING("win");
|
||||
+ desktop = u"win"_ns;
|
||||
# pragma warning(pop)
|
||||
#elif defined(MOZ_WIDGET_COCOA)
|
||||
SInt32 majorVersion = nsCocoaFeatures::macOSVersionMajor();
|
||||
SInt32 minorVersion = nsCocoaFeatures::macOSVersionMinor();
|
||||
nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", majorVersion, minorVersion);
|
||||
+ desktop = NS_LITERAL_STRING("macosx");
|
||||
+ desktop = u"macosx"_ns);
|
||||
#elif defined(MOZ_WIDGET_GTK)
|
||||
nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", gtk_major_version,
|
||||
gtk_minor_version);
|
||||
+ desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
|
||||
+ desktop = nsKDEUtils::kdeSession() ? u"kde"_ns : u"gnome"_ns;
|
||||
#elif defined(MOZ_WIDGET_ANDROID)
|
||||
bool isTablet = false;
|
||||
if (mozilla::AndroidBridge::Bridge()) {
|
||||
@ -1757,7 +1757,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
|
||||
"android/os/Build$VERSION", "RELEASE", osVersion);
|
||||
isTablet = java::GeckoAppShell::IsTablet();
|
||||
}
|
||||
+ desktop = NS_LITERAL_STRING("android");
|
||||
+ desktop = u"android"_ns;
|
||||
#endif
|
||||
|
||||
if (XRE_IsContentProcess()) {
|
||||
@ -1766,13 +1766,13 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
|
||||
process = kMain;
|
||||
}
|
||||
|
||||
@@ -568,25 +575,27 @@ void ParseManifest(NSLocationType aType,
|
||||
TriState stOsVersion = eUnspecified;
|
||||
TriState stOs = eUnspecified;
|
||||
TriState stABI = eUnspecified;
|
||||
TriState stProcess = eUnspecified;
|
||||
#if defined(MOZ_WIDGET_ANDROID)
|
||||
TriState stTablet = eUnspecified;
|
||||
@@ -583,25 +590,27 @@ void ParseManifest(NSLocationType aType,
|
||||
// When in background task mode, default to not registering
|
||||
// category directivies unless backgroundtask=1 is specified.
|
||||
TriState stBackgroundTask = (BackgroundTasks::IsBackgroundTaskMode() &&
|
||||
strcmp("category", directive->directive) == 0)
|
||||
? eBad
|
||||
: eUnspecified;
|
||||
#endif
|
||||
int flags = 0;
|
||||
+ TriState stDesktop = eUnspecified;
|
||||
@ -1794,7 +1794,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -623,17 +632,17 @@ void ParseManifest(NSLocationType aType,
|
||||
@@ -650,17 +659,17 @@ void ParseManifest(NSLocationType aType,
|
||||
}
|
||||
|
||||
LogMessageWithContext(
|
||||
@ -1807,37 +1807,37 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
|
||||
+ stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad || stDesktop == eBad ||
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
stTablet == eBad ||
|
||||
#endif
|
||||
#ifdef MOZ_BACKGROUNDTASKS
|
||||
stBackgroundTask == eBad ||
|
||||
#endif
|
||||
stABI == eBad || stProcess == eBad) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (directive->regfunc) {
|
||||
diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
|
||||
--- a/xpcom/components/moz.build
|
||||
+++ b/xpcom/components/moz.build
|
||||
@@ -62,16 +62,17 @@ LOCAL_INCLUDES += [
|
||||
'!..',
|
||||
'../base',
|
||||
'../build',
|
||||
'../ds',
|
||||
'/chrome',
|
||||
'/js/xpconnect/loader',
|
||||
'/layout/build',
|
||||
'/modules/libjar',
|
||||
+ '/toolkit/xre',
|
||||
@@ -66,16 +66,17 @@ LOCAL_INCLUDES += [
|
||||
"!..",
|
||||
"../base",
|
||||
"../build",
|
||||
"../ds",
|
||||
"/chrome",
|
||||
"/js/xpconnect/loader",
|
||||
"/layout/build",
|
||||
"/modules/libjar",
|
||||
+ "/toolkit/xre",
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
|
||||
CXXFLAGS += CONFIG['TK_CFLAGS']
|
||||
if CONFIG['MOZ_ENABLE_DBUS']:
|
||||
CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
|
||||
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
||||
CXXFLAGS += CONFIG["TK_CFLAGS"]
|
||||
if CONFIG["MOZ_ENABLE_DBUS"]:
|
||||
CXXFLAGS += CONFIG["MOZ_DBUS_GLIB_CFLAGS"]
|
||||
|
||||
include('/ipc/chromium/chromium-config.mozbuild')
|
||||
if CONFIG["MOZ_BACKGROUNDTASKS"]:
|
||||
diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
|
||||
--- a/xpcom/io/nsLocalFileUnix.cpp
|
||||
+++ b/xpcom/io/nsLocalFileUnix.cpp
|
||||
@@ -46,16 +46,17 @@
|
||||
@@ -53,16 +53,17 @@
|
||||
#include "prproces.h"
|
||||
#include "nsIDirectoryEnumerator.h"
|
||||
#include "nsSimpleEnumerator.h"
|
||||
@ -1855,7 +1855,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
|
||||
# include "prmem.h"
|
||||
# include "plbase64.h"
|
||||
|
||||
@@ -1898,62 +1899,77 @@ nsLocalFile::SetPersistentDescriptor(con
|
||||
@@ -2021,62 +2022,77 @@ nsLocalFile::SetPersistentDescriptor(con
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsLocalFile::Reveal() {
|
||||
@ -1907,7 +1907,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
|
||||
#endif
|
||||
+ if(nsKDEUtils::kdeSupport()) {
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING("REVEAL") );
|
||||
+ command.AppendElement( "REVEAL"_ns );
|
||||
+ command.AppendElement( mPath );
|
||||
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
|
||||
+ }
|
||||
@ -1927,7 +1927,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
|
||||
#ifdef MOZ_WIDGET_GTK
|
||||
+ if( nsKDEUtils::kdeSupport()) {
|
||||
+ nsTArray<nsCString> command;
|
||||
+ command.AppendElement( NS_LITERAL_CSTRING("OPEN") );
|
||||
+ command.AppendElement( "OPEN"_ns );
|
||||
+ command.AppendElement( mPath );
|
||||
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
|
||||
+ }
|
||||
@ -1938,4 +1938,4 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
|
||||
|
||||
return giovfs->ShowURIForInput(mPath);
|
||||
#elif defined(MOZ_WIDGET_ANDROID)
|
||||
// Try to get a mimetype, if this fails just use the file uri alone
|
||||
// Not supported on GeckoView
|
||||
|
34
mozilla-libavcodec58_91.patch
Normal file
34
mozilla-libavcodec58_91.patch
Normal file
@ -0,0 +1,34 @@
|
||||
# HG changeset patch
|
||||
# Parent e4abeadbbb7a0c63c17177f1d14ea04c77c6128e
|
||||
|
||||
diff --git a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
||||
--- a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
||||
+++ b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
||||
@@ -22,23 +22,27 @@ class FFmpegDecoderModule {
|
||||
static already_AddRefed<PlatformDecoderModule> Create(FFmpegLibWrapper*);
|
||||
};
|
||||
|
||||
static FFmpegLibWrapper sLibAV;
|
||||
|
||||
static const char* sLibs[] = {
|
||||
// clang-format off
|
||||
#if defined(XP_DARWIN)
|
||||
+ "libavcodec.58.134.dylib",
|
||||
+ "libavcodec.58.91.dylib",
|
||||
"libavcodec.58.dylib",
|
||||
"libavcodec.57.dylib",
|
||||
"libavcodec.56.dylib",
|
||||
"libavcodec.55.dylib",
|
||||
"libavcodec.54.dylib",
|
||||
"libavcodec.53.dylib",
|
||||
#else
|
||||
+ "libavcodec.so.58.134",
|
||||
+ "libavcodec.so.58.91",
|
||||
"libavcodec.so.58",
|
||||
"libavcodec-ffmpeg.so.58",
|
||||
"libavcodec-ffmpeg.so.57",
|
||||
"libavcodec-ffmpeg.so.56",
|
||||
"libavcodec.so.57",
|
||||
"libavcodec.so.56",
|
||||
"libavcodec.so.55",
|
||||
"libavcodec.so.54",
|
@ -3,33 +3,42 @@
|
||||
# Date 1558442915 -7200
|
||||
# Tue May 21 14:48:35 2019 +0200
|
||||
# Node ID 6bcf2dfebc1ea2aa34e5cc61152709fc8e409dc5
|
||||
# Parent 4c434d19d03d5461e54fa22dfb82eaed4cd6631b
|
||||
# Parent bd5d1f49975deb730064a16b3079edb53c4a5f84
|
||||
Do not use gconf for proxy settings if not running within Gnome
|
||||
Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||
===================================================================
|
||||
RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v
|
||||
retrieving revision 1.1
|
||||
|
||||
diff -r 4c434d19d03d -r 6bcf2dfebc1e toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp Wed Jun 12 17:43:18 2019 +0000
|
||||
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp Tue May 21 14:48:35 2019 +0200
|
||||
@@ -55,11 +55,14 @@
|
||||
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||
@@ -49,20 +49,24 @@ NS_IMETHODIMP
|
||||
nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
|
||||
// dbus prevents us from being threadsafe, but this routine should not block
|
||||
// anyhow
|
||||
*aMainThreadOnly = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void nsUnixSystemProxySettings::Init() {
|
||||
- mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
|
||||
- if (mGSettings) {
|
||||
- mGSettings->GetCollectionForSchema(
|
||||
- NS_LITERAL_CSTRING("org.gnome.system.proxy"),
|
||||
- getter_AddRefs(mProxySettings));
|
||||
- mGSettings->GetCollectionForSchema("org.gnome.system.proxy"_ns,
|
||||
- getter_AddRefs(mProxySettings));
|
||||
+ const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
|
||||
+ if (sessionType && !strcmp(sessionType, "gnome")) {
|
||||
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
|
||||
+ if (mGSettings) {
|
||||
+ mGSettings->GetCollectionForSchema(
|
||||
+ NS_LITERAL_CSTRING("org.gnome.system.proxy"),
|
||||
+ "org.gnome.system.proxy"_ns,
|
||||
+ getter_AddRefs(mProxySettings));
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
nsresult nsUnixSystemProxySettings::GetPACURI(nsACString& aResult) {
|
||||
if (mProxySettings) {
|
||||
nsCString proxyMode;
|
||||
// Check if mode is auto
|
||||
nsresult rv = mProxySettings->GetString("mode"_ns, proxyMode);
|
||||
|
@ -1,7 +1,7 @@
|
||||
# HG changeset patch
|
||||
# User Petr Cerny <pcerny@novell.com>
|
||||
# Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6
|
||||
# Parent 6ab277cf616dc2748e9855101100a97a6cec10a6
|
||||
# Parent 2361c5db1e70e358b2158325e07fa15bb4569c2c
|
||||
Bug 634334 - call to the ntlm_auth helper fails
|
||||
|
||||
diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
|
||||
|
@ -1,846 +0,0 @@
|
||||
diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild
|
||||
index 2081d0c683a4..641133bf1ea4 100644
|
||||
--- a/config/system-headers.mozbuild
|
||||
+++ b/config/system-headers.mozbuild
|
||||
@@ -314,6 +314,7 @@ system_headers = [
|
||||
'Gestalt.h',
|
||||
'getopt.h',
|
||||
'gio/gio.h',
|
||||
+ 'gio/gunixfdlist.h',
|
||||
'glibconfig.h',
|
||||
'glib.h',
|
||||
'glib-object.h',
|
||||
@@ -607,6 +608,7 @@ system_headers = [
|
||||
'Pgenerr.h',
|
||||
'PGenErr.h',
|
||||
'Ph.h',
|
||||
+ 'pipewire/pipewire.h',
|
||||
'pixman.h',
|
||||
'pk11func.h',
|
||||
'pk11pqg.h',
|
||||
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
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn
|
||||
@@ -158,7 +158,7 @@ if (rtc_include_tests) {
|
||||
if (is_linux) {
|
||||
if (rtc_use_pipewire) {
|
||||
pkg_config("pipewire") {
|
||||
- packages = [ "libpipewire-0.2" ]
|
||||
+ packages = [ "libpipewire-0.3" ]
|
||||
|
||||
defines = [ "WEBRTC_USE_PIPEWIRE" ]
|
||||
}
|
||||
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
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||
@@ -194,6 +194,30 @@ if CONFIG["OS_TARGET"] == "Linux":
|
||||
"/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc"
|
||||
]
|
||||
|
||||
+# PipeWire specific files
|
||||
+if CONFIG["OS_TARGET"] == "Linux":
|
||||
+
|
||||
+ DEFINES["WEBRTC_USE_PIPEWIRE"] = "1"
|
||||
+
|
||||
+ OS_LIBS += [
|
||||
+ "rt",
|
||||
+ "pipewire-0.3",
|
||||
+ "glib-2.0",
|
||||
+ "gio-2.0",
|
||||
+ "gobject-2.0"
|
||||
+ ]
|
||||
+
|
||||
+ CXXFLAGS += CONFIG['TK_CFLAGS']
|
||||
+ CXXFLAGS += [ "-I/usr/include/pipewire-0.3" ]
|
||||
+ CXXFLAGS += [ "-I/usr/include/spa-0.2" ]
|
||||
+
|
||||
+ UNIFIED_SOURCES += [
|
||||
+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
|
||||
+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
|
||||
+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc"
|
||||
+ ]
|
||||
+
|
||||
+
|
||||
if CONFIG["OS_TARGET"] == "NetBSD":
|
||||
|
||||
DEFINES["USE_X11"] = "1"
|
||||
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
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h
|
||||
@@ -141,7 +141,7 @@ class DesktopCaptureOptions {
|
||||
bool disable_effects_ = true;
|
||||
bool detect_updated_region_ = false;
|
||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||
- bool allow_pipewire_ = false;
|
||||
+ bool allow_pipewire_ = true;
|
||||
#endif
|
||||
};
|
||||
|
||||
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
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
@@ -15,8 +15,11 @@
|
||||
|
||||
#include <spa/param/format-utils.h>
|
||||
#include <spa/param/props.h>
|
||||
-#include <spa/param/video/raw-utils.h>
|
||||
-#include <spa/support/type-map.h>
|
||||
+
|
||||
+#include <linux/dma-buf.h>
|
||||
+#include <sys/mman.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+#include <sys/syscall.h>
|
||||
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
@@ -36,31 +39,36 @@ const char kSessionInterfaceName[] = "org.freedesktop.portal.Session";
|
||||
const char kRequestInterfaceName[] = "org.freedesktop.portal.Request";
|
||||
const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast";
|
||||
|
||||
-// static
|
||||
-void BaseCapturerPipeWire::OnStateChanged(void* data,
|
||||
- pw_remote_state old_state,
|
||||
- pw_remote_state state,
|
||||
- const char* error_message) {
|
||||
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||
- 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) {
|
||||
+ struct dma_buf_sync sync = { 0 };
|
||||
+
|
||||
+ sync.flags = start_or_end | DMA_BUF_SYNC_READ;
|
||||
+
|
||||
+ while(true) {
|
||||
+ int ret;
|
||||
+ ret = ioctl (fd, DMA_BUF_IOCTL_SYNC, &sync);
|
||||
+ if (ret == -1 && errno == EINTR) {
|
||||
+ continue;
|
||||
+ } else if (ret == -1) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to synchronize DMA buffer: " << g_strerror(errno);
|
||||
break;
|
||||
- case PW_REMOTE_STATE_UNCONNECTED:
|
||||
- RTC_LOG(LS_INFO) << "PipeWire remote state: unconnected.";
|
||||
+ } else {
|
||||
break;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
+// static
|
||||
+void BaseCapturerPipeWire::OnCoreError(void *data,
|
||||
+ uint32_t id,
|
||||
+ int seq,
|
||||
+ int res,
|
||||
+ const char *message) {
|
||||
+ RTC_LOG(LS_ERROR) << "core error: " << message;
|
||||
+}
|
||||
+
|
||||
// static
|
||||
void BaseCapturerPipeWire::OnStreamStateChanged(void* data,
|
||||
pw_stream_state old_state,
|
||||
@@ -73,76 +81,54 @@ void BaseCapturerPipeWire::OnStreamStateChanged(void* data,
|
||||
case PW_STREAM_STATE_ERROR:
|
||||
RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message;
|
||||
break;
|
||||
- case PW_STREAM_STATE_CONFIGURE:
|
||||
- pw_stream_set_active(that->pw_stream_, true);
|
||||
- break;
|
||||
- case PW_STREAM_STATE_UNCONNECTED:
|
||||
- case PW_STREAM_STATE_CONNECTING:
|
||||
- case PW_STREAM_STATE_READY:
|
||||
case PW_STREAM_STATE_PAUSED:
|
||||
case PW_STREAM_STATE_STREAMING:
|
||||
+ case PW_STREAM_STATE_UNCONNECTED:
|
||||
+ case PW_STREAM_STATE_CONNECTING:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
-void BaseCapturerPipeWire::OnStreamFormatChanged(void* data,
|
||||
- const struct spa_pod* format) {
|
||||
+void BaseCapturerPipeWire::OnStreamParamChanged(void *data, uint32_t id,
|
||||
+ const struct spa_pod *format) {
|
||||
BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||
RTC_DCHECK(that);
|
||||
|
||||
- RTC_LOG(LS_INFO) << "PipeWire stream format changed.";
|
||||
+ RTC_LOG(LS_INFO) << "PipeWire stream param changed.";
|
||||
|
||||
- if (!format) {
|
||||
- pw_stream_finish_format(that->pw_stream_, /*res=*/0, /*params=*/nullptr,
|
||||
- /*n_params=*/0);
|
||||
+ if (!format || id != SPA_PARAM_Format) {
|
||||
return;
|
||||
}
|
||||
|
||||
- that->spa_video_format_ = new spa_video_info_raw();
|
||||
- spa_format_video_raw_parse(format, that->spa_video_format_,
|
||||
- &that->pw_type_->format_video);
|
||||
+ spa_format_video_raw_parse(format, &that->spa_video_format_);
|
||||
|
||||
- auto width = that->spa_video_format_->size.width;
|
||||
- auto height = that->spa_video_format_->size.height;
|
||||
+ auto width = that->spa_video_format_.size.width;
|
||||
+ auto height = that->spa_video_format_.size.height;
|
||||
auto stride = SPA_ROUND_UP_N(width * kBytesPerPixel, 4);
|
||||
auto size = height * stride;
|
||||
|
||||
+ that->desktop_size_ = DesktopSize(width, height);
|
||||
+
|
||||
uint8_t buffer[1024] = {};
|
||||
auto builder = spa_pod_builder{buffer, sizeof(buffer)};
|
||||
|
||||
// Setup buffers and meta header for new format.
|
||||
- const struct spa_pod* params[2];
|
||||
- params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
|
||||
- &builder,
|
||||
- // id to enumerate buffer requirements
|
||||
- that->pw_core_type_->param.idBuffers,
|
||||
- that->pw_core_type_->param_buffers.Buffers,
|
||||
- // Size: specified as integer (i) and set to specified size
|
||||
- ":", that->pw_core_type_->param_buffers.size, "i", size,
|
||||
- // Stride: specified as integer (i) and set to specified stride
|
||||
- ":", that->pw_core_type_->param_buffers.stride, "i", stride,
|
||||
- // Buffers: specifies how many buffers we want to deal with, set as
|
||||
- // integer (i) where preferred number is 8, then allowed number is defined
|
||||
- // as range (r) from min and max values and it is undecided (u) to allow
|
||||
- // negotiation
|
||||
- ":", that->pw_core_type_->param_buffers.buffers, "iru", 8,
|
||||
- SPA_POD_PROP_MIN_MAX(1, 32),
|
||||
- // Align: memory alignment of the buffer, set as integer (i) to specified
|
||||
- // value
|
||||
- ":", that->pw_core_type_->param_buffers.align, "i", 16));
|
||||
- params[1] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
|
||||
- &builder,
|
||||
- // id to enumerate supported metadata
|
||||
- that->pw_core_type_->param.idMeta, that->pw_core_type_->param_meta.Meta,
|
||||
- // Type: specified as id or enum (I)
|
||||
- ":", that->pw_core_type_->param_meta.type, "I",
|
||||
- that->pw_core_type_->meta.Header,
|
||||
- // Size: size of the metadata, specified as integer (i)
|
||||
- ":", that->pw_core_type_->param_meta.size, "i",
|
||||
- sizeof(struct spa_meta_header)));
|
||||
-
|
||||
- pw_stream_finish_format(that->pw_stream_, /*res=*/0, params, /*n_params=*/2);
|
||||
+ const struct spa_pod* params[3];
|
||||
+ params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
+ SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
|
||||
+ SPA_PARAM_BUFFERS_size, SPA_POD_Int(size),
|
||||
+ SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride),
|
||||
+ SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(8, 1, 32)));
|
||||
+ params[1] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
+ SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
|
||||
+ SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header),
|
||||
+ SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header))));
|
||||
+ params[2] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
+ SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
|
||||
+ SPA_PARAM_META_type, SPA_POD_Id (SPA_META_VideoCrop),
|
||||
+ SPA_PARAM_META_size, SPA_POD_Int (sizeof(struct spa_meta_region))));
|
||||
+ pw_stream_update_params(that->pw_stream_, params, 3);
|
||||
}
|
||||
|
||||
// static
|
||||
@@ -150,15 +136,25 @@ void BaseCapturerPipeWire::OnStreamProcess(void* data) {
|
||||
BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||
RTC_DCHECK(that);
|
||||
|
||||
- pw_buffer* buf = nullptr;
|
||||
+ struct pw_buffer *next_buffer;
|
||||
+ struct pw_buffer *buffer = nullptr;
|
||||
+
|
||||
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
||||
+ while (next_buffer) {
|
||||
+ buffer = next_buffer;
|
||||
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
||||
|
||||
- if (!(buf = pw_stream_dequeue_buffer(that->pw_stream_))) {
|
||||
+ if (next_buffer)
|
||||
+ pw_stream_queue_buffer (that->pw_stream_, buffer);
|
||||
+ }
|
||||
+
|
||||
+ if (!buffer) {
|
||||
return;
|
||||
}
|
||||
|
||||
- that->HandleBuffer(buf);
|
||||
+ that->HandleBuffer(buffer);
|
||||
|
||||
- pw_stream_queue_buffer(that->pw_stream_, buf);
|
||||
+ pw_stream_queue_buffer(that->pw_stream_, buffer);
|
||||
}
|
||||
|
||||
BaseCapturerPipeWire::BaseCapturerPipeWire(CaptureSourceType source_type)
|
||||
@@ -169,38 +165,22 @@ BaseCapturerPipeWire::~BaseCapturerPipeWire() {
|
||||
pw_thread_loop_stop(pw_main_loop_);
|
||||
}
|
||||
|
||||
- if (pw_type_) {
|
||||
- delete pw_type_;
|
||||
- }
|
||||
-
|
||||
- if (spa_video_format_) {
|
||||
- delete spa_video_format_;
|
||||
- }
|
||||
-
|
||||
if (pw_stream_) {
|
||||
pw_stream_destroy(pw_stream_);
|
||||
}
|
||||
|
||||
- if (pw_remote_) {
|
||||
- pw_remote_destroy(pw_remote_);
|
||||
+ if (pw_core_) {
|
||||
+ pw_core_disconnect(pw_core_);
|
||||
}
|
||||
|
||||
- if (pw_core_) {
|
||||
- pw_core_destroy(pw_core_);
|
||||
+ if (pw_context_) {
|
||||
+ pw_context_destroy(pw_context_);
|
||||
}
|
||||
|
||||
if (pw_main_loop_) {
|
||||
pw_thread_loop_destroy(pw_main_loop_);
|
||||
}
|
||||
|
||||
- if (pw_loop_) {
|
||||
- pw_loop_destroy(pw_loop_);
|
||||
- }
|
||||
-
|
||||
- if (current_frame_) {
|
||||
- free(current_frame_);
|
||||
- }
|
||||
-
|
||||
if (start_request_signal_id_) {
|
||||
g_dbus_connection_signal_unsubscribe(connection_, start_request_signal_id_);
|
||||
}
|
||||
@@ -250,27 +230,35 @@ void BaseCapturerPipeWire::InitPortal() {
|
||||
void BaseCapturerPipeWire::InitPipeWire() {
|
||||
pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
|
||||
|
||||
- pw_loop_ = pw_loop_new(/*properties=*/nullptr);
|
||||
- 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_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0);
|
||||
+ if (!pw_context_) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to create PipeWire context";
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
- InitPipeWireTypes();
|
||||
+ pw_core_ = pw_context_connect(pw_context_, nullptr, 0);
|
||||
+ if (!pw_core_) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to connect PipeWire context";
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
// Initialize event handlers, remote end and stream-related.
|
||||
- pw_remote_events_.version = PW_VERSION_REMOTE_EVENTS;
|
||||
- pw_remote_events_.state_changed = &OnStateChanged;
|
||||
+ pw_core_events_.version = PW_VERSION_CORE_EVENTS;
|
||||
+ pw_core_events_.error = &OnCoreError;
|
||||
|
||||
pw_stream_events_.version = PW_VERSION_STREAM_EVENTS;
|
||||
pw_stream_events_.state_changed = &OnStreamStateChanged;
|
||||
- pw_stream_events_.format_changed = &OnStreamFormatChanged;
|
||||
+ pw_stream_events_.param_changed = &OnStreamParamChanged;
|
||||
pw_stream_events_.process = &OnStreamProcess;
|
||||
|
||||
- pw_remote_add_listener(pw_remote_, &spa_remote_listener_, &pw_remote_events_,
|
||||
- this);
|
||||
- pw_remote_connect_fd(pw_remote_, pw_fd_);
|
||||
+ pw_core_add_listener(pw_core_, &spa_core_listener_, &pw_core_events_, this);
|
||||
+
|
||||
+ pw_stream_ = CreateReceivingStream();
|
||||
+ if (!pw_stream_) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to create PipeWire stream";
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
if (pw_thread_loop_start(pw_main_loop_) < 0) {
|
||||
RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop";
|
||||
@@ -278,81 +266,132 @@ void BaseCapturerPipeWire::InitPipeWire() {
|
||||
}
|
||||
}
|
||||
|
||||
-void BaseCapturerPipeWire::InitPipeWireTypes() {
|
||||
- spa_type_map* map = pw_core_type_->map;
|
||||
- pw_type_ = new PipeWireType();
|
||||
-
|
||||
- spa_type_media_type_map(map, &pw_type_->media_type);
|
||||
- spa_type_media_subtype_map(map, &pw_type_->media_subtype);
|
||||
- spa_type_format_video_map(map, &pw_type_->format_video);
|
||||
- spa_type_video_format_map(map, &pw_type_->video_format);
|
||||
-}
|
||||
-
|
||||
-void BaseCapturerPipeWire::CreateReceivingStream() {
|
||||
+pw_stream* BaseCapturerPipeWire::CreateReceivingStream() {
|
||||
spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1};
|
||||
- spa_rectangle pwScreenBounds =
|
||||
- spa_rectangle{static_cast<uint32_t>(desktop_size_.width()),
|
||||
- static_cast<uint32_t>(desktop_size_.height())};
|
||||
+ spa_rectangle pwMaxScreenBounds = spa_rectangle{INT32_MAX, INT32_MAX};
|
||||
|
||||
- spa_fraction pwFrameRateMin = spa_fraction{0, 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",
|
||||
- /*end of varargs*/ nullptr);
|
||||
- pw_stream_ = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps);
|
||||
+ if (!stream) {
|
||||
+ RTC_LOG(LS_ERROR) << "Could not create receiving stream.";
|
||||
+ return nullptr;
|
||||
+ }
|
||||
|
||||
uint8_t buffer[1024] = {};
|
||||
- const spa_pod* params[1];
|
||||
- spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)};
|
||||
- params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
|
||||
- &builder,
|
||||
- // id to enumerate formats
|
||||
- pw_core_type_->param.idEnumFormat, pw_core_type_->spa_format, "I",
|
||||
- pw_type_->media_type.video, "I", pw_type_->media_subtype.raw,
|
||||
- // Video format: specified as id or enum (I), preferred format is BGRx,
|
||||
- // then allowed formats are enumerated (e) and the format is undecided (u)
|
||||
- // to allow negotiation
|
||||
- ":", pw_type_->format_video.format, "Ieu", pw_type_->video_format.BGRx,
|
||||
- SPA_POD_PROP_ENUM(2, pw_type_->video_format.RGBx,
|
||||
- pw_type_->video_format.BGRx),
|
||||
- // Video size: specified as rectangle (R), preferred size is specified as
|
||||
- // first parameter, then allowed size is defined as range (r) from min and
|
||||
- // max values and the format is undecided (u) to allow negotiation
|
||||
- ":", pw_type_->format_video.size, "Rru", &pwScreenBounds, 2,
|
||||
- &pwMinScreenBounds, &pwScreenBounds,
|
||||
- // Frame rate: specified as fraction (F) and set to minimum frame rate
|
||||
- // value
|
||||
- ":", pw_type_->format_video.framerate, "F", &pwFrameRateMin,
|
||||
- // Max frame rate: specified as fraction (F), preferred frame rate is set
|
||||
- // to maximum value, then allowed frame rate is defined as range (r) from
|
||||
- // min and max values and it is undecided (u) to allow negotiation
|
||||
- ":", pw_type_->format_video.max_framerate, "Fru", &pwFrameRateMax, 2,
|
||||
- &pwFrameRateMin, &pwFrameRateMax));
|
||||
-
|
||||
- pw_stream_add_listener(pw_stream_, &spa_stream_listener_, &pw_stream_events_,
|
||||
- this);
|
||||
+ const spa_pod* params[2];
|
||||
+ spa_pod_builder builder = SPA_POD_BUILDER_INIT(buffer, sizeof (buffer));
|
||||
+
|
||||
+ params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
+ SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||
+ SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),
|
||||
+ SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
|
||||
+ SPA_FORMAT_VIDEO_format, SPA_POD_CHOICE_ENUM_Id(5, SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_RGBx, SPA_VIDEO_FORMAT_RGBA,
|
||||
+ SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA),
|
||||
+ SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwMinScreenBounds,
|
||||
+ &pwMinScreenBounds,
|
||||
+ &pwMaxScreenBounds),
|
||||
+ 0));
|
||||
+ pw_stream_add_listener(stream, &spa_stream_listener_, &pw_stream_events_, this);
|
||||
+
|
||||
pw_stream_flags flags = static_cast<pw_stream_flags>(
|
||||
- PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE |
|
||||
- PW_STREAM_FLAG_MAP_BUFFERS);
|
||||
- if (pw_stream_connect(pw_stream_, PW_DIRECTION_INPUT, /*port_path=*/nullptr,
|
||||
- flags, params,
|
||||
- /*n_params=*/1) != 0) {
|
||||
+ PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE);
|
||||
+
|
||||
+ if (pw_stream_connect(stream, PW_DIRECTION_INPUT, pw_stream_node_id_, PW_STREAM_FLAG_AUTOCONNECT, params, 1) != 0) {
|
||||
RTC_LOG(LS_ERROR) << "Could not connect receiving stream.";
|
||||
portal_init_failed_ = true;
|
||||
- return;
|
||||
}
|
||||
+
|
||||
+ return stream;
|
||||
}
|
||||
|
||||
void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
|
||||
+ struct spa_meta_region* video_crop;
|
||||
spa_buffer* spaBuffer = buffer->buffer;
|
||||
- void* src = nullptr;
|
||||
+ uint8_t *map = nullptr;
|
||||
+ uint8_t* src = nullptr;
|
||||
+ uint8_t* dst = nullptr;
|
||||
+
|
||||
+ if (spaBuffer->datas[0].chunk->size == 0) {
|
||||
+ map = nullptr;
|
||||
+ src = nullptr;
|
||||
+ } else if (spaBuffer->datas[0].type == SPA_DATA_MemFd) {
|
||||
+ map = static_cast<uint8_t*>(mmap(
|
||||
+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||
+ PROT_READ, MAP_PRIVATE, spaBuffer->datas[0].fd, 0));
|
||||
+
|
||||
+ if (map == MAP_FAILED) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
||||
+ } else if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
|
||||
+ int fd;
|
||||
+ fd = spaBuffer->datas[0].fd;
|
||||
|
||||
- if (!(src = spaBuffer->datas[0].data)) {
|
||||
+ map = static_cast<uint8_t*>(mmap(
|
||||
+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||
+ PROT_READ, MAP_PRIVATE, fd, 0));
|
||||
+
|
||||
+ if (map == MAP_FAILED) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ SyncDmaBuf(fd, DMA_BUF_SYNC_START);
|
||||
+
|
||||
+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
||||
+ } else if (spaBuffer->datas[0].type == SPA_DATA_MemPtr) {
|
||||
+ map = nullptr;
|
||||
+ src = static_cast<uint8_t*>(spaBuffer->datas[0].data);
|
||||
+ } else {
|
||||
return;
|
||||
}
|
||||
|
||||
- uint32_t maxSize = spaBuffer->datas[0].maxsize;
|
||||
- int32_t srcStride = spaBuffer->datas[0].chunk->stride;
|
||||
+ if (!src) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ DesktopSize prev_crop_size = DesktopSize(0, 0);
|
||||
+ if (video_crop_size_initialized_) {
|
||||
+ prev_crop_size = video_crop_size_;
|
||||
+ }
|
||||
+
|
||||
+ if ((video_crop = static_cast<struct spa_meta_region*>(
|
||||
+ spa_buffer_find_meta_data(spaBuffer, SPA_META_VideoCrop, sizeof(*video_crop))))) {
|
||||
+ RTC_DCHECK(video_crop->region.size.width <= desktop_size_.width() &&
|
||||
+ video_crop->region.size.height <= desktop_size_.height());
|
||||
+ if ((video_crop->region.size.width != desktop_size_.width() ||
|
||||
+ video_crop->region.size.height != desktop_size_.height()) && video_crop->region.size.width && video_crop->region.size.height) {
|
||||
+ video_crop_size_ = DesktopSize(video_crop->region.size.width, video_crop->region.size.height);
|
||||
+ video_crop_size_initialized_ = true;
|
||||
+ } else {
|
||||
+ video_crop_size_initialized_ = false;
|
||||
+ }
|
||||
+ } else {
|
||||
+ video_crop_size_initialized_ = false;
|
||||
+ }
|
||||
+
|
||||
+ size_t frame_size;
|
||||
+ if (video_crop_size_initialized_) {
|
||||
+ frame_size =
|
||||
+ video_crop_size_.width() * video_crop_size_.height() * kBytesPerPixel;
|
||||
+ } else {
|
||||
+ frame_size =
|
||||
+ desktop_size_.width() * desktop_size_.height() * kBytesPerPixel;
|
||||
+ }
|
||||
+
|
||||
+ if (!current_frame_ ||
|
||||
+ (video_crop_size_initialized_ && !video_crop_size_.equals(prev_crop_size))) {
|
||||
+ current_frame_ = std::make_unique<uint8_t[]>(frame_size);
|
||||
+ }
|
||||
+ RTC_DCHECK(current_frame_ != nullptr);
|
||||
+
|
||||
+ const int32_t dstStride = video_crop_size_initialized_
|
||||
+ ? video_crop_size_.width() * kBytesPerPixel
|
||||
+ : desktop_size_.width() * kBytesPerPixel;
|
||||
+ const int32_t srcStride = spaBuffer->datas[0].chunk->stride;
|
||||
+
|
||||
if (srcStride != (desktop_size_.width() * kBytesPerPixel)) {
|
||||
RTC_LOG(LS_ERROR) << "Got buffer with stride different from screen stride: "
|
||||
<< srcStride
|
||||
@@ -361,21 +400,40 @@ void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
|
||||
return;
|
||||
}
|
||||
|
||||
- if (!current_frame_) {
|
||||
- current_frame_ = static_cast<uint8_t*>(malloc(maxSize));
|
||||
+ dst = current_frame_.get();
|
||||
+
|
||||
+ // Adjust source content based on crop video position
|
||||
+ if (video_crop_size_initialized_ &&
|
||||
+ (video_crop->region.position.y + video_crop_size_.height() <= desktop_size_.height())) {
|
||||
+ for (int i = 0; i < video_crop->region.position.y; ++i) {
|
||||
+ src += srcStride;
|
||||
+ }
|
||||
+ }
|
||||
+ const int xOffset =
|
||||
+ video_crop_size_initialized_ && (video_crop->region.position.x + video_crop_size_.width() <=
|
||||
+ desktop_size_.width())
|
||||
+ ? video_crop->region.position.x * kBytesPerPixel
|
||||
+ : 0;
|
||||
+ const int height = video_crop_size_initialized_ ? video_crop_size_.height() : desktop_size_.height();
|
||||
+ for (int i = 0; i < height; ++i) {
|
||||
+ // Adjust source content based on crop video position if needed
|
||||
+ src += xOffset;
|
||||
+ std::memcpy(dst, src, dstStride);
|
||||
+ // 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 == SPA_VIDEO_FORMAT_RGBx ||
|
||||
+ spa_video_format_.format == SPA_VIDEO_FORMAT_RGBA) {
|
||||
+ ConvertRGBxToBGRx(dst, dstStride);
|
||||
+ }
|
||||
+ src += srcStride - xOffset;
|
||||
+ 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 (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
|
||||
+ SyncDmaBuf(spaBuffer->datas[0].fd, DMA_BUF_SYNC_END);
|
||||
+ }
|
||||
+ munmap(map, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -725,10 +783,7 @@ void BaseCapturerPipeWire::OnStartRequestResponseSignal(
|
||||
g_variant_get(variant, "(u@a{sv})", &stream_id, &options);
|
||||
RTC_DCHECK(options != nullptr);
|
||||
|
||||
- g_variant_lookup(options, "size", "(ii)", &width, &height);
|
||||
-
|
||||
- that->desktop_size_.set(width, height);
|
||||
-
|
||||
+ that->pw_stream_node_id_ = stream_id;
|
||||
g_variant_unref(options);
|
||||
g_variant_unref(variant);
|
||||
}
|
||||
@@ -813,10 +868,15 @@ void BaseCapturerPipeWire::CaptureFrame() {
|
||||
return;
|
||||
}
|
||||
|
||||
- std::unique_ptr<DesktopFrame> result(new BasicDesktopFrame(desktop_size_));
|
||||
+ DesktopSize frame_size = desktop_size_;
|
||||
+ if (video_crop_size_initialized_) {
|
||||
+ frame_size = video_crop_size_;
|
||||
+ }
|
||||
+
|
||||
+ std::unique_ptr<DesktopFrame> result(new BasicDesktopFrame(frame_size));
|
||||
result->CopyPixelsFrom(
|
||||
- current_frame_, (desktop_size_.width() * kBytesPerPixel),
|
||||
- DesktopRect::MakeWH(desktop_size_.width(), desktop_size_.height()));
|
||||
+ current_frame_.get(), (frame_size.width() * kBytesPerPixel),
|
||||
+ DesktopRect::MakeWH(frame_size.width(), frame_size.height()));
|
||||
if (!result) {
|
||||
callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
|
||||
return;
|
||||
@@ -837,4 +897,22 @@ bool BaseCapturerPipeWire::SelectSource(SourceId id) {
|
||||
return true;
|
||||
}
|
||||
|
||||
+// static
|
||||
+std::unique_ptr<DesktopCapturer>
|
||||
+BaseCapturerPipeWire::CreateRawScreenCapturer(
|
||||
+ const DesktopCaptureOptions& options) {
|
||||
+ std::unique_ptr<BaseCapturerPipeWire> capturer =
|
||||
+ std::make_unique<BaseCapturerPipeWire>(BaseCapturerPipeWire::CaptureSourceType::kAny);
|
||||
+ return std::move(capturer);}
|
||||
+
|
||||
+// static
|
||||
+std::unique_ptr<DesktopCapturer>
|
||||
+BaseCapturerPipeWire::CreateRawWindowCapturer(
|
||||
+ const DesktopCaptureOptions& options) {
|
||||
+
|
||||
+ std::unique_ptr<BaseCapturerPipeWire> capturer =
|
||||
+ std::make_unique<BaseCapturerPipeWire>(BaseCapturerPipeWire::CaptureSourceType::kAny);
|
||||
+ return std::move(capturer);
|
||||
+}
|
||||
+
|
||||
} // 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
|
||||
index 56b101acbaa6..de54157d1a2a 100644
|
||||
--- 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
|
||||
@@ -22,17 +22,13 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
-class PipeWireType {
|
||||
- public:
|
||||
- spa_type_media_type media_type;
|
||||
- spa_type_media_subtype media_subtype;
|
||||
- spa_type_format_video format_video;
|
||||
- spa_type_video_format video_format;
|
||||
-};
|
||||
-
|
||||
class BaseCapturerPipeWire : public DesktopCapturer {
|
||||
public:
|
||||
- enum CaptureSourceType { Screen = 1, Window };
|
||||
+ enum CaptureSourceType : uint32_t {
|
||||
+ kScreen = 0b01,
|
||||
+ kWindow = 0b10,
|
||||
+ kAny = 0b11
|
||||
+ };
|
||||
|
||||
explicit BaseCapturerPipeWire(CaptureSourceType source_type);
|
||||
~BaseCapturerPipeWire() override;
|
||||
@@ -43,28 +39,32 @@ class BaseCapturerPipeWire : public DesktopCapturer {
|
||||
bool GetSourceList(SourceList* sources) override;
|
||||
bool SelectSource(SourceId id) override;
|
||||
|
||||
+ static std::unique_ptr<DesktopCapturer> CreateRawScreenCapturer(
|
||||
+ const DesktopCaptureOptions& options);
|
||||
+
|
||||
+ static std::unique_ptr<DesktopCapturer> CreateRawWindowCapturer(
|
||||
+ const DesktopCaptureOptions& options);
|
||||
+
|
||||
private:
|
||||
// PipeWire types -->
|
||||
+ pw_context* pw_context_ = nullptr;
|
||||
pw_core* pw_core_ = nullptr;
|
||||
- pw_type* pw_core_type_ = nullptr;
|
||||
pw_stream* pw_stream_ = nullptr;
|
||||
- pw_remote* pw_remote_ = nullptr;
|
||||
- pw_loop* pw_loop_ = nullptr;
|
||||
pw_thread_loop* pw_main_loop_ = nullptr;
|
||||
- PipeWireType* pw_type_ = nullptr;
|
||||
|
||||
+ spa_hook spa_core_listener_ = {};
|
||||
spa_hook spa_stream_listener_ = {};
|
||||
- spa_hook spa_remote_listener_ = {};
|
||||
|
||||
+ pw_core_events pw_core_events_ = {};
|
||||
pw_stream_events pw_stream_events_ = {};
|
||||
- pw_remote_events pw_remote_events_ = {};
|
||||
|
||||
- spa_video_info_raw* spa_video_format_ = nullptr;
|
||||
+ struct spa_video_info_raw spa_video_format_;
|
||||
|
||||
+ guint32 pw_stream_node_id_ = 0;
|
||||
gint32 pw_fd_ = -1;
|
||||
|
||||
CaptureSourceType capture_source_type_ =
|
||||
- BaseCapturerPipeWire::CaptureSourceType::Screen;
|
||||
+ BaseCapturerPipeWire::CaptureSourceType::kAny;
|
||||
|
||||
// <-- end of PipeWire types
|
||||
|
||||
@@ -78,33 +78,37 @@ class BaseCapturerPipeWire : public DesktopCapturer {
|
||||
guint sources_request_signal_id_ = 0;
|
||||
guint start_request_signal_id_ = 0;
|
||||
|
||||
+ bool video_crop_size_initialized_ = false;
|
||||
+ DesktopSize video_crop_size_;;
|
||||
DesktopSize desktop_size_ = {};
|
||||
DesktopCaptureOptions options_ = {};
|
||||
|
||||
- uint8_t* current_frame_ = nullptr;
|
||||
+ std::unique_ptr<uint8_t[]> current_frame_;
|
||||
Callback* callback_ = nullptr;
|
||||
|
||||
bool portal_init_failed_ = false;
|
||||
|
||||
void InitPortal();
|
||||
void InitPipeWire();
|
||||
- void InitPipeWireTypes();
|
||||
|
||||
- void CreateReceivingStream();
|
||||
+ pw_stream* CreateReceivingStream();
|
||||
void HandleBuffer(pw_buffer* buffer);
|
||||
|
||||
void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size);
|
||||
|
||||
- static void OnStateChanged(void* data,
|
||||
- pw_remote_state old_state,
|
||||
- pw_remote_state state,
|
||||
- const char* error);
|
||||
+ static void SyncDmaBuf(int fd, uint64_t start_or_end);
|
||||
+ static void OnCoreError(void *data,
|
||||
+ uint32_t id,
|
||||
+ int seq,
|
||||
+ int res,
|
||||
+ const char *message);
|
||||
+ static void OnStreamParamChanged(void *data,
|
||||
+ uint32_t id,
|
||||
+ const struct spa_pod *format);
|
||||
static void OnStreamStateChanged(void* data,
|
||||
pw_stream_state old_state,
|
||||
pw_stream_state state,
|
||||
const char* error_message);
|
||||
-
|
||||
- static void OnStreamFormatChanged(void* data, const struct spa_pod* format);
|
||||
static void OnStreamProcess(void* data);
|
||||
static void OnNewBuffer(void* data, uint32_t id);
|
||||
|
||||
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
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
||||
@@ -15,7 +15,7 @@
|
||||
namespace webrtc {
|
||||
|
||||
ScreenCapturerPipeWire::ScreenCapturerPipeWire()
|
||||
- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::Screen) {}
|
||||
+ : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kScreen) {}
|
||||
ScreenCapturerPipeWire::~ScreenCapturerPipeWire() {}
|
||||
|
||||
// static
|
||||
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
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
||||
@@ -15,7 +15,7 @@
|
||||
namespace webrtc {
|
||||
|
||||
WindowCapturerPipeWire::WindowCapturerPipeWire()
|
||||
- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::Window) {}
|
||||
+ : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kWindow) {}
|
||||
WindowCapturerPipeWire::~WindowCapturerPipeWire() {}
|
||||
|
||||
// static
|
||||
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
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
||||
@@ -26,7 +26,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
|
||||
const DesktopCaptureOptions& options) {
|
||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
||||
- return ScreenCapturerPipeWire::CreateRawScreenCapturer(options);
|
||||
+ return BaseCapturerPipeWire::CreateRawScreenCapturer(options);
|
||||
}
|
||||
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
||||
|
||||
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
|
||||
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
||||
@@ -26,7 +26,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
|
||||
const DesktopCaptureOptions& options) {
|
||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
||||
- return WindowCapturerPipeWire::CreateRawWindowCapturer(options);
|
||||
+ return BaseCapturerPipeWire::CreateRawWindowCapturer(options);
|
||||
}
|
||||
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
||||
|
@ -1,30 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User msirringhaus@suse.de
|
||||
# Date 1558452418 -7200
|
||||
# Tue May 21 17:26:58 2019 +0200
|
||||
# Node ID 6cd963b6c82ea6629aaf4050851789b78f310338
|
||||
# Parent 010a35335b4e45e222b9efdbda24fd1963202ecf
|
||||
imported patch mozilla-ppc-altivec_static_inline.patch
|
||||
|
||||
diff --git a/gfx/qcms/transform-altivec.cpp b/gfx/qcms/transform-altivec.cpp
|
||||
--- a/gfx/qcms/transform-altivec.cpp
|
||||
+++ b/gfx/qcms/transform-altivec.cpp
|
||||
@@ -25,17 +25,17 @@
|
||||
|
||||
#include "qcmsint.h"
|
||||
|
||||
#define FLOATSCALE (float)(PRECACHE_OUTPUT_SIZE)
|
||||
#define CLAMPMAXVAL (((float) (PRECACHE_OUTPUT_SIZE - 1)) / PRECACHE_OUTPUT_SIZE)
|
||||
static const ALIGN float floatScaleX4 = FLOATSCALE;
|
||||
static const ALIGN float clampMaxValueX4 = CLAMPMAXVAL;
|
||||
|
||||
-inline vector float load_aligned_float(float *dataPtr)
|
||||
+static inline vector float load_aligned_float(float *dataPtr)
|
||||
{
|
||||
vector float data = vec_lde(0, dataPtr);
|
||||
vector unsigned char moveToStart = vec_lvsl(0, dataPtr);
|
||||
return vec_perm(data, data, moveToStart);
|
||||
}
|
||||
|
||||
template <size_t kRIndex, size_t kGIndex, size_t kBIndex, size_t kAIndex = NO_A_INDEX>
|
||||
static void qcms_transform_data_template_lut_altivec(const qcms_transform *transform,
|
@ -1,54 +1,28 @@
|
||||
# HG changeset patch
|
||||
# User msirringhaus@suse.de
|
||||
# Date 1560754926 -7200
|
||||
# Mon Jun 17 09:02:06 2019 +0200
|
||||
# Node ID 428161c3b9599083e1b8710eda1760f1f707ab11
|
||||
# Parent fa1cf8b9cb4efdf89fe19e543fb54272b726a353
|
||||
#Description: reduce the rust debuginfo level on selected architectures where
|
||||
# compiling with debuginfo=2 causes the OOM killer to interrupt the build on
|
||||
# launchpad builders. Initially this was only on 32 bit architectures, but with
|
||||
# firefox 63 it started happening frequently on arm64 and ppc64el too.
|
||||
|
||||
diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
|
||||
--- a/build/moz.configure/toolchain.configure
|
||||
+++ b/build/moz.configure/toolchain.configure
|
||||
@@ -1861,18 +1861,18 @@ imply_option('RUSTC_OPT_LEVEL', '2', whe
|
||||
@depends('RUSTC_OPT_LEVEL', moz_optimize)
|
||||
def rustc_opt_level(opt_level_option, moz_optimize):
|
||||
if opt_level_option:
|
||||
return opt_level_option[0]
|
||||
else:
|
||||
return '1' if moz_optimize.optimize else '0'
|
||||
|
||||
|
||||
-@depends(rustc_opt_level, debug_rust, '--enable-debug-symbols', '--enable-frame-pointers')
|
||||
-def rust_compile_flags(opt_level, debug_rust, debug_symbols, frame_pointers):
|
||||
+@depends(rustc_opt_level, debug_rust, '--enable-debug-symbols', '--enable-frame-pointers', host)
|
||||
+def rust_compile_flags(opt_level, debug_rust, debug_symbols, frame_pointers, host):
|
||||
diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure
|
||||
--- a/build/moz.configure/rust.configure
|
||||
+++ b/build/moz.configure/rust.configure
|
||||
@@ -610,6 +610,7 @@ set_config("CARGO_PROFILE_DEV_OPT_LEVEL"
|
||||
"--enable-frame-pointers",
|
||||
path_remapping,
|
||||
path_remappings,
|
||||
+ host
|
||||
)
|
||||
def rust_compile_flags(
|
||||
opt_level,
|
||||
@@ -619,6 +620,7 @@ def rust_compile_flags(
|
||||
frame_pointers,
|
||||
path_remapping,
|
||||
path_remappings,
|
||||
+ host
|
||||
):
|
||||
# Cargo currently supports only two interesting profiles for building:
|
||||
# development and release. Those map (roughly) to --enable-debug and
|
||||
# --disable-debug in Gecko, respectively.
|
||||
#
|
||||
# But we'd also like to support an additional axis of control for
|
||||
# optimization level. Since Cargo only supports 2 profiles, we're in
|
||||
# a bit of a bind.
|
||||
#
|
||||
@@ -1885,16 +1885,18 @@ def rust_compile_flags(opt_level, debug_
|
||||
|
||||
# opt-level=0 implies -C debug-assertions, which may not be desired
|
||||
# unless Rust debugging is enabled.
|
||||
if opt_level == '0' and not debug_rust:
|
||||
debug_assertions = False
|
||||
@@ -642,6 +644,8 @@ def rust_compile_flags(
|
||||
|
||||
if debug_symbols:
|
||||
debug_info = '2'
|
||||
+# if host.bitness == 32 or host.cpu == 'aarch64' or host.cpu == 'ppc64': # Just reduce debug_info for all archs
|
||||
+ debug_info = '1'
|
||||
debug_info = "2"
|
||||
+ if host.bitness == 32 or host.cpu == 'aarch64' or host.cpu == 'ppc64' or host.cpu == 's390x':
|
||||
+ debug_info = '1'
|
||||
|
||||
opts = []
|
||||
|
||||
if opt_level is not None:
|
||||
opts.append('opt-level=%s' % opt_level)
|
||||
if debug_assertions is not None:
|
||||
opts.append('debug-assertions=%s' %
|
||||
('yes' if debug_assertions else 'no'))
|
||||
|
@ -3,13 +3,18 @@
|
||||
# Date 1558452408 -7200
|
||||
# Tue May 21 17:26:48 2019 +0200
|
||||
# Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4
|
||||
# Parent a3cc550d25e3a04d906f516928cbcbe50efd585e
|
||||
# Parent cb0089687ab899846b8229c3741261d50101340e
|
||||
[mq]: mozilla-s390-context.patch
|
||||
|
||||
diff -r a3cc550d25e3 -r 602e92722e76 js/src/wasm/WasmSignalHandlers.cpp
|
||||
--- a/js/src/wasm/WasmSignalHandlers.cpp Tue May 21 17:22:06 2019 +0200
|
||||
+++ b/js/src/wasm/WasmSignalHandlers.cpp Tue May 21 17:26:48 2019 +0200
|
||||
@@ -154,6 +154,10 @@
|
||||
diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
|
||||
--- a/js/src/wasm/WasmSignalHandlers.cpp
|
||||
+++ b/js/src/wasm/WasmSignalHandlers.cpp
|
||||
@@ -150,16 +150,20 @@ using mozilla::DebugOnly;
|
||||
# define FP_sig(p) ((p)->uc_mcontext.mc_fp)
|
||||
# define SP_sig(p) ((p)->uc_mcontext.mc_i7)
|
||||
# endif
|
||||
# if defined(__linux__) && (defined(__ppc64__) || defined(__PPC64__) || \
|
||||
defined(__ppc64le__) || defined(__PPC64LE__))
|
||||
# define R01_sig(p) ((p)->uc_mcontext.gp_regs[1])
|
||||
# define R32_sig(p) ((p)->uc_mcontext.gp_regs[32])
|
||||
# endif
|
||||
@ -20,7 +25,17 @@ diff -r a3cc550d25e3 -r 602e92722e76 js/src/wasm/WasmSignalHandlers.cpp
|
||||
#elif defined(__NetBSD__)
|
||||
# define EIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EIP])
|
||||
# define EBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EBP])
|
||||
@@ -385,8 +389,13 @@
|
||||
# define ESP_sig(p) ((p)->uc_mcontext.__gregs[_REG_ESP])
|
||||
# define RIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RIP])
|
||||
# define RSP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RSP])
|
||||
# define RBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RBP])
|
||||
# define R11_sig(p) ((p)->uc_mcontext.__gregs[_REG_R11])
|
||||
@@ -381,18 +385,23 @@ struct macos_arm_context {
|
||||
# define FP_sig(p) RFP_sig(p)
|
||||
# define SP_sig(p) RSP_sig(p)
|
||||
# define LR_sig(p) R31_sig(p)
|
||||
#elif defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \
|
||||
defined(__PPC64LE__)
|
||||
# define PC_sig(p) R32_sig(p)
|
||||
# define SP_sig(p) R01_sig(p)
|
||||
# define FP_sig(p) R01_sig(p)
|
||||
@ -34,3 +49,8 @@ diff -r a3cc550d25e3 -r 602e92722e76 js/src/wasm/WasmSignalHandlers.cpp
|
||||
static void SetContextPC(CONTEXT* context, uint8_t* pc) {
|
||||
#ifdef PC_sig
|
||||
*reinterpret_cast<uint8_t**>(&PC_sig(context)) = pc;
|
||||
#else
|
||||
MOZ_CRASH();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1,16 +1,49 @@
|
||||
From: meissner@suse.com
|
||||
From: meissner@suse.com, cgrobertson@suse.com
|
||||
Subject: allow Firefox to access addtional process information
|
||||
Reference: http://bugzilla.suse.com/show_bug.cgi?id=1167132
|
||||
References:
|
||||
http://bugzilla.suse.com/show_bug.cgi?id=1167132
|
||||
bsc#1174284 - Firefox tab just crashed in FIPS mode
|
||||
|
||||
Index: firefox-74.0/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
|
||||
===================================================================
|
||||
--- firefox-74.0.orig/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
|
||||
+++ firefox-74.0/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
|
||||
@@ -276,6 +276,7 @@ SandboxBrokerPolicyFactory::SandboxBroke
|
||||
diff --git a/security/sandbox/linux/Sandbox.cpp b/security/sandbox/linux/Sandbox.cpp
|
||||
--- a/security/sandbox/linux/Sandbox.cpp
|
||||
+++ b/security/sandbox/linux/Sandbox.cpp
|
||||
@@ -647,16 +647,17 @@ void SetMediaPluginSandbox(const char* a
|
||||
SANDBOX_LOG_ERROR("failed to open plugin file %s: %s", aFilePath,
|
||||
strerror(errno));
|
||||
MOZ_CRASH("failed while trying to open the plugin file ");
|
||||
}
|
||||
|
||||
auto files = new SandboxOpenedFiles();
|
||||
files->Add(std::move(plugin));
|
||||
files->Add("/dev/urandom", true);
|
||||
+ files->Add("/dev/random", true);
|
||||
files->Add("/etc/ld.so.cache"); // Needed for NSS in clearkey.
|
||||
files->Add("/sys/devices/system/cpu/cpu0/tsc_freq_khz");
|
||||
files->Add("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq");
|
||||
files->Add("/proc/cpuinfo"); // Info also available via CPUID instruction.
|
||||
files->Add("/proc/sys/crypto/fips_enabled"); // Needed for NSS in clearkey.
|
||||
#ifdef __i386__
|
||||
files->Add("/proc/self/auxv"); // Info also in process's address space.
|
||||
#endif
|
||||
diff --git a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
|
||||
--- a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
|
||||
+++ b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
|
||||
@@ -308,16 +308,18 @@ void SandboxBrokerPolicyFactory::InitCon
|
||||
policy->AddDir(rdwr, "/dev/dri");
|
||||
}
|
||||
|
||||
// Bug 1575985: WASM library sandbox needs RW access to /dev/null
|
||||
policy->AddPath(rdwr, "/dev/null");
|
||||
|
||||
// Read permissions
|
||||
policy->AddPath(rdonly, "/dev/urandom");
|
||||
+ policy->AddPath(rdonly, "/dev/random");
|
||||
+ policy->AddPath(rdonly, "/proc/sys/crypto/fips_enabled");
|
||||
policy->AddPath(rdonly, "/proc/cpuinfo");
|
||||
policy->AddPath(rdonly, "/proc/meminfo");
|
||||
policy->AddDir(rdonly, "/sys/devices/cpu");
|
||||
policy->AddDir(rdonly, "/sys/devices/system/cpu");
|
||||
policy->AddDir(rdonly, "/lib");
|
||||
policy->AddDir(rdonly, "/lib64");
|
||||
policy->AddDir(rdonly, "/usr/lib");
|
||||
policy->AddDir(rdonly, "/usr/lib32");
|
||||
|
@ -58,6 +58,8 @@ MOZ_DIST_BIN="%PREFIX"
|
||||
MOZ_DIST_LIB="%PROGDIR"
|
||||
MOZ_APPNAME="%APPNAME"
|
||||
MOZ_PROGRAM="$MOZ_DIST_LIB/$MOZ_APPNAME-bin"
|
||||
MOZ_LANGPACKS_DIR="$MOZ_DIST_LIB/langpacks"
|
||||
MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
|
||||
|
||||
MOZ_APP_LAUNCHER="$MOZ_DIST_LIB/$MOZ_APPNAME.sh"
|
||||
if [ "$0" = "$MOZ_APP_LAUNCHER" ]; then
|
||||
@ -91,6 +93,84 @@ if [ $WAYLAND_SUPPORTED -eq 1 ] && [ "$XDG_SESSION_TYPE" = "wayland" ]; then
|
||||
fi
|
||||
|
||||
##
|
||||
## Use D-Bus remote exclusively when there's Wayland display.
|
||||
##
|
||||
if [ "$WAYLAND_DISPLAY" ]; then
|
||||
export MOZ_DBUS_REMOTE=1
|
||||
fi
|
||||
|
||||
# xinput2 (boo#1173320)
|
||||
source /etc/os-release
|
||||
if [ "$ID" = "opensuse-tumbleweed" ]; then
|
||||
export MOZ_USE_XINPUT2=1
|
||||
fi
|
||||
|
||||
##
|
||||
## To disable the use of Firefox localization handling for
|
||||
## the home profile, set MOZ_DISABLE_LANGPACKS=1
|
||||
## in your environment before launching Firefox.
|
||||
## currently disabled by default since langpacks
|
||||
## are shipped as app sideloading addons
|
||||
##
|
||||
#
|
||||
MOZ_DISABLE_LANGPACKS=1
|
||||
export MOZ_DISABLE_LANGPACKS
|
||||
#
|
||||
|
||||
##
|
||||
## Automatically installed langpacks are tracked by .suse-langpack-install
|
||||
## config file.
|
||||
##
|
||||
SUSE_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.suse-langpack-install"
|
||||
|
||||
# MOZ_DISABLE_LANGPACKS disables language packs completely
|
||||
MOZILLA_DOWN=0
|
||||
if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then
|
||||
if [ -x $MOZ_PROGRAM ]; then
|
||||
# Is firefox running?
|
||||
/bin/pidof %APPNAME% > /dev/null 2>&1
|
||||
MOZILLA_DOWN=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
# Modify language pack configuration only when firefox is not running
|
||||
# and language packs are not disabled
|
||||
if [ $MOZILLA_DOWN -ne 0 ]; then
|
||||
# Clear already installed langpacks
|
||||
mkdir -p $MOZ_EXTENSIONS_PROFILE_DIR
|
||||
if [ -f $SUSE_LANGPACK_CONFIG ]; then
|
||||
rm `cat $SUSE_LANGPACK_CONFIG` > /dev/null 2>&1
|
||||
rm $SUSE_LANGPACK_CONFIG > /dev/null 2>&1
|
||||
# remove all empty langpacks dirs while they block installation of langpacks
|
||||
rmdir $MOZ_EXTENSIONS_PROFILE_DIR/langpack* > /dev/null 2>&1
|
||||
fi
|
||||
# Get locale from system
|
||||
CURRENT_LOCALE=$LC_ALL
|
||||
CURRENT_LOCALE=${CURRENT_LOCALE:-$LC_MESSAGES}
|
||||
CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG}
|
||||
# Try with a local variant first, then without a local variant
|
||||
SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g" | sed "s|\..*||g"`
|
||||
MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g" | sed "s|\..*||g"`
|
||||
function create_langpack_link() {
|
||||
local language=$*
|
||||
local langpack=langpack-${language}@firefox.mozilla.org.xpi
|
||||
if [ -f $MOZ_LANGPACKS_DIR/$langpack ]; then
|
||||
rm -rf $MOZ_EXTENSIONS_PROFILE_DIR/$langpack
|
||||
# If the target file is a symlink (the fallback langpack),
|
||||
# install the original file instead of the fallback one
|
||||
if [ -h $MOZ_LANGPACKS_DIR/$langpack ]; then
|
||||
langpack=`readlink $MOZ_LANGPACKS_DIR/$langpack`
|
||||
fi
|
||||
ln -s $MOZ_LANGPACKS_DIR/$langpack \
|
||||
$MOZ_EXTENSIONS_PROFILE_DIR/$langpack
|
||||
echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $SUSE_LANGPACK_CONFIG
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
create_langpack_link $MOZLOCALE || create_langpack_link $SHORTMOZLOCALE || true
|
||||
fi
|
||||
|
||||
|
||||
moz_debug=0
|
||||
script_args=""
|
||||
|
12
tar_stamps
12
tar_stamps
@ -1,10 +1,10 @@
|
||||
PRODUCT="thunderbird"
|
||||
CHANNEL="esr78"
|
||||
VERSION="78.13.0"
|
||||
CHANNEL="esr91"
|
||||
VERSION="91.0.1"
|
||||
VERSION_SUFFIX=""
|
||||
PREV_VERSION="78.12.0"
|
||||
PREV_VERSION="91.0"
|
||||
PREV_VERSION_SUFFIX=""
|
||||
#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
|
||||
RELEASE_REPO="https://hg.mozilla.org/releases/comm-esr78"
|
||||
RELEASE_TAG="adcfedf831da719455116546865f9a5faea848a6"
|
||||
RELEASE_TIMESTAMP="20210802223056"
|
||||
RELEASE_REPO="https://hg.mozilla.org/releases/comm-esr91"
|
||||
RELEASE_TAG="8c371f7adbc855a95bf2ff35477be78069319573"
|
||||
RELEASE_TIMESTAMP="20210816195200"
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b7e4076e5ce561b06ad9cd89005989ed71fd724ce83c4888cf569dc2930d90e9
|
||||
size 354497644
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEEQ2D+IQnEl2MYb44h6+QekPbxL20FAmEIsBIACgkQ6+QekPbx
|
||||
L21+Zw/9GZuxR+lTsacXeQFrlFwnQV5ygped8wa0hkrEqiPpMgNJGNqv9A41QuiO
|
||||
3UWD5oYe9aaeeXDYKosaMT8ULET30qugM4bkbgBgBL7QHuhLbnj9bxiRfqWBt+Em
|
||||
/64N2ip1+uyJdWs04TLp3pbH3aZ7VP9JrVdrdYvgWskPpFilHCuakns8+lBgqGFW
|
||||
myP8boWeK5P5rdjGVSf31Pgrr34ta/N9QBz3Ps5PcMc/jjtjxUx1YXQGhH3Jqum5
|
||||
O+x9uUBZGBj1PWxqK6bVz7DUu3YZFblPE18IhtYiFTlJBhwA47PNsY4WdXjDgwVh
|
||||
MECFY1QBOgyogU8LkoTxwxKoAJhxX1Wxh0wRJepovrWphD6iiyYG5D6sb5uaCzp1
|
||||
sA/Ij8U7aq5Sls18gO/BbyOQs5KNvjH6epYtKaDXEPfjJ+DaiuDg52J8M4vCejT/
|
||||
K+DSIoVajFUAO21LCrvBYt2bz5sKUArNiZXbVxZ7GpEfsR8ew+q5GbmFpwN0MUOv
|
||||
LUpVPdgctxTQV0bJo7DcmjxNpsU/kX7fHoBaAZXhDOKBkILtgLZU4H682eL8I1qL
|
||||
KQqADg3UXwtuQwHnpKRBMW/nlPbbwnxKN1Hl/q5JJ6rWHWw/mYmy4nuyyhk9t4IR
|
||||
71Hs870LyR81rBF3CuP4XeXizbQVbVtkgjjld7CCIxSpusz30Ks=
|
||||
=ZNH3
|
||||
-----END PGP SIGNATURE-----
|
3
thunderbird-91.0.1.source.tar.xz
Normal file
3
thunderbird-91.0.1.source.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:adf7620efc091834c5c8c862390bfe9169f77deb52670b673a3dd07dd3eaa1a5
|
||||
size 401266044
|
16
thunderbird-91.0.1.source.tar.xz.asc
Normal file
16
thunderbird-91.0.1.source.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEEQ2D+IQnEl2MYb44h6+QekPbxL20FAmEa4BUACgkQ6+QekPbx
|
||||
L23HbA//e9L+F2T9cnrLjd2QTJYXPpnO+QVE4EJjFjz63FIXEqEkVeCBLXH/vr15
|
||||
gYoA5Pw19MA8Ce2HAh/TZ5UvvowbDY54OvEzPsMYsY9BOgaQpHL1yvnTZW2qcJpn
|
||||
hsJPwkAmLk2l1tEOJPPhXvYHZBbFtXk5sB24ol92TqPZH0+PoO3geRmCOW5uBHVH
|
||||
AHsb61LzGvqct9XmF0vm/pTTR4Ash2oYg65+EYTT8zox4r5IWZg9XL80qGKosADu
|
||||
aVe9+MbSijs14sHXAUykawvZFGBKpC3PvVw9yIXC4olzaJDPyegh/PSoNjpr7RFX
|
||||
Frc3O5S5CsvfD4K1DZ7yirWjVHGjz0tXSEyvbYy6esyhxiVNmCJ9Cfk3eLnGgo0L
|
||||
YrjXz1IiHOmaYuZHfnqtRKgw2eKSHDYK7cexz92WUNiycrP2Y8zOQdxCxoXYVlH+
|
||||
hlki7b4O+P18QSqG47crbGUUmueQFZxcAIFCgOl1KPICjxgvQ4cGnoG+sv06DT6X
|
||||
EGCKYnQ9EJoBOfFt3+b8auJpNxgKJqjC8EMxgNl36cKgqGgoIdXkYVbcB1mzxnzM
|
||||
xHY8t8IftG3v8eK9ymEFOxFDmDnMgorR4UI0YfStU7XZ1WncWOnfEUtospCqVL07
|
||||
ek1Ob7i1n6QRKtaMa25nV5Ni8ZF27SjABKF8rDVO3y+moNyskE0=
|
||||
=2Iug
|
||||
-----END PGP SIGNATURE-----
|
Loading…
Reference in New Issue
Block a user