diff --git a/D173814.diff b/D173814.diff deleted file mode 100644 index 91898aad2a9254b844f20ec63a276589a273f256..0000000000000000000000000000000000000000 --- a/D173814.diff +++ /dev/null @@ -1,82 +0,0 @@ -diff --git a/widget/gtk/MozContainerWayland.h b/widget/gtk/MozContainerWayland.h ---- a/widget/gtk/MozContainerWayland.h -+++ b/widget/gtk/MozContainerWayland.h -@@ -83,10 +83,13 @@ - nsIntSize aSize, - int scale); - void moz_container_wayland_set_scale_factor(MozContainer* container); - void moz_container_wayland_set_scale_factor_locked( - const mozilla::MutexAutoLock& aProofOfLock, MozContainer* container); -+bool moz_container_wayland_size_matches_scale_factor_locked( -+ const mozilla::MutexAutoLock& aProofOfLock, MozContainer* container, -+ int aWidth, int aHeight); - - void moz_container_wayland_add_initial_draw_callback_locked( - MozContainer* container, const std::function& initial_draw_cb); - void moz_container_wayland_add_or_fire_initial_draw_callback( - MozContainer* container, const std::function& initial_draw_cb); -diff --git a/widget/gtk/MozContainerWayland.cpp b/widget/gtk/MozContainerWayland.cpp ---- a/widget/gtk/MozContainerWayland.cpp -+++ b/widget/gtk/MozContainerWayland.cpp -@@ -595,10 +595,17 @@ - if (container->wl_container.surface) { - moz_container_wayland_set_scale_factor_locked(lock, container); - } - } - -+bool moz_container_wayland_size_matches_scale_factor_locked( -+ const MutexAutoLock& aProofOfLock, MozContainer* container, int aWidth, -+ int aHeight) { -+ return aWidth % container->wl_container.buffer_scale == 0 && -+ aHeight % container->wl_container.buffer_scale == 0; -+} -+ - static bool moz_container_wayland_surface_create_locked( - const MutexAutoLock& aProofOfLock, MozContainer* container) { - MozContainerWayland* wl_container = &container->wl_container; - - LOGWAYLAND("%s [%p]\n", __FUNCTION__, -diff --git a/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp b/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp ---- a/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp -+++ b/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp -@@ -283,12 +283,12 @@ - return; - } - mFrameInProcess = false; - - MozContainer* container = mWindow->GetMozContainer(); -- MozContainerSurfaceLock lock(container); -- struct wl_surface* waylandSurface = lock.GetSurface(); -+ MozContainerSurfaceLock MozContainerLock(container); -+ struct wl_surface* waylandSurface = MozContainerLock.GetSurface(); - if (!waylandSurface) { - LOGWAYLAND( - "WindowSurfaceWaylandMB::Commit [%p] frame queued: can't lock " - "wl_surface\n", - (void*)mWindow.get()); -@@ -317,12 +317,23 @@ - LayoutDeviceIntRect r = iter.Get(); - wl_surface_damage_buffer(waylandSurface, r.x, r.y, r.width, r.height); - } - } - -+ // aProofOfLock is a kind of substitution of MozContainerSurfaceLock. -+ // MozContainer is locked but MozContainerSurfaceLock doen't convert to -+ // MutexAutoLock& so we use aProofOfLock here. - moz_container_wayland_set_scale_factor_locked(aProofOfLock, container); -- mInProgressBuffer->AttachAndCommit(waylandSurface); -+ -+ // It's possible that scale factor changed between Lock() and Commit() -+ // but window size is the same. -+ // Don't attach such buffer as it may have incorrect size, -+ // we'll paint new content soon. -+ if (moz_container_wayland_size_matches_scale_factor_locked( -+ aProofOfLock, container, mWindowSize.width, mWindowSize.height)) { -+ mInProgressBuffer->AttachAndCommit(waylandSurface); -+ } - - mInProgressBuffer->ResetBufferAge(); - mFrontBuffer = mInProgressBuffer; - mFrontBufferInvalidRegion = aInvalidRegion; - mInProgressBuffer = nullptr; - diff --git a/ach.xpi b/ach.xpi new file mode 100644 index 0000000000000000000000000000000000000000..54ffab7247f21db6a4cc372ed9cabd21977fc2a1 Binary files /dev/null and b/ach.xpi differ diff --git a/af.xpi b/af.xpi new file mode 100644 index 0000000000000000000000000000000000000000..eed7aa72140bc0c2563d53356ec33ab5c99d2722 Binary files /dev/null and b/af.xpi differ diff --git a/an.xpi b/an.xpi new file mode 100644 index 0000000000000000000000000000000000000000..e8f6adbd48d4e9fc69ead1a77cefe3098662899f Binary files /dev/null and b/an.xpi differ diff --git a/ar.xpi b/ar.xpi new file mode 100644 index 0000000000000000000000000000000000000000..d1d5089379abb2a3afa8879b40b15158c6658609 Binary files /dev/null and b/ar.xpi differ diff --git a/ast.xpi b/ast.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2df3dbeb14f2767e7b19c1a47a8d3487e207ec37 Binary files /dev/null and b/ast.xpi differ diff --git a/az.xpi b/az.xpi new file mode 100644 index 0000000000000000000000000000000000000000..8d6e73936b06a0043538cf35de55bda04cbd2e6a Binary files /dev/null and b/az.xpi differ diff --git a/be.xpi b/be.xpi new file mode 100644 index 0000000000000000000000000000000000000000..17425dd404b161a476c9e5a48d814621a41a9503 Binary files /dev/null and b/be.xpi differ diff --git a/bg.xpi b/bg.xpi new file mode 100644 index 0000000000000000000000000000000000000000..443f302e086f3c248714826fbcaaafaaf9c406f0 Binary files /dev/null and b/bg.xpi differ diff --git a/bn.xpi b/bn.xpi new file mode 100644 index 0000000000000000000000000000000000000000..df11564637a44cf5e69860c44339028a06b641fa Binary files /dev/null and b/bn.xpi differ diff --git a/br.xpi b/br.xpi new file mode 100644 index 0000000000000000000000000000000000000000..5ff530b274e1b39424f66619bc9060cacf3c3046 Binary files /dev/null and b/br.xpi differ diff --git a/bs.xpi b/bs.xpi new file mode 100644 index 0000000000000000000000000000000000000000..8cc07dd013d4daa16f9ddb8ce05a8742f9fe92c9 Binary files /dev/null and b/bs.xpi differ diff --git a/build-aarch64-skia.patch b/build-aarch64-skia.patch index a63e3e812bd1fd722ab7b35883c7b2f0ad6afb07..342836f5386e6026c08ec9bec4d7567e3536bb31 100644 --- a/build-aarch64-skia.patch +++ b/build-aarch64-skia.patch @@ -1,40 +1,7 @@ -diff -up firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia firefox-72.0/gfx/skia/skia/include/private/SkHalf.h ---- firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia 2020-01-02 22:33:02.000000000 +0100 -+++ firefox-72.0/gfx/skia/skia/include/private/SkHalf.h 2020-01-03 09:00:37.537296105 +0100 -@@ -40,7 +40,7 @@ static inline Sk4h SkFloatToHalf_finite_ - - static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) { - Sk4h hs = Sk4h::Load(&rgba); --#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) -+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) - float32x4_t fs; - asm ("fcvtl %[fs].4s, %[hs].4h \n" // vcvt_f32_f16(...) - : [fs] "=w" (fs) // =w: write-only NEON register -@@ -62,7 +62,7 @@ static inline Sk4f SkHalfToFloat_finite_ - } - - static inline Sk4h SkFloatToHalf_finite_ftz(const Sk4f& fs) { --#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) -+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64) - float32x4_t vec = fs.fVec; - asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec) - : [vec] "+w" (vec)); // +w: read-write NEON register -diff -up firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h ---- firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100 -+++ firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2020-01-03 10:11:41.259219508 +0100 -@@ -1087,7 +1087,7 @@ SI F from_half(U16 h) { - } - - SI U16 to_half(F f) { --#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ -+#if 0 //defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ - && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. - return vcvt_f16_f32(f); - -diff -up firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h ---- firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100 -+++ firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h 2020-01-03 10:11:53.513250979 +0100 -@@ -183,8 +183,6 @@ SI F F_from_Half(U16 half) { +diff -up firefox-114.0/gfx/skia/skia/modules/skcms/src/Transform_inl.h.aarch64-skia firefox-114.0/gfx/skia/skia/modules/skcms/src/Transform_inl.h +--- firefox-114.0/gfx/skia/skia/modules/skcms/src/Transform_inl.h.aarch64-skia 2023-06-02 03:15:22.000000000 +0200 ++++ firefox-114.0/gfx/skia/skia/modules/skcms/src/Transform_inl.h 2023-06-05 10:18:46.942777997 +0200 +@@ -189,8 +189,6 @@ SI F F_from_Half(U16 half) { SI U16 Half_from_F(F f) { #if defined(USING_NEON_FP16) return bit_pun(f); @@ -43,3 +10,16 @@ diff -up firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch6 #elif defined(USING_AVX512F) return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION ); #elif defined(USING_AVX_F16C) +diff -up firefox-114.0/gfx/skia/skia/src/base/SkHalf.h.aarch64-skia firefox-114.0/gfx/skia/skia/src/base/SkHalf.h +diff -up firefox-114.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia firefox-114.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h +--- firefox-114.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2023-06-05 10:18:46.941777963 +0200 ++++ firefox-114.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2023-06-05 10:20:44.924843847 +0200 +@@ -1128,7 +1128,7 @@ SI F from_half(U16 h) { + } + + SI U16 to_half(F f) { +-#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ ++#if 0 //defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ + && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. + return sk_bit_cast(vcvt_f16_f32(f)); + diff --git a/build-arm-libaom.patch b/build-arm-libaom.patch deleted file mode 100644 index 985f01d1507eeecab5ce654ec538e2b7b24e4630..0000000000000000000000000000000000000000 --- a/build-arm-libaom.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-73.0/media/libaom/moz.build.old firefox-73.0/media/libaom/moz.build ---- firefox-73.0/media/libaom/moz.build.old 2020-02-07 23:13:28.000000000 +0200 -+++ firefox-73.0/media/libaom/moz.build 2020-02-17 10:30:08.509805092 +0200 -@@ -55,7 +55,7 @@ elif CONFIG['CPU_ARCH'] == 'arm': - - for f in SOURCES: - if f.endswith('neon.c'): -- SOURCES[f].flags += CONFIG['VPX_ASFLAGS'] -+ SOURCES[f].flags += CONFIG['NEON_FLAGS'] - - if CONFIG['OS_TARGET'] == 'Android': - # For cpu-features.h diff --git a/ca-valencia.xpi b/ca-valencia.xpi new file mode 100644 index 0000000000000000000000000000000000000000..87f66b43dfdb6bfe897150f4e20f93688a840ddb Binary files /dev/null and b/ca-valencia.xpi differ diff --git a/ca.xpi b/ca.xpi new file mode 100644 index 0000000000000000000000000000000000000000..f7aa03bd3d39f29248754f96897da8e2db2e2622 Binary files /dev/null and b/ca.xpi differ diff --git a/cak.xpi b/cak.xpi new file mode 100644 index 0000000000000000000000000000000000000000..3740f2917ea0feedcc5e36e4816284ce9b9108ee Binary files /dev/null and b/cak.xpi differ diff --git a/cs.xpi b/cs.xpi new file mode 100644 index 0000000000000000000000000000000000000000..260219670923f9c4c7f0f2ab9b92caa843f1e987 Binary files /dev/null and b/cs.xpi differ diff --git a/cy.xpi b/cy.xpi new file mode 100644 index 0000000000000000000000000000000000000000..84f265f281e4f72a0438e7b59997d4c656f0b350 Binary files /dev/null and b/cy.xpi differ diff --git a/da.xpi b/da.xpi new file mode 100644 index 0000000000000000000000000000000000000000..64e9a74b538254e3d600b67947a1950e8b8807e5 Binary files /dev/null and b/da.xpi differ diff --git a/de.xpi b/de.xpi new file mode 100644 index 0000000000000000000000000000000000000000..05801c810db5be289417e11b70c4b972fd4b8f33 Binary files /dev/null and b/de.xpi differ diff --git a/download b/download index 545ace86f324c6c0d0d357ca0a44b829b11491d8..45270ddfb6baa9dfef548ce8b5ceb16432f59f90 100644 --- a/download +++ b/download @@ -1,4 +1,3 @@ -a8bc903efd31842c81523319c6205a1d firefox-112.0.1.source.tar.xz +3d5cd8d91491dea9a6aae8e6c1ea1a8d firefox-115.3.0esr.source.tar.xz d476a335bb5c077d51d40cbe20a92f92 cbindgen-vendor.tar.xz -6e1faf84cdd8942e752f88f61278af23 firefox-langpacks-112.0.1-20230417.tar.xz c397dc2d33e0f9be52d9b860ca75644b mochitest-python.tar.gz diff --git a/dsb.xpi b/dsb.xpi new file mode 100644 index 0000000000000000000000000000000000000000..fe105431d979a8904d6bbb18a97a2c21f37be898 Binary files /dev/null and b/dsb.xpi differ diff --git a/el.xpi b/el.xpi new file mode 100644 index 0000000000000000000000000000000000000000..8144e0aabd5e635e0bdfed50fee96e5d97364ab5 Binary files /dev/null and b/el.xpi differ diff --git a/en-CA.xpi b/en-CA.xpi new file mode 100644 index 0000000000000000000000000000000000000000..0e55a1000ad63469034413af471b5a87937204dd Binary files /dev/null and b/en-CA.xpi differ diff --git a/en-GB.xpi b/en-GB.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2a22784a1bb340fbf885e5cf62b71079f78644f1 Binary files /dev/null and b/en-GB.xpi differ diff --git a/en-US.xpi b/en-US.xpi new file mode 100644 index 0000000000000000000000000000000000000000..e18814678aec30ed29ca108b2c3b620287ad913f Binary files /dev/null and b/en-US.xpi differ diff --git a/eo.xpi b/eo.xpi new file mode 100644 index 0000000000000000000000000000000000000000..89125679097693c5898186c3dac0299b48446acf Binary files /dev/null and b/eo.xpi differ diff --git a/es-AR.xpi b/es-AR.xpi new file mode 100644 index 0000000000000000000000000000000000000000..692c1bd2b650394c6a00779a444207dd7e7a6cf8 Binary files /dev/null and b/es-AR.xpi differ diff --git a/es-CL.xpi b/es-CL.xpi new file mode 100644 index 0000000000000000000000000000000000000000..e1673e8bbedabf6e727d3057ed5828685446b1a9 Binary files /dev/null and b/es-CL.xpi differ diff --git a/es-ES.xpi b/es-ES.xpi new file mode 100644 index 0000000000000000000000000000000000000000..b3feb185bbd6c702192c5f74a113514c8c9cf664 Binary files /dev/null and b/es-ES.xpi differ diff --git a/es-MX.xpi b/es-MX.xpi new file mode 100644 index 0000000000000000000000000000000000000000..38d35f45c07979a3fd4f70bf7c06cad54c2a017e Binary files /dev/null and b/es-MX.xpi differ diff --git a/et.xpi b/et.xpi new file mode 100644 index 0000000000000000000000000000000000000000..1d9ace8a4ec5f1ca3c81a40fad5eea23c6223c32 Binary files /dev/null and b/et.xpi differ diff --git a/eu.xpi b/eu.xpi new file mode 100644 index 0000000000000000000000000000000000000000..c68c65a7d3eb05e040c52a763be03382a1efc24b Binary files /dev/null and b/eu.xpi differ diff --git a/fa.xpi b/fa.xpi new file mode 100644 index 0000000000000000000000000000000000000000..9762175e28f4a9ffc2d72d02baadca603f2a899b Binary files /dev/null and b/fa.xpi differ diff --git a/ff.xpi b/ff.xpi new file mode 100644 index 0000000000000000000000000000000000000000..1b6ce99232d4d82a1d0c4923fade78e750af0763 Binary files /dev/null and b/ff.xpi differ diff --git a/fi.xpi b/fi.xpi new file mode 100644 index 0000000000000000000000000000000000000000..9a7882f9e522307682e192909cd1d7efbd55557a Binary files /dev/null and b/fi.xpi differ diff --git a/firefox-enable-vaapi.patch b/firefox-enable-vaapi.patch index dbe92bc2e21a3479b300394ca39e91203a1a592d..d94d399fff45a867b3ac2054c514bb902c5a4c96 100644 --- a/firefox-enable-vaapi.patch +++ b/firefox-enable-vaapi.patch @@ -1,13 +1,13 @@ -diff -up firefox-112.0/widget/gtk/GfxInfo.cpp.firefox-enable-vaapi firefox-112.0/widget/gtk/GfxInfo.cpp ---- firefox-112.0/widget/gtk/GfxInfo.cpp.firefox-enable-vaapi 2023-04-05 11:10:14.156695694 +0200 -+++ firefox-112.0/widget/gtk/GfxInfo.cpp 2023-04-05 11:11:40.697665718 +0200 -@@ -810,14 +810,6 @@ const nsTArray& GfxInfo:: +diff -up firefox-115.0/widget/gtk/GfxInfo.cpp.firefox-enable-vaapi firefox-115.0/widget/gtk/GfxInfo.cpp +--- firefox-115.0/widget/gtk/GfxInfo.cpp.firefox-enable-vaapi 2023-06-29 12:18:53.179833765 +0200 ++++ firefox-115.0/widget/gtk/GfxInfo.cpp 2023-06-29 12:19:33.256212776 +0200 +@@ -970,14 +970,6 @@ const nsTArray& GfxInfo:: nsIGfxInfo::FEATURE_BLOCKED_DEVICE, DRIVER_COMPARISON_IGNORED, - V(0, 0, 0, 0), "FEATURE_HARDWARE_VIDEO_DECODING_NO_LINUX_AMD", ""); + V(0, 0, 0, 0), "FEATURE_HARDWARE_VIDEO_DECODING_NO_R600", ""); -- // Disable on Release/late Beta +- // Disable on Release/late Beta on AMD -#if !defined(EARLY_BETA_OR_EARLIER) -- APPEND_TO_DRIVER_BLOCKLIST(OperatingSystem::Linux, DeviceFamily::All, +- APPEND_TO_DRIVER_BLOCKLIST(OperatingSystem::Linux, DeviceFamily::AtiAll, - nsIGfxInfo::FEATURE_HARDWARE_VIDEO_DECODING, - nsIGfxInfo::FEATURE_BLOCKED_DEVICE, - DRIVER_COMPARISON_IGNORED, V(0, 0, 0, 0), diff --git a/firefox-gcc-always-inline.patch b/firefox-gcc-always-inline.patch new file mode 100644 index 0000000000000000000000000000000000000000..d7af60f1e70cbea529b4ef9a3e2a5f0d69883e84 --- /dev/null +++ b/firefox-gcc-always-inline.patch @@ -0,0 +1,14 @@ +diff -up firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline firefox-114.0.2/gfx/wr/swgl/src/gl.cc +--- firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline 2023-06-22 11:08:53.294593327 +0200 ++++ firefox-114.0.2/gfx/wr/swgl/src/gl.cc 2023-06-22 11:12:43.663486734 +0200 +@@ -58,9 +58,7 @@ WINBASEAPI BOOL WINAPI QueryPerformanceF + } + + #else +-// GCC is slower when dealing with always_inline, especially in debug builds. +-// When using Clang, use always_inline more aggressively. +-# if defined(__clang__) || defined(NDEBUG) ++# if defined(__clang__) || defined (__GNUC__) || defined(NDEBUG) + # define ALWAYS_INLINE __attribute__((always_inline)) inline + # else + # define ALWAYS_INLINE inline diff --git a/firefox.spec b/firefox.spec index ec453f776387df44732c5d690a5f21428933c914..35ab4a84bab87e70a4cc8c2d4972c7f825e8059e 100644 --- a/firefox.spec +++ b/firefox.spec @@ -1,4 +1,4 @@ -%define anolis_release 2 +%define anolis_release 1 %global release_build 1 %global run_firefox_tests 0 @@ -34,7 +34,8 @@ %endif %global system_ffi 1 -%global system_libvpx 0 +%global system_webp 1 +%global system_libvpx 1 %global system_jpeg 1 %global system_pixman 1 %global use_bundled_cbindgen 1 @@ -72,13 +73,13 @@ %global freetype_version 2.1.9 %global libnotify_version 0.7.0 %if %{?system_libvpx} -%global libvpx_version 1.8.2 +%global libvpx_version 1.10.0 %endif %if %{?system_nss} %global nspr_version 4.32 %global nspr_build_version %{nspr_version} -%global nss_version 3.88 +%global nss_version 3.90 %global nss_build_version %{nss_version} %endif @@ -120,13 +121,113 @@ Summary: Mozilla Firefox Web browser Name: firefox -Version: 112.0.1 +Version: 115.3.0 Release: %{anolis_release}%{?pre_tag}%{?dist} URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ -Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}/source/firefox-%{version}.source.tar.xz +Source0: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/source/firefox-%{version}esr.source.tar.xz %if %{with langpacks} -Source1: firefox-langpacks-%{version}-20230417.tar.xz +SOURCE1001: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ach.xpi +SOURCE1002: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/af.xpi +SOURCE1003: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/an.xpi +SOURCE1004: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ar.xpi +SOURCE1005: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ast.xpi +SOURCE1006: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/az.xpi +SOURCE1007: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/be.xpi +SOURCE1008: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/bg.xpi +SOURCE1009: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/bn.xpi +SOURCE1010: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/br.xpi +SOURCE1011: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/bs.xpi +SOURCE1012: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ca-valencia.xpi +SOURCE1013: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ca.xpi +SOURCE1014: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/cak.xpi +SOURCE1015: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/cs.xpi +SOURCE1016: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/cy.xpi +SOURCE1017: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/da.xpi +SOURCE1018: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/de.xpi +SOURCE1019: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/dsb.xpi +SOURCE1020: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/el.xpi +SOURCE1021: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/en-CA.xpi +SOURCE1022: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/en-GB.xpi +SOURCE1023: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/en-US.xpi +SOURCE1024: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/eo.xpi +SOURCE1025: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/es-AR.xpi +SOURCE1026: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/es-CL.xpi +SOURCE1027: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/es-ES.xpi +SOURCE1028: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/es-MX.xpi +SOURCE1029: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/et.xpi +SOURCE1030: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/eu.xpi +SOURCE1031: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/fa.xpi +SOURCE1032: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ff.xpi +SOURCE1033: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/fi.xpi +SOURCE1034: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/fr.xpi +SOURCE1035: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/fur.xpi +SOURCE1036: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/fy-NL.xpi +SOURCE1037: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ga-IE.xpi +SOURCE1038: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/gd.xpi +SOURCE1039: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/gl.xpi +SOURCE1040: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/gn.xpi +SOURCE1041: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/gu-IN.xpi +SOURCE1042: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/he.xpi +SOURCE1043: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/hi-IN.xpi +SOURCE1044: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/hr.xpi +SOURCE1045: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/hsb.xpi +SOURCE1046: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/hu.xpi +SOURCE1047: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/hy-AM.xpi +SOURCE1048: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ia.xpi +SOURCE1049: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/id.xpi +SOURCE1050: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/is.xpi +SOURCE1051: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/it.xpi +SOURCE1052: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ja.xpi +SOURCE1053: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ka.xpi +SOURCE1054: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/kab.xpi +SOURCE1055: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/kk.xpi +SOURCE1056: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/km.xpi +SOURCE1057: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/kn.xpi +SOURCE1058: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ko.xpi +SOURCE1059: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/lij.xpi +SOURCE1060: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/lt.xpi +SOURCE1061: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/lv.xpi +SOURCE1062: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/mk.xpi +SOURCE1063: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/mr.xpi +SOURCE1064: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ms.xpi +SOURCE1065: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/my.xpi +SOURCE1066: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/nb-NO.xpi +SOURCE1067: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ne-NP.xpi +SOURCE1068: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/nl.xpi +SOURCE1069: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/nn-NO.xpi +SOURCE1070: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/oc.xpi +SOURCE1071: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/pa-IN.xpi +SOURCE1072: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/pl.xpi +SOURCE1073: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/pt-BR.xpi +SOURCE1074: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/pt-PT.xpi +SOURCE1075: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/rm.xpi +SOURCE1076: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ro.xpi +SOURCE1077: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ru.xpi +SOURCE1078: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/sc.xpi +SOURCE1079: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/sco.xpi +SOURCE1080: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/si.xpi +SOURCE1081: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/sk.xpi +SOURCE1082: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/sl.xpi +SOURCE1083: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/son.xpi +SOURCE1084: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/sq.xpi +SOURCE1085: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/sr.xpi +SOURCE1086: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/sv-SE.xpi +SOURCE1087: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/szl.xpi +SOURCE1088: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ta.xpi +SOURCE1089: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/te.xpi +SOURCE1090: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/tg.xpi +SOURCE1091: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/th.xpi +SOURCE1092: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/tl.xpi +SOURCE1093: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/tr.xpi +SOURCE1094: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/trs.xpi +SOURCE1095: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/uk.xpi +SOURCE1096: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/ur.xpi +SOURCE1097: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/uz.xpi +SOURCE1098: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/vi.xpi +SOURCE1099: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/xh.xpi +SOURCE1100: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/zh-CN.xpi +SOURCE1101: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/linux-x86_64/xpi/zh-TW.xpi %endif # generate by gen_cbindgen-vendor.sh Source2: cbindgen-vendor.tar.xz @@ -157,17 +258,14 @@ Source43: print_failures Source44: print-error-reftest Source45: run-wayland-compositor -Patch3: mozilla-build-aarch64.patch Patch40: build-aarch64-skia.patch Patch44: build-arm-libopus.patch Patch47: shebang-build.patch -Patch49: build-arm-libaom.patch Patch53: firefox-gcc-build.patch Patch54: mozilla-1669639.patch Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch Patch78: firefox-i686-build.patch Patch79: firefox-gcc-13-build.patch -Patch83: D173814.diff Patch102: firefox-tests-xpcshell-freeze.patch @@ -181,17 +279,9 @@ Patch230: firefox-enable-vaapi.patch # upstream pacthes Patch402: mozilla-1196777.patch Patch407: mozilla-1667096.patch -Patch408: mozilla-1663844.patch -Patch415: mozilla-1670333.patch -# https://phabricator.services.mozilla.com/D173021 -Patch416: libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch -Patch417: mozilla-1826583.patch -Patch418: mozilla-1827429.patch # PGO/LTO patches Patch600: pgo.patch -Patch602: mozilla-1516803.patch -# Work around broken moz.build file on ppc64le (mozb#1779545, mozb#1775202) -Patch1100: mozilla-1775202.patch +Patch603: firefox-gcc-always-inline.patch # https://bugzilla.mozilla.org/show_bug.cgi?id=1474486 Patch1200: firefox-112.0-commasplit.patch @@ -234,8 +324,13 @@ BuildRequires: libjpeg-devel BuildRequires: pixman-devel %endif +%if %{?system_webp} +BuildRequires: pkgconfig(libwebp) >= 1.0.2 +BuildRequires: pkgconfig(libwebpdemux) >= 1.0.2 +%endif + %if %{?system_libvpx} -BuildRequires: libvpx-devel >= %{libvpx_version} +BuildRequires: pkgconfig(vpx) >= %{libvpx_version} %endif %if %{build_with_clang} @@ -401,46 +496,37 @@ This package contains results of tests executed during build. %prep %setup -q -n %{tarballdir} -%patch40 -p1 -b .aarch64-skia -%patch3 -p1 -b .arm -%patch44 -p1 -b .build-arm-libopus -%patch47 -p1 -b .fedora-shebang -%patch49 -p1 -b .build-arm-libaom -%patch53 -p1 -b .firefox-gcc-build -%patch54 -p1 -b .1669639 -%patch71 -p1 -b .0001-GLIBCXX-fix-for-GCC-12 -%patch78 -p1 -b .firefox-i686 -%patch79 -p1 -b .firefox-gcc-13-build -%patch83 -p1 -b .D173814 - -%patch102 -p1 -b .firefox-tests-xpcshell-freeze - -%patch215 -p1 -b .addons -%patch219 -p1 -b .rhbz-1173156 +%patch -P40 -p1 -b .aarch64-skia +%patch -P44 -p1 -b .build-arm-libopus +%patch -P47 -p1 -b .fedora-shebang +%patch -P53 -p1 -b .firefox-gcc-build +%patch -P54 -p1 -b .1669639 +%patch -P71 -p1 -b .0001-GLIBCXX-fix-for-GCC-12 +%patch -P78 -p1 -b .firefox-i686 +%patch -P79 -p1 -b .firefox-gcc-13-build + +%patch -P102 -p1 -b .firefox-tests-xpcshell-freeze + +%patch -P215 -p1 -b .addons +%patch -P219 -p1 -b .rhbz-1173156 %ifarch aarch64 -%patch226 -p1 -b .1354671 +%patch -P226 -p1 -b .1354671 %endif -%patch228 -p1 -b .disable-openh264-download -%patch229 -p1 -b .firefox-nss-addon-hack -%patch230 -p1 -b .firefox-enable-vaapi +%patch -P228 -p1 -b .disable-openh264-download +%patch -P229 -p1 -b .firefox-nss-addon-hack +%patch -P230 -p1 -b .firefox-enable-vaapi -%patch402 -p1 -b .1196777 -%patch407 -p1 -b .1667096 -%patch408 -p1 -b .1663844 -%patch415 -p1 -b .1670333 -%patch416 -p1 -b .libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame -%patch417 -p1 -b .1826583 -%patch418 -p1 -b .1827429 +%patch -P402 -p1 -b .1196777 +%patch -P407 -p1 -b .1667096 %if %{build_with_pgo} %if !%{build_with_clang} -%patch600 -p1 -b .pgo -%patch602 -p1 -b .1516803 +%patch -P600 -p1 -b .pgo %endif %endif +%patch -P603 -p1 -b .inline -%patch1100 -p1 -b .ppc-mobzuild -%patch1200 -p1 -b .rustflags-commasplit +%patch -P1200 -p1 -b .rustflags-commasplit rm -f .mozconfig cp %{SOURCE10} .mozconfig @@ -515,6 +601,12 @@ echo "ac_add_options --with-system-jpeg" >> .mozconfig echo "ac_add_options --enable-system-pixman" >> .mozconfig %endif +%if %{?system_webp} +echo "ac_add_options --with-system-webp" >> .mozconfig +%else +echo "ac_add_options --without-system-webp" >> .mozconfig +%endif + %if %{?system_libvpx} echo "ac_add_options --with-system-libvpx" >> .mozconfig %else @@ -690,8 +782,7 @@ cp -p %{SOURCE25} \ echo > %{name}.lang %if %{with langpacks} mkdir -p %{buildroot}%{langpackdir} -tar xf %{SOURCE1} -for langpack in `ls firefox-langpacks/*.xpi`; do +for langpack in %{_sourcedir}/*.xpi; do language=`basename $langpack .xpi` extensionID=langpack-$language@firefox.mozilla.org mkdir -p $extensionID @@ -706,7 +797,6 @@ for langpack in `ls firefox-langpacks/*.xpi`; do language=`echo $language | sed -e 's/-/_/g'` echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang done -rm -rf firefox-langpacks function create_default_langpack() { language_long=$1 @@ -728,7 +818,7 @@ create_default_langpack "nn-NO" "nn" create_default_langpack "pa-IN" "pa" create_default_langpack "pt-PT" "pt" create_default_langpack "sv-SE" "sv" -create_default_langpack "zh-TW" "zh" +create_default_langpack "zh-CN" "zh" %endif mkdir -p %{buildroot}/%{mozappdir}/browser/defaults/preferences @@ -812,6 +902,8 @@ fi %{_bindir}/firefox %{mozappdir}/firefox %{mozappdir}/firefox-bin +%{mozappdir}/glxtest +%{mozappdir}/vaapitest %doc %{_mandir}/man1/* %dir %{_sysconfdir}/%{name} %dir %{_sysconfdir}/%{name}/* @@ -876,6 +968,9 @@ fi %{_datadir}/applications/firefox-wayland.desktop %changelog +* Tue Sep 26 2023 Funda Wang - 115.3.0-1 +- New version 115.3.0esr + * Fri Jul 07 2023 mgb01105731 - 112.0.1-2 - change firefox-anolis-default-prefs.js url diff --git a/fr.xpi b/fr.xpi new file mode 100644 index 0000000000000000000000000000000000000000..d5aa3b1d4a68ce83af9518748d3dfc68447dc311 Binary files /dev/null and b/fr.xpi differ diff --git a/fur.xpi b/fur.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2123fdae4bcbcd81472d3b2d15c2cd205800a1f8 Binary files /dev/null and b/fur.xpi differ diff --git a/fy-NL.xpi b/fy-NL.xpi new file mode 100644 index 0000000000000000000000000000000000000000..b8bd2f117a997f5e6bb6535d9eef1cb42dfeb72d Binary files /dev/null and b/fy-NL.xpi differ diff --git a/ga-IE.xpi b/ga-IE.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2233fd9fdc5bdcd18a7de26bba48463a1e90199b Binary files /dev/null and b/ga-IE.xpi differ diff --git a/gd.xpi b/gd.xpi new file mode 100644 index 0000000000000000000000000000000000000000..b0f045be9363e6cae7927d4f96d92bbfbf661e96 Binary files /dev/null and b/gd.xpi differ diff --git a/gl.xpi b/gl.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2d9602037ac3c66a169fa5d8b69efdc63a6c5568 Binary files /dev/null and b/gl.xpi differ diff --git a/gn.xpi b/gn.xpi new file mode 100644 index 0000000000000000000000000000000000000000..e2e27af3e27a4ea5b8bd1fe8fca6f590b1177601 Binary files /dev/null and b/gn.xpi differ diff --git a/gu-IN.xpi b/gu-IN.xpi new file mode 100644 index 0000000000000000000000000000000000000000..43086f822aaf28757add2cbadd045e8c55fb6efa Binary files /dev/null and b/gu-IN.xpi differ diff --git a/he.xpi b/he.xpi new file mode 100644 index 0000000000000000000000000000000000000000..dc1c4b5a5ebdc26d9b0d9f00c8efdd7b98b93153 Binary files /dev/null and b/he.xpi differ diff --git a/hi-IN.xpi b/hi-IN.xpi new file mode 100644 index 0000000000000000000000000000000000000000..46c71ef42bb3c8b6f395c18d60bba5a2e9eaba35 Binary files /dev/null and b/hi-IN.xpi differ diff --git a/hr.xpi b/hr.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2d42318d9af9e36418ee2428b8cf6b799fa93ce1 Binary files /dev/null and b/hr.xpi differ diff --git a/hsb.xpi b/hsb.xpi new file mode 100644 index 0000000000000000000000000000000000000000..073fa42de3585ee98370e7cea05a8dabc950f5f9 Binary files /dev/null and b/hsb.xpi differ diff --git a/hu.xpi b/hu.xpi new file mode 100644 index 0000000000000000000000000000000000000000..049f27c510019e0d029c3d38b693c2712abee051 Binary files /dev/null and b/hu.xpi differ diff --git a/hy-AM.xpi b/hy-AM.xpi new file mode 100644 index 0000000000000000000000000000000000000000..bb54465c0e94bbd6403731e778ef15cd5008cefd Binary files /dev/null and b/hy-AM.xpi differ diff --git a/ia.xpi b/ia.xpi new file mode 100644 index 0000000000000000000000000000000000000000..6be3892cdbaea357b4c5f38847e5f20b8eb6496c Binary files /dev/null and b/ia.xpi differ diff --git a/id.xpi b/id.xpi new file mode 100644 index 0000000000000000000000000000000000000000..8ef4f3435e24e6a8bc30e67ae7e08492d8114e70 Binary files /dev/null and b/id.xpi differ diff --git a/is.xpi b/is.xpi new file mode 100644 index 0000000000000000000000000000000000000000..0c0e988603a696755dbcf87584551913fff028cc Binary files /dev/null and b/is.xpi differ diff --git a/it.xpi b/it.xpi new file mode 100644 index 0000000000000000000000000000000000000000..d1370caa401c1b66026a69078f838ada02e39242 Binary files /dev/null and b/it.xpi differ diff --git a/ja.xpi b/ja.xpi new file mode 100644 index 0000000000000000000000000000000000000000..648665323ce36eb0b9d311e8b30dd9672c3352d6 Binary files /dev/null and b/ja.xpi differ diff --git a/ka.xpi b/ka.xpi new file mode 100644 index 0000000000000000000000000000000000000000..edf5dd1376513f118835079916c5d213ab89ae97 Binary files /dev/null and b/ka.xpi differ diff --git a/kab.xpi b/kab.xpi new file mode 100644 index 0000000000000000000000000000000000000000..5e913e71dd3c9387f37b1673ac80d5d04dc64072 Binary files /dev/null and b/kab.xpi differ diff --git a/kk.xpi b/kk.xpi new file mode 100644 index 0000000000000000000000000000000000000000..d8a6e6d165c160811b1e95e99ef3b0408ffcf26b Binary files /dev/null and b/kk.xpi differ diff --git a/km.xpi b/km.xpi new file mode 100644 index 0000000000000000000000000000000000000000..8b8c6a9f33dd19460ef6dc038168279f861568f6 Binary files /dev/null and b/km.xpi differ diff --git a/kn.xpi b/kn.xpi new file mode 100644 index 0000000000000000000000000000000000000000..50147cc46105c160c91bb5462398f0929dfd67c6 Binary files /dev/null and b/kn.xpi differ diff --git a/ko.xpi b/ko.xpi new file mode 100644 index 0000000000000000000000000000000000000000..3f76b097a062da0c14ea545305c5dc44e2c7168f Binary files /dev/null and b/ko.xpi differ diff --git a/libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch b/libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch deleted file mode 100644 index 69f9df2e31de25bbc65e880be180ccfe0ea4851f..0000000000000000000000000000000000000000 --- a/libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch +++ /dev/null @@ -1,505 +0,0 @@ -From d9faa73cbbc186d7dd0dbfce0589012a0bed9f17 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Fri, 17 Mar 2023 10:58:10 +0100 -Subject: [PATCH] PipeWire capturer: import DMABufs directly into desktop frame - -Originally DMABufs were imported into a temporary buffer followed by a -copy operation into the desktop frame itself. This is not needed as we -can import them directly into desktop frames and avoid this overhead. - -Also drop support for MemPtr buffers as both Mutter and KWin don't seem -to support them and they are going to be too slow anyway. - -Testing with latest Chromium, I could see two processes with usage around 20% and 40% without this change going down to 10% and 20% with -this change applied. - -Bug: webrtc:13429 -Bug: chrome:1378258 -Change-Id: Ice3292528ff56300931c8638f8e03d4883d5e331 -Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/297501 -Reviewed-by: Alexander Cooper -Commit-Queue: Jan Grulich -Cr-Commit-Position: refs/heads/main@{#39594} ---- - -diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc -index 5bbd5d7aba..b529077c6d 100644 ---- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc -+++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc -@@ -101,11 +101,23 @@ typedef void (*glDeleteTextures_func)(GLsizei n, const GLuint* textures); - typedef void (*glGenTextures_func)(GLsizei n, GLuint* textures); - typedef GLenum (*glGetError_func)(void); - typedef const GLubyte* (*glGetString_func)(GLenum name); --typedef void (*glGetTexImage_func)(GLenum target, -- GLint level, -- GLenum format, -- GLenum type, -- void* pixels); -+typedef void (*glReadPixels_func)(GLint x, -+ GLint y, -+ GLsizei width, -+ GLsizei height, -+ GLenum format, -+ GLenum type, -+ void* data); -+typedef void (*glGenFramebuffers_func)(GLsizei n, GLuint* ids); -+typedef void (*glDeleteFramebuffers_func)(GLsizei n, -+ const GLuint* framebuffers); -+typedef void (*glBindFramebuffer_func)(GLenum target, GLuint framebuffer); -+typedef void (*glFramebufferTexture2D_func)(GLenum target, -+ GLenum attachment, -+ GLenum textarget, -+ GLuint texture, -+ GLint level); -+typedef GLenum (*glCheckFramebufferStatus_func)(GLenum target); - typedef void (*glTexParameteri_func)(GLenum target, GLenum pname, GLint param); - typedef void* (*glXGetProcAddressARB_func)(const char*); - -@@ -118,7 +130,12 @@ glDeleteTextures_func GlDeleteTextures = nullptr; - glGenTextures_func GlGenTextures = nullptr; - glGetError_func GlGetError = nullptr; - glGetString_func GlGetString = nullptr; --glGetTexImage_func GlGetTexImage = nullptr; -+glReadPixels_func GlReadPixels = nullptr; -+glGenFramebuffers_func GlGenFramebuffers = nullptr; -+glDeleteFramebuffers_func GlDeleteFramebuffers = nullptr; -+glBindFramebuffer_func GlBindFramebuffer = nullptr; -+glFramebufferTexture2D_func GlFramebufferTexture2D = nullptr; -+glCheckFramebufferStatus_func GlCheckFramebufferStatus = nullptr; - glTexParameteri_func GlTexParameteri = nullptr; - glXGetProcAddressARB_func GlXGetProcAddressARB = nullptr; - -@@ -279,12 +296,26 @@ static bool LoadGL() { - (glDeleteTextures_func)GlXGetProcAddressARB("glDeleteTextures"); - GlGenTextures = (glGenTextures_func)GlXGetProcAddressARB("glGenTextures"); - GlGetError = (glGetError_func)GlXGetProcAddressARB("glGetError"); -- GlGetTexImage = (glGetTexImage_func)GlXGetProcAddressARB("glGetTexImage"); -+ GlReadPixels = (glReadPixels_func)GlXGetProcAddressARB("glReadPixels"); -+ GlGenFramebuffers = -+ (glGenFramebuffers_func)GlXGetProcAddressARB("glGenFramebuffers"); -+ GlDeleteFramebuffers = -+ (glDeleteFramebuffers_func)GlXGetProcAddressARB("glDeleteFramebuffers"); -+ GlBindFramebuffer = -+ (glBindFramebuffer_func)GlXGetProcAddressARB("glBindFramebuffer"); -+ GlFramebufferTexture2D = (glFramebufferTexture2D_func)GlXGetProcAddressARB( -+ "glFramebufferTexture2D"); -+ GlCheckFramebufferStatus = -+ (glCheckFramebufferStatus_func)GlXGetProcAddressARB( -+ "glCheckFramebufferStatus"); -+ - GlTexParameteri = - (glTexParameteri_func)GlXGetProcAddressARB("glTexParameteri"); - - return GlBindTexture && GlDeleteTextures && GlGenTextures && GlGetError && -- GlGetTexImage && GlTexParameteri; -+ GlReadPixels && GlGenFramebuffers && GlDeleteFramebuffers && -+ GlBindFramebuffer && GlFramebufferTexture2D && -+ GlCheckFramebufferStatus && GlTexParameteri; - } - - return false; -@@ -435,6 +466,14 @@ EglDmaBuf::~EglDmaBuf() { - EglTerminate(egl_.display); - } - -+ if (fbo_) { -+ GlDeleteFramebuffers(1, &fbo_); -+ } -+ -+ if (texture_) { -+ GlDeleteTextures(1, &texture_); -+ } -+ - // BUG: crbug.com/1290566 - // Closing libEGL.so.1 when using NVidia drivers causes a crash - // when EglGetPlatformDisplayEXT() is used, at least this one is enough -@@ -466,20 +505,20 @@ bool EglDmaBuf::GetClientExtensions(EGLDisplay dpy, EGLint name) { - } - - RTC_NO_SANITIZE("cfi-icall") --std::unique_ptr EglDmaBuf::ImageFromDmaBuf( -- const DesktopSize& size, -- uint32_t format, -- const std::vector& plane_datas, -- uint64_t modifier) { -- std::unique_ptr src; -- -+bool EglDmaBuf::ImageFromDmaBuf(const DesktopSize& size, -+ uint32_t format, -+ const std::vector& plane_datas, -+ uint64_t modifier, -+ const DesktopVector& offset, -+ const DesktopSize& buffer_size, -+ uint8_t* data) { - if (!egl_initialized_) { -- return src; -+ return false; - } - - if (plane_datas.size() <= 0) { - RTC_LOG(LS_ERROR) << "Failed to process buffer: invalid number of planes"; -- return src; -+ return false; - } - - EGLint attribs[47]; -@@ -568,20 +607,32 @@ std::unique_ptr EglDmaBuf::ImageFromDmaBuf( - if (image == EGL_NO_IMAGE) { - RTC_LOG(LS_ERROR) << "Failed to record frame: Error creating EGLImage - " - << FormatEGLError(EglGetError()); -- return src; -+ return false; - } - - // create GL 2D texture for framebuffer -- GLuint texture; -- GlGenTextures(1, &texture); -- GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); -- GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -- GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -- GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -- GlBindTexture(GL_TEXTURE_2D, texture); -+ if (!texture_) { -+ GlGenTextures(1, &texture_); -+ GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); -+ GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -+ GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -+ GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -+ } -+ GlBindTexture(GL_TEXTURE_2D, texture_); - GlEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image); - -- src = std::make_unique(plane_datas[0].stride * size.height()); -+ if (!fbo_) { -+ GlGenFramebuffers(1, &fbo_); -+ } -+ -+ GlBindFramebuffer(GL_FRAMEBUFFER, fbo_); -+ GlFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, -+ texture_, 0); -+ if (GlCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { -+ RTC_LOG(LS_ERROR) << "Failed to bind DMA buf framebuffer"; -+ EglDestroyImageKHR(egl_.display, image); -+ return false; -+ } - - GLenum gl_format = GL_BGRA; - switch (format) { -@@ -598,17 +649,18 @@ std::unique_ptr EglDmaBuf::ImageFromDmaBuf( - gl_format = GL_BGRA; - break; - } -- GlGetTexImage(GL_TEXTURE_2D, 0, gl_format, GL_UNSIGNED_BYTE, src.get()); - -- if (GlGetError()) { -+ GlReadPixels(offset.x(), offset.y(), buffer_size.width(), -+ buffer_size.height(), gl_format, GL_UNSIGNED_BYTE, data); -+ -+ const GLenum error = GlGetError(); -+ if (error) { - RTC_LOG(LS_ERROR) << "Failed to get image from DMA buffer."; -- return src; - } - -- GlDeleteTextures(1, &texture); - EglDestroyImageKHR(egl_.display, image); - -- return src; -+ return !error; - } - - RTC_NO_SANITIZE("cfi-icall") -diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.h b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.h -index f1d96b2f80..22a8f5ab52 100644 ---- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.h -+++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.h -@@ -41,11 +41,15 @@ class EglDmaBuf { - EglDmaBuf(); - ~EglDmaBuf(); - -- std::unique_ptr ImageFromDmaBuf( -- const DesktopSize& size, -- uint32_t format, -- const std::vector& plane_datas, -- uint64_t modifiers); -+ // Returns whether the image was successfully imported from -+ // given DmaBuf and its parameters -+ bool ImageFromDmaBuf(const DesktopSize& size, -+ uint32_t format, -+ const std::vector& plane_datas, -+ uint64_t modifiers, -+ const DesktopVector& offset, -+ const DesktopSize& buffer_size, -+ uint8_t* data); - std::vector QueryDmaBufModifiers(uint32_t format); - - bool IsEglInitialized() const { return egl_initialized_; } -@@ -58,6 +62,8 @@ class EglDmaBuf { - int32_t drm_fd_ = -1; // for GBM buffer mmap - gbm_device* gbm_device_ = nullptr; // for passed GBM buffer retrieval - -+ GLuint fbo_ = 0; -+ GLuint texture_ = 0; - EGLStruct egl_; - - absl::optional GetRenderNode(); -diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc -index 0ca75d00fc..a8879764c7 100644 ---- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc -+++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc -@@ -149,6 +149,12 @@ class SharedScreenCastStreamPrivate { - struct spa_video_info_raw spa_video_format_; - - void ProcessBuffer(pw_buffer* buffer); -+ bool ProcessMemFDBuffer(pw_buffer* buffer, -+ DesktopFrame& frame, -+ const DesktopVector& offset); -+ bool ProcessDMABuffer(pw_buffer* buffer, -+ DesktopFrame& frame, -+ const DesktopVector& offset); - void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size); - - // PipeWire callbacks -@@ -268,9 +274,8 @@ void SharedScreenCastStreamPrivate::OnStreamParamChanged( - std::vector params; - const int buffer_types = - has_modifier || (that->pw_server_version_ >= kDmaBufMinVersion) -- ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd) | -- (1 << SPA_DATA_MemPtr) -- : (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr); -+ ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd) -+ : (1 << SPA_DATA_MemFd); - - params.push_back(reinterpret_cast(spa_pod_builder_add_object( - &builder, SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, -@@ -605,9 +610,6 @@ DesktopVector SharedScreenCastStreamPrivate::CaptureCursorPosition() { - RTC_NO_SANITIZE("cfi-icall") - void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) { - spa_buffer* spa_buffer = buffer->buffer; -- ScopedBuf map; -- std::unique_ptr src_unique_ptr; -- uint8_t* src = nullptr; - - // Try to update the mouse cursor first, because it can be the only - // information carried by the buffer -@@ -641,76 +643,6 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) { - return; - } - -- if (spa_buffer->datas[0].type == SPA_DATA_MemFd) { -- map.initialize( -- static_cast( -- mmap(nullptr, -- spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset, -- PROT_READ, MAP_PRIVATE, spa_buffer->datas[0].fd, 0)), -- spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset, -- spa_buffer->datas[0].fd); -- -- if (!map) { -- RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " -- << std::strerror(errno); -- return; -- } -- -- src = SPA_MEMBER(map.get(), spa_buffer->datas[0].mapoffset, uint8_t); -- } else if (spa_buffer->datas[0].type == SPA_DATA_DmaBuf) { -- const uint n_planes = spa_buffer->n_datas; -- -- if (!n_planes) { -- return; -- } -- -- std::vector plane_datas; -- for (uint32_t i = 0; i < n_planes; ++i) { -- EglDmaBuf::PlaneData data = { -- static_cast(spa_buffer->datas[i].fd), -- static_cast(spa_buffer->datas[i].chunk->stride), -- static_cast(spa_buffer->datas[i].chunk->offset)}; -- plane_datas.push_back(data); -- } -- -- // When importing DMA-BUFs, we use the stride (number of bytes from one row -- // of pixels in the buffer) provided by PipeWire. The stride from PipeWire -- // is given by the graphics driver and some drivers might add some -- // additional padding for memory layout optimizations so not everytime the -- // stride is equal to BYTES_PER_PIXEL x WIDTH. This is fine, because during -- // the import we will use OpenGL and same graphics driver so it will be able -- // to work with the stride it provided, but later on when we work with -- // images we get from DMA-BUFs we will need to update the stride to be equal -- // to BYTES_PER_PIXEL x WIDTH as that's the size of the DesktopFrame we -- // allocate for each captured frame. -- src_unique_ptr = egl_dmabuf_->ImageFromDmaBuf( -- stream_size_, spa_video_format_.format, plane_datas, modifier_); -- if (src_unique_ptr) { -- src = src_unique_ptr.get(); -- } else { -- RTC_LOG(LS_ERROR) << "Dropping DMA-BUF modifier: " << modifier_ -- << " and trying to renegotiate stream parameters"; -- -- if (pw_server_version_ >= kDropSingleModifierMinVersion) { -- modifiers_.erase( -- std::remove(modifiers_.begin(), modifiers_.end(), modifier_), -- modifiers_.end()); -- } else { -- modifiers_.clear(); -- } -- -- pw_loop_signal_event(pw_thread_loop_get_loop(pw_main_loop_), -- renegotiate_); -- return; -- } -- } else if (spa_buffer->datas[0].type == SPA_DATA_MemPtr) { -- src = static_cast(spa_buffer->datas[0].data); -- } -- -- if (!src) { -- return; -- } -- - // Use SPA_META_VideoCrop metadata to get the frame size. KDE and GNOME do - // handle screen/window sharing differently. KDE/KWin doesn't use - // SPA_META_VideoCrop metadata and when sharing a window, it always sets -@@ -763,8 +695,8 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) { - } - - // Get the position of the video crop within the stream. Just double-check -- // that the position doesn't exceed the size of the stream itself. NOTE: -- // Currently it looks there is no implementation using this. -+ // that the position doesn't exceed the size of the stream itself. -+ // NOTE: Currently it looks there is no implementation using this. - uint32_t y_offset = - videocrop_metadata_use && - (videocrop_metadata->region.position.y + frame_size_.height() <= -@@ -777,22 +709,7 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) { - stream_size_.width()) - ? videocrop_metadata->region.position.x - : 0; -- -- const uint32_t stream_stride = kBytesPerPixel * stream_size_.width(); -- uint32_t buffer_stride = spa_buffer->datas[0].chunk->stride; -- uint32_t src_stride = buffer_stride; -- -- if (spa_buffer->datas[0].type == SPA_DATA_DmaBuf && -- buffer_stride > stream_stride) { -- // When DMA-BUFs are used, sometimes spa_buffer->stride we get might -- // contain additional padding, but after we import the buffer, the stride -- // we used is no longer relevant and we should just calculate it based on -- // the stream width. For more context see https://crbug.com/1333304. -- src_stride = stream_stride; -- } -- -- uint8_t* updated_src = -- src + (src_stride * y_offset) + (kBytesPerPixel * x_offset); -+ DesktopVector offset = DesktopVector(x_offset, y_offset); - - webrtc::MutexLock lock(&queue_lock_); - -@@ -813,9 +730,17 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) { - queue_.ReplaceCurrentFrame(SharedDesktopFrame::Wrap(std::move(frame))); - } - -- queue_.current_frame()->CopyPixelsFrom( -- updated_src, (src_stride - (kBytesPerPixel * x_offset)), -- DesktopRect::MakeWH(frame_size_.width(), frame_size_.height())); -+ bool bufferProcessed = false; -+ if (spa_buffer->datas[0].type == SPA_DATA_MemFd) { -+ bufferProcessed = -+ ProcessMemFDBuffer(buffer, *queue_.current_frame(), offset); -+ } else if (spa_buffer->datas[0].type == SPA_DATA_DmaBuf) { -+ bufferProcessed = ProcessDMABuffer(buffer, *queue_.current_frame(), offset); -+ } -+ -+ if (!bufferProcessed) { -+ return; -+ } - - if (spa_video_format_.format == SPA_VIDEO_FORMAT_RGBx || - spa_video_format_.format == SPA_VIDEO_FORMAT_RGBA) { -@@ -832,6 +757,87 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) { - DesktopRect::MakeSize(queue_.current_frame()->size())); - } - -+RTC_NO_SANITIZE("cfi-icall") -+bool SharedScreenCastStreamPrivate::ProcessMemFDBuffer( -+ pw_buffer* buffer, -+ DesktopFrame& frame, -+ const DesktopVector& offset) { -+ spa_buffer* spa_buffer = buffer->buffer; -+ ScopedBuf map; -+ uint8_t* src = nullptr; -+ -+ map.initialize( -+ static_cast( -+ mmap(nullptr, -+ spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset, -+ PROT_READ, MAP_PRIVATE, spa_buffer->datas[0].fd, 0)), -+ spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset, -+ spa_buffer->datas[0].fd); -+ -+ if (!map) { -+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno); -+ return false; -+ } -+ -+ src = SPA_MEMBER(map.get(), spa_buffer->datas[0].mapoffset, uint8_t); -+ -+ uint32_t buffer_stride = spa_buffer->datas[0].chunk->stride; -+ uint32_t src_stride = buffer_stride; -+ -+ uint8_t* updated_src = -+ src + (src_stride * offset.y()) + (kBytesPerPixel * offset.x()); -+ -+ frame.CopyPixelsFrom( -+ updated_src, (src_stride - (kBytesPerPixel * offset.x())), -+ DesktopRect::MakeWH(frame.size().width(), frame.size().height())); -+ -+ return true; -+} -+ -+RTC_NO_SANITIZE("cfi-icall") -+bool SharedScreenCastStreamPrivate::ProcessDMABuffer( -+ pw_buffer* buffer, -+ DesktopFrame& frame, -+ const DesktopVector& offset) { -+ spa_buffer* spa_buffer = buffer->buffer; -+ -+ const uint n_planes = spa_buffer->n_datas; -+ -+ if (!n_planes) { -+ return false; -+ } -+ -+ std::vector plane_datas; -+ for (uint32_t i = 0; i < n_planes; ++i) { -+ EglDmaBuf::PlaneData data = { -+ static_cast(spa_buffer->datas[i].fd), -+ static_cast(spa_buffer->datas[i].chunk->stride), -+ static_cast(spa_buffer->datas[i].chunk->offset)}; -+ plane_datas.push_back(data); -+ } -+ -+ const bool imported = egl_dmabuf_->ImageFromDmaBuf( -+ stream_size_, spa_video_format_.format, plane_datas, modifier_, offset, -+ frame.size(), frame.data()); -+ if (!imported) { -+ RTC_LOG(LS_ERROR) << "Dropping DMA-BUF modifier: " << modifier_ -+ << " and trying to renegotiate stream parameters"; -+ -+ if (pw_server_version_ >= kDropSingleModifierMinVersion) { -+ modifiers_.erase( -+ std::remove(modifiers_.begin(), modifiers_.end(), modifier_), -+ modifiers_.end()); -+ } else { -+ modifiers_.clear(); -+ } -+ -+ pw_loop_signal_event(pw_thread_loop_get_loop(pw_main_loop_), renegotiate_); -+ return false; -+ } -+ -+ return true; -+} -+ - void SharedScreenCastStreamPrivate::ConvertRGBxToBGRx(uint8_t* frame, - uint32_t size) { - for (uint32_t i = 0; i < size; i += 4) { diff --git a/lij.xpi b/lij.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2b9676be91427b3d78eb63f35d189c8817034090 Binary files /dev/null and b/lij.xpi differ diff --git a/lt.xpi b/lt.xpi new file mode 100644 index 0000000000000000000000000000000000000000..9d945b7d508f6e82253b915439f44c06439c8c2b Binary files /dev/null and b/lt.xpi differ diff --git a/lv.xpi b/lv.xpi new file mode 100644 index 0000000000000000000000000000000000000000..399dd7ae7b7111bab83c3453c836846da1ee30cd Binary files /dev/null and b/lv.xpi differ diff --git a/mk.xpi b/mk.xpi new file mode 100644 index 0000000000000000000000000000000000000000..94b0d56f9d52bb051734e42c78b15b0f9ac6276f Binary files /dev/null and b/mk.xpi differ diff --git a/mozilla-1516803.patch b/mozilla-1516803.patch deleted file mode 100644 index 5053e5196066e0d9c3f28bcac7c950e7339b15c5..0000000000000000000000000000000000000000 --- a/mozilla-1516803.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up firefox-84.0/security/sandbox/linux/moz.build.1516803 firefox-84.0/security/sandbox/linux/moz.build ---- firefox-84.0/security/sandbox/linux/moz.build.1516803 2020-12-10 16:17:55.425139545 +0100 -+++ firefox-84.0/security/sandbox/linux/moz.build 2020-12-10 16:29:21.945860841 +0100 -@@ -114,9 +114,8 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc") - # 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 - # 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"] -+if CONFIG['CC_TYPE'] != 'clang': -+ LDFLAGS += ['--param', 'lto-partitions=1'] - - DEFINES["NS_NO_XPCOM"] = True - DisableStlWrapping() diff --git a/mozilla-1663844.patch b/mozilla-1663844.patch deleted file mode 100644 index afa5168a8c92b04e21443b63706f9d3f476e1c91..0000000000000000000000000000000000000000 --- a/mozilla-1663844.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff -up firefox-109.0/dom/media/gmp/GMPSharedMemManager.h.1663844 firefox-109.0/dom/media/gmp/GMPSharedMemManager.h ---- firefox-109.0/dom/media/gmp/GMPSharedMemManager.h.1663844 2023-01-09 20:34:10.000000000 +0100 -+++ firefox-109.0/dom/media/gmp/GMPSharedMemManager.h 2023-01-12 09:28:56.035741438 +0100 -@@ -26,7 +26,7 @@ class GMPSharedMem { - // returned to the parent pool (which is not included). If more than - // this are needed, we presume the client has either crashed or hung - // (perhaps temporarily). -- static const uint32_t kGMPBufLimit = 20; -+ static const uint32_t kGMPBufLimit = 40; - - GMPSharedMem() { - for (size_t i = 0; i < sizeof(mGmpAllocated) / sizeof(mGmpAllocated[0]); -diff -up firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844 firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp ---- firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844 2023-01-09 20:34:10.000000000 +0100 -+++ firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp 2023-01-12 09:28:56.036741473 +0100 -@@ -84,6 +84,9 @@ media::DecodeSupportSet GMPDecoderModule - - media::DecodeSupportSet GMPDecoderModule::SupportsMimeType( - const nsACString& aMimeType, DecoderDoctorDiagnostics* aDiagnostics) const { -+ if (MP4Decoder::IsH264(aMimeType)) { -+ return media::DecodeSupport::SoftwareDecode; -+ } - return media::DecodeSupport::Unsupported; - } - -diff -up firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844 firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp ---- firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844 2023-01-12 09:28:56.036741473 +0100 -+++ firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp 2023-01-12 14:18:12.354866405 +0100 -@@ -81,6 +81,8 @@ void GMPVideoDecoder::Decoded(GMPVideoi4 - }); - - mDecodedData.AppendElement(std::move(v)); -+ mDecodePromise.ResolveIfExists(std::move(mDecodedData), __func__); -+ mDecodedData = DecodedData(); - } else { - mDecodedData.Clear(); - mDecodePromise.RejectIfExists( diff --git a/mozilla-1670333.patch b/mozilla-1670333.patch deleted file mode 100644 index a1eaa9a88d0d92849530049ba44cbf02b595202b..0000000000000000000000000000000000000000 --- a/mozilla-1670333.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff -up firefox-105.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-105.0/dom/media/mp4/MP4Demuxer.cpp ---- firefox-105.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2022-09-15 20:49:09.000000000 +0200 -+++ firefox-105.0/dom/media/mp4/MP4Demuxer.cpp 2022-09-20 09:16:35.404519249 +0200 -@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re - DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \ - __func__, ##__VA_ARGS__) - -+extern bool gUseKeyframeFromContainer; -+ - namespace mozilla { - - DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer); -@@ -394,6 +396,12 @@ already_AddRefed MP4TrackD - [[fallthrough]]; - case H264::FrameType::OTHER: { - bool keyframe = type == H264::FrameType::I_FRAME; -+ if (gUseKeyframeFromContainer) { -+ if (sample->mKeyframe && sample->mKeyframe != keyframe) { -+ sample->mKeyframe = keyframe; -+ } -+ break; -+ } - if (sample->mKeyframe != keyframe) { - NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe " - "@ pts:%" PRId64 " dur:%" PRId64 -diff -up firefox-105.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-105.0/dom/media/platforms/PDMFactory.cpp ---- firefox-105.0/dom/media/platforms/PDMFactory.cpp.1670333 2022-09-15 20:49:09.000000000 +0200 -+++ firefox-105.0/dom/media/platforms/PDMFactory.cpp 2022-09-20 09:20:05.369572900 +0200 -@@ -61,6 +61,8 @@ - - #include - -+bool gUseKeyframeFromContainer = false; -+ - using DecodeSupport = mozilla::media::DecodeSupport; - using DecodeSupportSet = mozilla::media::DecodeSupportSet; - using MediaCodec = mozilla::media::MediaCodec; -@@ -553,7 +555,7 @@ void PDMFactory::CreateRddPDMs() { - #ifdef MOZ_FFMPEG - if (StaticPrefs::media_ffmpeg_enabled() && - StaticPrefs::media_rdd_ffmpeg_enabled() && -- !CreateAndStartupPDM()) { -+ !(mFFmpegUsed = CreateAndStartupPDM())) { - mFailureFlags += GetFailureFlagBasedOnFFmpegStatus( - FFmpegRuntimeLinker::LinkStatusCode()); - } -@@ -653,8 +655,9 @@ void PDMFactory::CreateContentPDMs() { - - CreateAndStartupPDM(); - -- if (StaticPrefs::media_gmp_decoder_enabled() && -+ if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed && - !CreateAndStartupPDM()) { -+ gUseKeyframeFromContainer = true; - mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup; - } - } -diff -up firefox-105.0/dom/media/platforms/PDMFactory.h.1670333 firefox-105.0/dom/media/platforms/PDMFactory.h ---- firefox-105.0/dom/media/platforms/PDMFactory.h.1670333 2022-09-15 20:49:08.000000000 +0200 -+++ firefox-105.0/dom/media/platforms/PDMFactory.h 2022-09-20 09:16:35.404519249 +0200 -@@ -102,6 +102,7 @@ class PDMFactory final { - RefPtr mNullPDM; - - DecoderDoctorDiagnostics::FlagsSet mFailureFlags; -+ bool mFFmpegUsed = false; - - friend class RemoteVideoDecoderParent; - static void EnsureInit(); diff --git a/mozilla-1775202.patch b/mozilla-1775202.patch deleted file mode 100644 index e237f4c2e2d406ba0ad6bbc5057e6e2ab3568ff4..0000000000000000000000000000000000000000 --- a/mozilla-1775202.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up firefox-109.0/third_party/libwebrtc/moz.build.ppc-mobzuild firefox-109.0/third_party/libwebrtc/moz.build ---- firefox-109.0/third_party/libwebrtc/moz.build.ppc-mobzuild 2023-01-12 21:02:15.000000000 +0100 -+++ firefox-109.0/third_party/libwebrtc/moz.build 2023-01-16 13:30:28.404450100 +0100 -@@ -621,7 +621,9 @@ if CONFIG["CPU_ARCH"] == "ppc64" and CON - "/third_party/libwebrtc/api/audio_codecs/isac/audio_decoder_isac_float_gn", - "/third_party/libwebrtc/api/audio_codecs/isac/audio_encoder_isac_float_gn", - "/third_party/libwebrtc/modules/audio_coding/isac_c_gn", -- "/third_party/libwebrtc/modules/audio_coding/isac_gn" -+ "/third_party/libwebrtc/modules/audio_coding/isac_gn", -+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn", -+ "/third_party/libwebrtc/modules/desktop_capture/primitives_gn" - ] - - if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux": diff --git a/mozilla-1826583.patch b/mozilla-1826583.patch deleted file mode 100644 index 52a294717f0a3c7d93abd055a578daf98691e188..0000000000000000000000000000000000000000 --- a/mozilla-1826583.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up firefox-112.0/widget/gtk/nsWaylandDisplay.cpp.old firefox-112.0/widget/gtk/nsWaylandDisplay.cpp ---- firefox-112.0/widget/gtk/nsWaylandDisplay.cpp.old 2023-04-06 19:35:44.744731593 +0200 -+++ firefox-112.0/widget/gtk/nsWaylandDisplay.cpp 2023-04-06 19:35:23.650016723 +0200 -@@ -271,8 +271,8 @@ bool nsWaylandDisplay::Matches(wl_displa - return mThreadId == PR_GetCurrentThread() && aDisplay == mDisplay; - } - --static void WlCrashHandler(const char* format, va_list args) { -- MOZ_CRASH_UNSAFE(g_strdup_vprintf(format, args)); -+static void WlCrashHandler(const char* format, va_list args) { -+ vfprintf(stderr, format, args); - } - - nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay) diff --git a/mozilla-1827429.patch b/mozilla-1827429.patch deleted file mode 100644 index 3c908aa27024aa0f8b2395e63ca9d3032595478f..0000000000000000000000000000000000000000 --- a/mozilla-1827429.patch +++ /dev/null @@ -1,33 +0,0 @@ -changeset: 659713:2cf85addfa7a -tag: tip -parent: 659711:25045b498bff -user: stransky -date: Tue Apr 11 16:34:42 2023 +0200 -files: widget/gtk/nsWindow.cpp -description: -Bug 1827429 [Wayland] Call NotifyOcclusionState(OcclusionState::VISIBLE) from nsWindow::OnExposeEvent() as we know the window is visible r?emilio - -Differential Revision: https://phabricator.services.mozilla.com/D175138 - - -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -3730,9 +3730,14 @@ void nsWindow::CreateCompositorVsyncDisp - - gboolean nsWindow::OnExposeEvent(cairo_t* cr) { - // Send any pending resize events so that layout can update. -- // May run event loop. -+ // May run event loop and destroy us. - MaybeDispatchResized(); -- -+ if (mIsDestroyed) { -+ return FALSE; -+ } -+ -+ // This might destroy us. -+ NotifyOcclusionState(OcclusionState::VISIBLE); - if (mIsDestroyed) { - return FALSE; - } - diff --git a/mozilla-build-aarch64.patch b/mozilla-build-aarch64.patch deleted file mode 100644 index e390a284322df9606b2de0cb8378aaba620f8a20..0000000000000000000000000000000000000000 --- a/mozilla-build-aarch64.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h ---- firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm 2017-03-03 13:53:52.480754536 +0100 -+++ firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h 2017-03-03 13:56:01.476018102 +0100 -@@ -203,6 +203,10 @@ - #define SK_ARM_HAS_CRC32 - #endif - -+#if defined(__aarch64__) -+ #undef SK_ARM_HAS_NEON -+#endif -+ - ////////////////////////////////////////////////////////////////////// - - #if !defined(SKIA_IMPLEMENTATION) diff --git a/mr.xpi b/mr.xpi new file mode 100644 index 0000000000000000000000000000000000000000..d42000a6befe8dddef8db2d605656d6d630b1199 Binary files /dev/null and b/mr.xpi differ diff --git a/ms.xpi b/ms.xpi new file mode 100644 index 0000000000000000000000000000000000000000..a98f59ea59282c34092c1b15d491d4486a649084 Binary files /dev/null and b/ms.xpi differ diff --git a/my.xpi b/my.xpi new file mode 100644 index 0000000000000000000000000000000000000000..c1b919c1cff7000c179a330f8774fda9ce29d06b Binary files /dev/null and b/my.xpi differ diff --git a/nb-NO.xpi b/nb-NO.xpi new file mode 100644 index 0000000000000000000000000000000000000000..266ad66c2b044d38f97af828d446e2d50f5140df Binary files /dev/null and b/nb-NO.xpi differ diff --git a/ne-NP.xpi b/ne-NP.xpi new file mode 100644 index 0000000000000000000000000000000000000000..8c3057021205ae3f0e53f4715466c7a01a31c54c Binary files /dev/null and b/ne-NP.xpi differ diff --git a/nl.xpi b/nl.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2be8e342ca290138968492b9dfba38d11757ed30 Binary files /dev/null and b/nl.xpi differ diff --git a/nn-NO.xpi b/nn-NO.xpi new file mode 100644 index 0000000000000000000000000000000000000000..260d7368f7b11cbdd03a0a58ba2cd481e6a32784 Binary files /dev/null and b/nn-NO.xpi differ diff --git a/oc.xpi b/oc.xpi new file mode 100644 index 0000000000000000000000000000000000000000..1d4759029c2951680ed9d91c170dc6012238e745 Binary files /dev/null and b/oc.xpi differ diff --git a/pa-IN.xpi b/pa-IN.xpi new file mode 100644 index 0000000000000000000000000000000000000000..7296cf4cde839571fe38a5b16161c807d69cb339 Binary files /dev/null and b/pa-IN.xpi differ diff --git a/pl.xpi b/pl.xpi new file mode 100644 index 0000000000000000000000000000000000000000..1c8e5b16beff69d3e4f9527b012ba3b98054658e Binary files /dev/null and b/pl.xpi differ diff --git a/pt-BR.xpi b/pt-BR.xpi new file mode 100644 index 0000000000000000000000000000000000000000..cadaf1a03c0c09cd52955769afbef14ea89906a6 Binary files /dev/null and b/pt-BR.xpi differ diff --git a/pt-PT.xpi b/pt-PT.xpi new file mode 100644 index 0000000000000000000000000000000000000000..749ebadd5612527861462fba6d378a6ab793dcac Binary files /dev/null and b/pt-PT.xpi differ diff --git a/rm.xpi b/rm.xpi new file mode 100644 index 0000000000000000000000000000000000000000..ed1bb33e75bb857d19f163a0afa3cdeac304413d Binary files /dev/null and b/rm.xpi differ diff --git a/ro.xpi b/ro.xpi new file mode 100644 index 0000000000000000000000000000000000000000..28d2901269137f2fce02aec2a1cb1f555a1cebf8 Binary files /dev/null and b/ro.xpi differ diff --git a/ru.xpi b/ru.xpi new file mode 100644 index 0000000000000000000000000000000000000000..018c1b3892660a267e2c8836fb4b695a56c2dc07 Binary files /dev/null and b/ru.xpi differ diff --git a/sc.xpi b/sc.xpi new file mode 100644 index 0000000000000000000000000000000000000000..3c96d451828b538a3c6169269316955673031f91 Binary files /dev/null and b/sc.xpi differ diff --git a/sco.xpi b/sco.xpi new file mode 100644 index 0000000000000000000000000000000000000000..2d58205664d3caff02bbbc19a45cd0c2bf6e70de Binary files /dev/null and b/sco.xpi differ diff --git a/si.xpi b/si.xpi new file mode 100644 index 0000000000000000000000000000000000000000..94085614929b2ead3da30cb7a03180162513616c Binary files /dev/null and b/si.xpi differ diff --git a/sk.xpi b/sk.xpi new file mode 100644 index 0000000000000000000000000000000000000000..b6757744cd3b1a44aa85cf9898373f786e5759ef Binary files /dev/null and b/sk.xpi differ diff --git a/sl.xpi b/sl.xpi new file mode 100644 index 0000000000000000000000000000000000000000..52188a727783296d33b2621eeda42daa3d9d2b85 Binary files /dev/null and b/sl.xpi differ diff --git a/son.xpi b/son.xpi new file mode 100644 index 0000000000000000000000000000000000000000..c252840aa667724147b27af47231b17e651329f0 Binary files /dev/null and b/son.xpi differ diff --git a/sq.xpi b/sq.xpi new file mode 100644 index 0000000000000000000000000000000000000000..d2313945561a47e1f3d90a0c9c0a72bfc79390a1 Binary files /dev/null and b/sq.xpi differ diff --git a/sr.xpi b/sr.xpi new file mode 100644 index 0000000000000000000000000000000000000000..60b3a5c5ca9a869ca5c4d1b9d1def738c0f50a5e Binary files /dev/null and b/sr.xpi differ diff --git a/sv-SE.xpi b/sv-SE.xpi new file mode 100644 index 0000000000000000000000000000000000000000..3f45e31c1477505df514dbe610434b696c82aa0a Binary files /dev/null and b/sv-SE.xpi differ diff --git a/szl.xpi b/szl.xpi new file mode 100644 index 0000000000000000000000000000000000000000..577f2656deaf8694c2564598c78500bc54234a9c Binary files /dev/null and b/szl.xpi differ diff --git a/ta.xpi b/ta.xpi new file mode 100644 index 0000000000000000000000000000000000000000..8476fafb32e71d560d2d06ac4060512a03d0ff1a Binary files /dev/null and b/ta.xpi differ diff --git a/te.xpi b/te.xpi new file mode 100644 index 0000000000000000000000000000000000000000..4ea22955c1aa25fc344c9055aadfe87004de7296 Binary files /dev/null and b/te.xpi differ diff --git a/tg.xpi b/tg.xpi new file mode 100644 index 0000000000000000000000000000000000000000..188d516077832aa941e7e32868b2bcb33ddde2d6 Binary files /dev/null and b/tg.xpi differ diff --git a/th.xpi b/th.xpi new file mode 100644 index 0000000000000000000000000000000000000000..e2c63da964539052fead70bbabd95345b46d67d6 Binary files /dev/null and b/th.xpi differ diff --git a/tl.xpi b/tl.xpi new file mode 100644 index 0000000000000000000000000000000000000000..d970de49106cde257dce351fc7e862e1573c7961 Binary files /dev/null and b/tl.xpi differ diff --git a/tr.xpi b/tr.xpi new file mode 100644 index 0000000000000000000000000000000000000000..6aa9c1ff4f8a7c3e66b14d6e3acfd2eaf0880f2c Binary files /dev/null and b/tr.xpi differ diff --git a/trs.xpi b/trs.xpi new file mode 100644 index 0000000000000000000000000000000000000000..3e449c2fdcb43189613115d462c977f1322d4d23 Binary files /dev/null and b/trs.xpi differ diff --git a/uk.xpi b/uk.xpi new file mode 100644 index 0000000000000000000000000000000000000000..aa5dd5e0265a259b0f57c24e1de7e73da655351c Binary files /dev/null and b/uk.xpi differ diff --git a/ur.xpi b/ur.xpi new file mode 100644 index 0000000000000000000000000000000000000000..aa1aea8edb0813babf2a00f29f1bad4efe7bd615 Binary files /dev/null and b/ur.xpi differ diff --git a/uz.xpi b/uz.xpi new file mode 100644 index 0000000000000000000000000000000000000000..57eed213cf9d38810450f6d49977087a17e85cf2 Binary files /dev/null and b/uz.xpi differ diff --git a/vi.xpi b/vi.xpi new file mode 100644 index 0000000000000000000000000000000000000000..eaa02d692bd1fd50fbe8a6d8c8cda2d6c99680d1 Binary files /dev/null and b/vi.xpi differ diff --git a/xh.xpi b/xh.xpi new file mode 100644 index 0000000000000000000000000000000000000000..9b3f352778699747a3b33f654bd5fde5d78d4e16 Binary files /dev/null and b/xh.xpi differ diff --git a/zh-CN.xpi b/zh-CN.xpi new file mode 100644 index 0000000000000000000000000000000000000000..eb992a6d0961b3f89b1dce5e7fd39209b5eccc95 Binary files /dev/null and b/zh-CN.xpi differ diff --git a/zh-TW.xpi b/zh-TW.xpi new file mode 100644 index 0000000000000000000000000000000000000000..c5d2394866f5428059a9d52a388e12fae3586083 Binary files /dev/null and b/zh-TW.xpi differ