From 8043453bd85eca50d4fcc3a653603535597e68bd Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 26 Feb 2024 19:46:38 +0100 Subject: Set cap sys nice again, to prevent gsr from being limited to game fps --- src/egl.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/egl.c b/src/egl.c index ec6f91c..7971dbd 100644 --- a/src/egl.c +++ b/src/egl.c @@ -9,6 +9,7 @@ #include #include #include +#include // Move this shit to a separate wayland file, and have a separate file for x11. @@ -118,6 +119,18 @@ static struct wl_registry_listener registry_listener = { .global_remove = registry_remove_object, }; +static void reset_cap_nice(void) { + cap_t caps = cap_get_proc(); + if(!caps) + return; + + const cap_value_t cap_to_remove = CAP_SYS_NICE; + cap_set_flag(caps, CAP_EFFECTIVE, 1, &cap_to_remove, CAP_CLEAR); + cap_set_flag(caps, CAP_PERMITTED, 1, &cap_to_remove, CAP_CLEAR); + cap_set_proc(caps); + cap_free(caps); +} + // TODO: Create egl context without surface (in other words, x11/wayland agnostic, doesn't require x11/wayland dependency) static bool gsr_egl_create_window(gsr_egl *self, bool wayland) { EGLConfig ecfg; @@ -131,6 +144,7 @@ static bool gsr_egl_create_window(gsr_egl *self, bool wayland) { const int32_t ctxattr[] = { EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG, /* requires cap_sys_nice, ignored otherwise */ EGL_NONE }; @@ -205,9 +219,11 @@ static bool gsr_egl_create_window(gsr_egl *self, bool wayland) { goto fail; } + reset_cap_nice(); return true; fail: + reset_cap_nice(); gsr_egl_unload(self); return false; } -- cgit v1.2.3