git: d0208b455884 - main - x11-wm/picom: suggest mac_priority(4) after b22b6eeffd22
Date: Sun, 11 Feb 2024 00:50:25 UTC
The branch main has been updated by jbeich:
URL: https://cgit.FreeBSD.org/ports/commit/?id=d0208b45588472f21fc929f92d1544028ed18ddc
commit d0208b45588472f21fc929f92d1544028ed18ddc
Author: Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2024-01-20 18:32:56 +0000
Commit: Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2024-02-11 00:49:35 +0000
x11-wm/picom: suggest mac_priority(4) after b22b6eeffd22
FreeBSD lacks setcap(8) + CAP_SYS_NICE, so permissions to set realtime
priorities like SCHED_RR are group-wide and disabled by default.
$ picom --log-level info
[...]
[ 20/01/2024 19:37:18.928 set_rr_scheduling INFO ] Failed to set real-time scheduling priority to 0. Consider giving picom the CAP_SYS_NICE capability
[...]
https://github.com/yshui/picom/commit/7d9692360b2e
---
x11-wm/picom/Makefile | 1 +
x11-wm/picom/files/patch-rtprio | 54 +++++++++++++++++++++++++++++++++++++++++
x11-wm/picom/pkg-message | 7 ++++++
3 files changed, 62 insertions(+)
diff --git a/x11-wm/picom/Makefile b/x11-wm/picom/Makefile
index 8b2d0921f66b..ed8eae9867b1 100644
--- a/x11-wm/picom/Makefile
+++ b/x11-wm/picom/Makefile
@@ -1,6 +1,7 @@
PORTNAME= picom
DISTVERSIONPREFIX= v
DISTVERSION= 11.1
+PORTREVISION= 1
CATEGORIES= x11-wm
MAINTAINER= jbeich@FreeBSD.org
diff --git a/x11-wm/picom/files/patch-rtprio b/x11-wm/picom/files/patch-rtprio
new file mode 100644
index 000000000000..e4d20a12c732
--- /dev/null
+++ b/x11-wm/picom/files/patch-rtprio
@@ -0,0 +1,54 @@
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276962
+https://github.com/yshui/picom/commit/023103c62074
+https://github.com/yshui/picom/commit/dff77aae27cf
+
+--- src/meson.build.orig 2024-01-28 18:17:19 UTC
++++ src/meson.build
+@@ -23,7 +23,7 @@ required_packages = [
+ # Some XCB packages are here because their versioning differs (see check below).
+ required_packages = [
+ 'pixman-1', 'x11', 'x11-xcb', 'xcb-image', 'xcb-renderutil', 'xcb-util',
+- 'xext'
++ 'xext', 'threads',
+ ]
+
+ foreach i : required_packages
+@@ -59,7 +59,7 @@ if get_option('opengl')
+
+ if get_option('opengl')
+ cflags += ['-DCONFIG_OPENGL', '-DGL_GLEXT_PROTOTYPES']
+- deps += [dependency('gl', required: true), dependency('egl', required: true), dependency('threads', required:true)]
++ deps += [dependency('gl', required: true), dependency('egl', required: true)]
+ srcs += [ 'opengl.c' ]
+ endif
+
+--- src/picom.c.orig 2024-01-28 18:17:19 UTC
++++ src/picom.c
+@@ -17,6 +17,7 @@
+ #include <fcntl.h>
+ #include <inttypes.h>
+ #include <math.h>
++#include <pthread.h>
+ #include <sched.h>
+ #include <stddef.h>
+ #include <stdio.h>
+@@ -2557,15 +2558,16 @@ void set_rr_scheduling(void) {
+
+ int ret;
+ struct sched_param param;
+-
+- ret = sched_getparam(0, ¶m);
++ int old_policy;
++ ret = pthread_getschedparam(pthread_self(), &old_policy, ¶m);
+ if (ret != 0) {
+ log_debug("Failed to get old scheduling priority");
+ return;
+ }
+
+ param.sched_priority = priority;
+- ret = sched_setscheduler(0, SCHED_RR, ¶m);
++
++ ret = pthread_setschedparam(pthread_self(), SCHED_RR, ¶m);
+ if (ret != 0) {
+ log_info("Failed to set real-time scheduling priority to %d.", priority);
+ return;
diff --git a/x11-wm/picom/pkg-message b/x11-wm/picom/pkg-message
new file mode 100644
index 000000000000..aa9a233ab840
--- /dev/null
+++ b/x11-wm/picom/pkg-message
@@ -0,0 +1,7 @@
+[
+{ type: install
+ message: <<EOM
+Notes:
+- picom(1) can use mac_priority(4) to avoid stutter during high load
+}
+]