diff options
author | nikatar | 2021-11-13 02:03:37 +0300 |
---|---|---|
committer | nikatar | 2021-11-13 02:03:37 +0300 |
commit | 5a0fed8e30a49a305b01c38c4b73b5930f8bd622 (patch) | |
tree | 4cdaf2fec9f028096ed5f8acec69cf3a52e9b608 | |
parent | 3a5e4b9dd96173474bfbc87f9a334a2d5404e9f3 (diff) | |
download | aur-5a0fed8e30a49a305b01c38c4b73b5930f8bd622.tar.gz |
94.0.1 + Backport a fix for LLVM 13
-rw-r--r-- | 0001-Use-remoting-name-for-GDK-application-names.patch | 6 | ||||
-rw-r--r-- | 0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch | 173 | ||||
-rw-r--r-- | PKGBUILD | 14 | ||||
-rw-r--r-- | unity-menubar.patch | 13 |
4 files changed, 192 insertions, 14 deletions
diff --git a/0001-Use-remoting-name-for-GDK-application-names.patch b/0001-Use-remoting-name-for-GDK-application-names.patch index c1feb3fc8081..86dddaba5fbb 100644 --- a/0001-Use-remoting-name-for-GDK-application-names.patch +++ b/0001-Use-remoting-name-for-GDK-application-names.patch @@ -9,10 +9,10 @@ Subject: [PATCH] Use remoting name for GDK application names 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp -index bb14d84338334..f5c0222987fb0 100644 +index 332f340179d3..840ad794f606 100644 --- a/toolkit/xre/nsAppRunner.cpp +++ b/toolkit/xre/nsAppRunner.cpp -@@ -4299,11 +4299,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) { +@@ -4285,11 +4285,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) { // consistently. // Set program name to the one defined in application.ini. @@ -26,7 +26,7 @@ index bb14d84338334..f5c0222987fb0 100644 // Initialize GTK here for splash. diff --git a/widget/gtk/nsAppShell.cpp b/widget/gtk/nsAppShell.cpp -index 60de473de07ab..004c066575c17 100644 +index 60de473de07a..004c066575c1 100644 --- a/widget/gtk/nsAppShell.cpp +++ b/widget/gtk/nsAppShell.cpp @@ -24,6 +24,8 @@ diff --git a/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch b/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch new file mode 100644 index 000000000000..b8fbbe5c8b69 --- /dev/null +++ b/0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch @@ -0,0 +1,173 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mike Hommey <mh+mozilla@glandium.org> +Date: Sat, 16 Oct 2021 01:19:56 +0000 +Subject: [PATCH] Bug 1735905 - Upgrade cubeb-pulse to fix a race condition + that can lead to shutdown deadlock. r=kinetik + +Differential Revision: https://phabricator.services.mozilla.com/D128657 +--- + .cargo/config.in | 2 +- + Cargo.lock | 6 ++-- + .../rust/cubeb-pulse/.cargo-checksum.json | 2 +- + .../rust/cubeb-pulse/src/backend/stream.rs | 33 +++++++++++-------- + toolkit/library/rust/shared/Cargo.toml | 2 +- + 5 files changed, 25 insertions(+), 20 deletions(-) + +diff --git a/.cargo/config.in b/.cargo/config.in +index dce119e25da1..6b9752c9fa1c 100644 +--- a/.cargo/config.in ++++ b/.cargo/config.in +@@ -25,7 +25,7 @@ rev = "fd02134161505f978e132114cbabdac057ce3b71" + [source."https://github.com/mozilla/cubeb-pulse-rs"] + git = "https://github.com/mozilla/cubeb-pulse-rs" + replace-with = "vendored-sources" +-rev = "e9e55a4529642da99e64452467ecaef9f7753531" ++rev = "9695281319fcb3e40db6a32cc0661548d6192f4d" + + [source."https://github.com/mozilla/cubeb-coreaudio-rs"] + git = "https://github.com/mozilla/cubeb-coreaudio-rs" +diff --git a/Cargo.lock b/Cargo.lock +index ca2466600d4e..cc7a65e08715 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -1059,7 +1059,7 @@ dependencies = [ + [[package]] + name = "cubeb-pulse" + version = "0.3.0" +-source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=e9e55a4529642da99e64452467ecaef9f7753531#e9e55a4529642da99e64452467ecaef9f7753531" ++source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=9695281319fcb3e40db6a32cc0661548d6192f4d#9695281319fcb3e40db6a32cc0661548d6192f4d" + dependencies = [ + "cubeb-backend", + "pulse", +@@ -3935,16 +3935,16 @@ dependencies = [ + [[package]] + name = "pulse" + version = "0.3.0" +-source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=e9e55a4529642da99e64452467ecaef9f7753531#e9e55a4529642da99e64452467ecaef9f7753531" ++source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=9695281319fcb3e40db6a32cc0661548d6192f4d#9695281319fcb3e40db6a32cc0661548d6192f4d" + dependencies = [ + "bitflags", + "pulse-ffi", + ] + + [[package]] + name = "pulse-ffi" + version = "0.1.0" +-source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=e9e55a4529642da99e64452467ecaef9f7753531#e9e55a4529642da99e64452467ecaef9f7753531" ++source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=9695281319fcb3e40db6a32cc0661548d6192f4d#9695281319fcb3e40db6a32cc0661548d6192f4d" + dependencies = [ + "libc", + ] +diff --git a/third_party/rust/cubeb-pulse/.cargo-checksum.json b/third_party/rust/cubeb-pulse/.cargo-checksum.json +index 1dc452bcf480..45e913931336 100644 +--- a/third_party/rust/cubeb-pulse/.cargo-checksum.json ++++ b/third_party/rust/cubeb-pulse/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"95d0d2542c04f0c932f58591b92c3051db5c95657bf5f24b6a6110f7b667568d","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.toml":"56e90cb82ec36ead07e551a28fc2455fa658fa8308c3d73f8d856d85bfcd2122","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"8969b300850b56ace07abe570940e2099774bf0bf20325be1d3ec0f5f408c8ce","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"d5da05348bf1a7f65c85b14372964a49dc4849f0aee96c75e2c18b51fb03fcaf","src/backend/stream.rs":"b17829f1b65055ada69454d0714dd7526d4d5cdeda7bba4ee03ffb6f27297e61","src/capi.rs":"fa0fa020f0d0efe55aa0fc3596405e8407bbe2cbe6c7a558345304e6da87994e","src/lib.rs":"b41bbdc562cbfb130ed7c1e53fe69944774f515705341d8ce48a2f82c8c0c2c5"},"package":null} +\ No newline at end of file ++{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"95d0d2542c04f0c932f58591b92c3051db5c95657bf5f24b6a6110f7b667568d","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.toml":"56e90cb82ec36ead07e551a28fc2455fa658fa8308c3d73f8d856d85bfcd2122","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"8969b300850b56ace07abe570940e2099774bf0bf20325be1d3ec0f5f408c8ce","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"d5da05348bf1a7f65c85b14372964a49dc4849f0aee96c75e2c18b51fb03fcaf","src/backend/stream.rs":"585b616d5487c77f6aa21a76aa6a0f7ae9de8c389bc908401a979fba8bf3450f","src/capi.rs":"fa0fa020f0d0efe55aa0fc3596405e8407bbe2cbe6c7a558345304e6da87994e","src/lib.rs":"b41bbdc562cbfb130ed7c1e53fe69944774f515705341d8ce48a2f82c8c0c2c5"},"package":null} +\ No newline at end of file +diff --git a/third_party/rust/cubeb-pulse/src/backend/stream.rs b/third_party/rust/cubeb-pulse/src/backend/stream.rs +index 8168c813e243..df64b0f2304e 100644 +--- a/third_party/rust/cubeb-pulse/src/backend/stream.rs ++++ b/third_party/rust/cubeb-pulse/src/backend/stream.rs +@@ -15,7 +15,7 @@ use ringbuf::RingBuffer; + use std::ffi::{CStr, CString}; + use std::os::raw::{c_long, c_void}; + use std::slice; +-use std::sync::atomic::{AtomicUsize, Ordering}; ++use std::sync::atomic::{AtomicPtr, AtomicUsize, Ordering}; + use std::{mem, ptr}; + + use self::LinearInputBuffer::*; +@@ -272,7 +272,7 @@ pub struct PulseStream<'ctx> { + input_stream: Option<pulse::Stream>, + data_callback: ffi::cubeb_data_callback, + state_callback: ffi::cubeb_state_callback, +- drain_timer: *mut pa_time_event, ++ drain_timer: AtomicPtr<pa_time_event>, + output_sample_spec: pulse::SampleSpec, + input_sample_spec: pulse::SampleSpec, + // output frames count excluding pre-buffering +@@ -411,7 +411,7 @@ impl<'ctx> PulseStream<'ctx> { + data_callback, + state_callback, + user_ptr, +- drain_timer: ptr::null_mut(), ++ drain_timer: AtomicPtr::new(ptr::null_mut()), + output_sample_spec: pulse::SampleSpec::default(), + input_sample_spec: pulse::SampleSpec::default(), + output_frame_count: AtomicUsize::new(0), +@@ -574,9 +574,10 @@ impl<'ctx> PulseStream<'ctx> { + self.context.mainloop.lock(); + { + if let Some(stm) = self.output_stream.take() { +- if !self.drain_timer.is_null() { ++ let drain_timer = self.drain_timer.load(Ordering::Acquire); ++ if !drain_timer.is_null() { + /* there's no pa_rttime_free, so use this instead. */ +- self.context.mainloop.get_api().time_free(self.drain_timer); ++ self.context.mainloop.get_api().time_free(drain_timer); + } + stm.clear_state_callback(); + stm.clear_write_callback(); +@@ -637,7 +638,7 @@ impl<'ctx> StreamOps for PulseStream<'ctx> { + self.shutdown = true; + // If draining is taking place wait to finish + cubeb_log!("Stream stop: waiting for drain."); +- while !self.drain_timer.is_null() { ++ while !self.drain_timer.load(Ordering::Acquire).is_null() { + self.context.mainloop.wait(); + } + cubeb_log!("Stream stop: waited for drain."); +@@ -988,11 +989,12 @@ impl<'ctx> PulseStream<'ctx> { + ) { + cubeb_logv!("Drain finished callback."); + let stm = unsafe { &mut *(u as *mut PulseStream) }; +- debug_assert_eq!(stm.drain_timer, e); ++ let drain_timer = stm.drain_timer.load(Ordering::Acquire); ++ debug_assert_eq!(drain_timer, e); + stm.state_change_callback(ffi::CUBEB_STATE_DRAINED); + /* there's no pa_rttime_free, so use this instead. */ +- a.time_free(stm.drain_timer); +- stm.drain_timer = ptr::null_mut(); ++ a.time_free(drain_timer); ++ stm.drain_timer.store(ptr::null_mut(), Ordering::Release); + stm.context.mainloop.signal(); + } + +@@ -1109,13 +1111,16 @@ impl<'ctx> PulseStream<'ctx> { + + /* pa_stream_drain is useless, see PA bug# 866. this is a workaround. */ + /* arbitrary safety margin: double the current latency. */ +- debug_assert!(self.drain_timer.is_null()); ++ debug_assert!(self.drain_timer.load(Ordering::Acquire).is_null()); + let stream_ptr = self as *const _ as *mut _; + if let Some(ref context) = self.context.context { +- self.drain_timer = context.rttime_new( +- pulse::rtclock_now() + 2 * latency, +- drained_cb, +- stream_ptr, ++ self.drain_timer.store( ++ context.rttime_new( ++ pulse::rtclock_now() + 2 * latency, ++ drained_cb, ++ stream_ptr, ++ ), ++ Ordering::Release, + ); + } + self.shutdown = true; +diff --git a/toolkit/library/rust/shared/Cargo.toml b/toolkit/library/rust/shared/Cargo.toml +index b70f8974ffb1..7d1d601c0807 100644 +--- a/toolkit/library/rust/shared/Cargo.toml ++++ b/toolkit/library/rust/shared/Cargo.toml +@@ -20,7 +20,7 @@ profiler_helper = { path = "../../../../tools/profiler/rust-helper", optional = + mozurl = { path = "../../../../netwerk/base/mozurl" } + webrender_bindings = { path = "../../../../gfx/webrender_bindings" } + cubeb-coreaudio = { git = "https://github.com/mozilla/cubeb-coreaudio-rs", rev = "4ee3b283182926f9a8bb31d603219ff2db70d2fd", optional = true } +-cubeb-pulse = { git = "https://github.com/mozilla/cubeb-pulse-rs", rev="e9e55a4529642da99e64452467ecaef9f7753531", optional = true, features=["pulse-dlopen"] } ++cubeb-pulse = { git = "https://github.com/mozilla/cubeb-pulse-rs", rev="9695281319fcb3e40db6a32cc0661548d6192f4d", optional = true, features=["pulse-dlopen"] } + cubeb-sys = { version = "0.9", optional = true, features=["gecko-in-tree"] } + encoding_glue = { path = "../../../../intl/encoding_glue" } + audioipc-client = { git = "https://github.com/mozilla/audioipc-2", rev = "8381f3812354d8d1df972c2c3ea596b70caa9a84", optional = true } @@ -7,7 +7,7 @@ pkgname=firefox-appmenu _pkgname=firefox -pkgver=93.0 +pkgver=94.0.1 pkgrel=1 pkgdesc="Firefox from extra with appmenu patch" arch=(x86_64) @@ -28,18 +28,20 @@ conflicts=("firefox") options=(!emptydirs !makeflags !strip) source=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz{,.asc} 0001-Use-remoting-name-for-GDK-application-names.patch + 0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch $_pkgname.desktop identity-icons-brand.svg fix-wayland-build.patch unity-menubar.patch fix_csd_window_buttons.patch) -sha256sums=('a78f080f5849bc284b84299f3540934a12e961a7ea368b592ae6576ea1f97102' +sha256sums=('6c09ef337a83a413d5929557043e127598c5c1e02ece3044370e55a3e2eeef70' 'SKIP' - 'bb9769a8fe720abea2bba5b895c70c4fba0d44bb553399d83350268edf85cdeb' + '51cca2cab0fa9798f96b81ed24c238b2a7c98524f589ec500224bac9797b66fb' + '744d3956ba60c63fed81903700a4cf66c13d2898944e4e86ac0d3b1e3f222fff' '34514a657d6907a159594c51e674eeb81297c431ec26a736417c2fdb995c2c0c' 'a9b8b4a0a1f4a7b4af77d5fc70c2686d624038909263c795ecc81e0aec7711e9' '46724a625f51c358abaee488a7ce75673078e96ba009459339120b8dd11dec25' - '8bbcaa48023c9eefb7f3ddfcfa4e4c6db6236664540bee7644ae9ecf790e8823' + '5a7a06a7d7a748172dbc1ff802a0c9f8208cdd520b29858ebf4a7328cac2cad4' 'e08d0bc5b7e562f5de6998060e993eddada96d93105384960207f7bdf2e1ed6e') validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com> @@ -65,6 +67,10 @@ prepare() { # https://bugzilla.mozilla.org/show_bug.cgi?id=1530052 patch -Np1 -i ../0001-Use-remoting-name-for-GDK-application-names.patch + # https://bugzilla.opensuse.org/show_bug.cgi?id=1192067 + # https://bugzilla.mozilla.org/show_bug.cgi?id=1735905 + patch -Np1 -i ../0002-Bug-1735905-Upgrade-cubeb-pulse-to-fix-a-race-condit.patch + # actual appmenu patch from ubuntu repos # http://archive.ubuntu.com/ubuntu/pool/main/f/firefox/firefox_80.0+build2-0ubuntu0.16.04.1.debian.tar.xz patch -Np1 -i ../unity-menubar.patch diff --git a/unity-menubar.patch b/unity-menubar.patch index e404f73da79a..36d9dd8fd746 100644 --- a/unity-menubar.patch +++ b/unity-menubar.patch @@ -37,15 +37,14 @@ popup.insertBefore(menu, firstMenuItem); --- a/browser/components/places/content/places.xhtml +++ b/browser/components/places/content/places.xhtml -@@ -169,7 +169,7 @@ - <toolbarbutton type="menu" class="tabbable" wantdropmarker="true" - onpopupshowing="document.getElementById('placeContent').focus()" +@@ -165,6 +165,7 @@ #else -- <menubar id="placesMenu"> -+ <menubar id="placesMenu" _moz-menubarkeeplocal="true"> - <menu accesskey="&organize.accesskey;" class="menu-iconic" + <menubar id="placesMenu"> + <menu class="menu-iconic" data-l10n-id="places-organize-button" ++ _moz-menubarkeeplocal="true" #endif - id="organizeButton" label="&organize.label;" + id="organizeButton"> + <menupopup id="organizeButtonPopup"> --- a/dom/xul/XULPopupElement.cpp +++ b/dom/xul/XULPopupElement.cpp @@ -211,6 +211,10 @@ void XULPopupElement::GetState(nsString& |