~ruther/guix-local

7b9cfea908a787d31d5458c386653c0780af0e86 — Ron Nazarov 2 months ago 2e91706
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 <liliana.prikler@gmail.com>
M gnu/local.mk => gnu/local.mk +1 -0
@@ 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	\

A gnu/packages/patches/mpv-0.40.0-fix-wayland-cpu-usage.patch => gnu/packages/patches/mpv-0.40.0-fix-wayland-cpu-usage.patch +34 -0
@@ 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 <llyyr.public@gmail.com>
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


M gnu/packages/video.scm => gnu/packages/video.scm +2 -1
@@ 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