aboutsummaryrefslogtreecommitdiffstats
path: root/community/firefox/rust_audio-thread-priority.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/firefox/rust_audio-thread-priority.patch')
-rw-r--r--community/firefox/rust_audio-thread-priority.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/community/firefox/rust_audio-thread-priority.patch b/community/firefox/rust_audio-thread-priority.patch
new file mode 100644
index 0000000000..e3c64ddbbe
--- /dev/null
+++ b/community/firefox/rust_audio-thread-priority.patch
@@ -0,0 +1,39 @@
+backport of https://github.com/padenot/audio_thread_priority/commit/b5b86285d3c0cae2cb731730460f386ffa30cb03.patch
+avoids problems with serialization of RtPriorityThreadInfo in media/audioipc on musl
+
+--- a/third_party/rust/audio_thread_priority/src/rt_linux.rs 2019-12-02 13:24:01.000000000 +0100
++++ b/third_party/rust/audio_thread_priority/src/rt_linux.rs 2019-12-02 13:24:01.000000000 +0100
+@@ -31,9 +31,7 @@
+ /// process.
+ pthread_id: libc::pthread_t,
+ /// ...
+- policy: libc::c_int,
+- /// ...
+- param: libc::sched_param,
++ policy: libc::c_int
+ }
+
+ impl RtPriorityThreadInfoInternal {
+@@ -141,9 +139,11 @@
+ -> Result<(), ()> {
+ assert!(unsafe { libc::pthread_self() } == rt_priority_handle.thread_info.pthread_id);
+
++ let param = unsafe { std::mem::zeroed::<libc::sched_param>() };
++
+ if unsafe { libc::pthread_setschedparam(rt_priority_handle.thread_info.pthread_id,
+ rt_priority_handle.thread_info.policy,
+- &rt_priority_handle.thread_info.param) } < 0 {
++ &param) } < 0 {
+ error!("could not demote thread {}", OSError::last_os_error().raw_os_error().unwrap());
+ return Err(());
+ }
+@@ -187,8 +187,7 @@
+ pid,
+ thread_id,
+ pthread_id,
+- policy,
+- param
++ policy
+ })
+ }
+