From 7b9cfea908a787d31d5458c386653c0780af0e86 Mon Sep 17 00:00:00 2001 From: Ron Nazarov Date: Sat, 6 Dec 2025 03:02:21 +0000 Subject: [PATCH] gnu: mpv: Fix 100% CPU usage on wayland. * gnu/packages/patches/mpv-0.40.0-fix-wayland-cpu-usage.patch: New file. * gnu/packages/video.scm (mpv): Use it. * gnu/local.mk (dist_patch_DATA): Add it. Change-Id: I80244eacc0f8294f2b4e521217f68ada7a347bf4 Signed-off-by: Liliana Marie Prikler --- gnu/local.mk | 1 + .../mpv-0.40.0-fix-wayland-cpu-usage.patch | 34 +++++++++++++++++++ gnu/packages/video.scm | 3 +- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/mpv-0.40.0-fix-wayland-cpu-usage.patch diff --git a/gnu/local.mk b/gnu/local.mk index 656315bdb79b2f6a1a070dd685a352d3e86a8306..7a6d044d9a2eadac3b2629f2fade65b8e530d040 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1876,6 +1876,7 @@ dist_patch_DATA = \ %D%/packages/patches/mpg321-CVE-2019-14247.patch \ %D%/packages/patches/mpg321-gcc-10.patch \ %D%/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch \ + %D%/packages/patches/mpv-0.40.0-fix-wayland-cpu-usage.patch \ %D%/packages/patches/modglue-fix-build.patch \ %D%/packages/patches/modem-manager-fix-test-wrapper.patch \ %D%/packages/patches/module-init-tools-moduledir.patch \ diff --git a/gnu/packages/patches/mpv-0.40.0-fix-wayland-cpu-usage.patch b/gnu/packages/patches/mpv-0.40.0-fix-wayland-cpu-usage.patch new file mode 100644 index 0000000000000000000000000000000000000000..fdc7d3714d2d969df4cb7e5b5fa6cdcbe8e4c09e --- /dev/null +++ b/gnu/packages/patches/mpv-0.40.0-fix-wayland-cpu-usage.patch @@ -0,0 +1,34 @@ +Upstream-status: https://github.com/mpv-player/mpv/pull/16140 + +From d20ded876d27497d3fe6a9494add8106b507a45c Mon Sep 17 00:00:00 2001 +From: llyyr +Date: Fri, 28 Mar 2025 15:34:33 +0530 +Subject: [PATCH] clipboard-wayland: prevent reading from hung up fd + +This causes mpv to use up 100% of a core if there's an offer for a +mime_type that mpv doesn't accept with ext_data_control clipboard +backend. +--- + player/clipboard/clipboard-wayland.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/player/clipboard/clipboard-wayland.c b/player/clipboard/clipboard-wayland.c +index c4a5e50472..bd8ac35af2 100644 +--- a/player/clipboard/clipboard-wayland.c ++++ b/player/clipboard/clipboard-wayland.c +@@ -348,6 +348,12 @@ static bool clipboard_wayland_dispatch_events(struct clipboard_wayland_priv *wl, + if (fds[1].revents & POLLIN) + return false; + ++ if (fds[2].revents & (POLLERR | POLLHUP | POLLNVAL)) ++ destroy_offer(wl->selection_offer); ++ ++ if (fds[3].revents & (POLLERR | POLLHUP | POLLNVAL)) ++ destroy_offer(wl->primary_selection_offer); ++ + if (fds[2].revents & POLLIN) + get_selection_data(wl, wl->selection_offer, false); + +-- +2.51.0 + diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 724194e48e0367d7e7026e334dd04233e81769c5..3107c428457dff9d3fc003e638d6cfcbc0419b65 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -2743,7 +2743,8 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (base32 "0w0qk61ll0mddbkiwavqfx048sacyvp6fwglms58ypw869rh7iy7")) (patches (search-patches - "mpv-0.40.0-fix-ffmpeg-8.0.patch")))) + "mpv-0.40.0-fix-ffmpeg-8.0.patch" + "mpv-0.40.0-fix-wayland-cpu-usage.patch")))) (build-system meson-build-system) (arguments (list