aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2026-04-08 11:36:11 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2026-04-08 11:55:47 +0000
commitcd8a2d391eb83ac123c0e22bd27ba8c77064f3a3 (patch)
tree20d9c38f480e9bb993b1b6582c72efc44f99aba8
parent082e36892d5c1f00fb726a360d7484090e57b343 (diff)
www/qt6-webengine: fix running under wayland
When starting, chromium calls GpuFence::Wait() which was not implemented on FreeBSD, on linux is calls sync_wait which does not exist on FreeBSD. Hopefully drm sync fence fds do support polling and it seems to do the trick. While here tell chromium we don't have sync_fence_info() so it does not try to go further at the risk of reaching another NOTREACH() which would trigger a crash PR: 287599
-rw-r--r--multimedia/jellyfin-desktop/Makefile (renamed from multimedia/jellyfin-media-player/Makefile)0
-rw-r--r--multimedia/jellyfin-desktop/distinfo (renamed from multimedia/jellyfin-media-player/distinfo)0
-rw-r--r--multimedia/jellyfin-desktop/files/patch-CMakeModules_CompilerFlags.cmake (renamed from multimedia/jellyfin-media-player/files/patch-CMakeModules_CompilerFlags.cmake)0
-rw-r--r--multimedia/jellyfin-desktop/files/patch-src_main.cpp (renamed from multimedia/jellyfin-media-player/files/patch-src_main.cpp)0
-rw-r--r--multimedia/jellyfin-desktop/files/patch-src_player_CodecsComponent.cpp (renamed from multimedia/jellyfin-media-player/files/patch-src_player_CodecsComponent.cpp)0
-rw-r--r--multimedia/jellyfin-desktop/files/patch-src_system_SystemComponent.cpp (renamed from multimedia/jellyfin-media-player/files/patch-src_system_SystemComponent.cpp)0
-rw-r--r--multimedia/jellyfin-desktop/files/patch-src_system_SystemComponent.h (renamed from multimedia/jellyfin-media-player/files/patch-src_system_SystemComponent.h)0
-rw-r--r--multimedia/jellyfin-desktop/pkg-descr (renamed from multimedia/jellyfin-media-player/pkg-descr)0
-rw-r--r--multimedia/jellyfin-desktop/pkg-plist (renamed from multimedia/jellyfin-media-player/pkg-plist)0
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__fence.cc40
10 files changed, 40 insertions, 0 deletions
diff --git a/multimedia/jellyfin-media-player/Makefile b/multimedia/jellyfin-desktop/Makefile
index 22b6266e143c..22b6266e143c 100644
--- a/multimedia/jellyfin-media-player/Makefile
+++ b/multimedia/jellyfin-desktop/Makefile
diff --git a/multimedia/jellyfin-media-player/distinfo b/multimedia/jellyfin-desktop/distinfo
index d914726d2404..d914726d2404 100644
--- a/multimedia/jellyfin-media-player/distinfo
+++ b/multimedia/jellyfin-desktop/distinfo
diff --git a/multimedia/jellyfin-media-player/files/patch-CMakeModules_CompilerFlags.cmake b/multimedia/jellyfin-desktop/files/patch-CMakeModules_CompilerFlags.cmake
index bad10145698a..bad10145698a 100644
--- a/multimedia/jellyfin-media-player/files/patch-CMakeModules_CompilerFlags.cmake
+++ b/multimedia/jellyfin-desktop/files/patch-CMakeModules_CompilerFlags.cmake
diff --git a/multimedia/jellyfin-media-player/files/patch-src_main.cpp b/multimedia/jellyfin-desktop/files/patch-src_main.cpp
index 1edef3804a68..1edef3804a68 100644
--- a/multimedia/jellyfin-media-player/files/patch-src_main.cpp
+++ b/multimedia/jellyfin-desktop/files/patch-src_main.cpp
diff --git a/multimedia/jellyfin-media-player/files/patch-src_player_CodecsComponent.cpp b/multimedia/jellyfin-desktop/files/patch-src_player_CodecsComponent.cpp
index a921f4d9ab77..a921f4d9ab77 100644
--- a/multimedia/jellyfin-media-player/files/patch-src_player_CodecsComponent.cpp
+++ b/multimedia/jellyfin-desktop/files/patch-src_player_CodecsComponent.cpp
diff --git a/multimedia/jellyfin-media-player/files/patch-src_system_SystemComponent.cpp b/multimedia/jellyfin-desktop/files/patch-src_system_SystemComponent.cpp
index 7e63ec9a3eed..7e63ec9a3eed 100644
--- a/multimedia/jellyfin-media-player/files/patch-src_system_SystemComponent.cpp
+++ b/multimedia/jellyfin-desktop/files/patch-src_system_SystemComponent.cpp
diff --git a/multimedia/jellyfin-media-player/files/patch-src_system_SystemComponent.h b/multimedia/jellyfin-desktop/files/patch-src_system_SystemComponent.h
index 08e4afbb50f9..08e4afbb50f9 100644
--- a/multimedia/jellyfin-media-player/files/patch-src_system_SystemComponent.h
+++ b/multimedia/jellyfin-desktop/files/patch-src_system_SystemComponent.h
diff --git a/multimedia/jellyfin-media-player/pkg-descr b/multimedia/jellyfin-desktop/pkg-descr
index 1719b6b854e4..1719b6b854e4 100644
--- a/multimedia/jellyfin-media-player/pkg-descr
+++ b/multimedia/jellyfin-desktop/pkg-descr
diff --git a/multimedia/jellyfin-media-player/pkg-plist b/multimedia/jellyfin-desktop/pkg-plist
index 84ec117c5a44..84ec117c5a44 100644
--- a/multimedia/jellyfin-media-player/pkg-plist
+++ b/multimedia/jellyfin-desktop/pkg-plist
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__fence.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__fence.cc
new file mode 100644
index 000000000000..6ab75636e199
--- /dev/null
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__fence.cc
@@ -0,0 +1,40 @@
+--- src/3rdparty/chromium/ui/gfx/gpu_fence.cc.orig 2026-01-23 20:06:19.000000000 +0100
++++ src/3rdparty/chromium/ui/gfx/gpu_fence.cc 2026-04-08 13:47:09.206288000 +0200
+@@ -9,6 +9,10 @@
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+
++#if BUILDFLAG(IS_BSD)
++#include <poll.h>
++#endif
++
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
+ #include <sync/sync.h>
+ #endif
+@@ -42,7 +46,13 @@
+ return;
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_BSD)
++ int fd = fence_handle_.Peek();
++ if (fd >= 0) {
++ struct pollfd fds = {fd, POLLIN, 0};
++ poll(&fds, 1, -1);
++ }
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
+ static const int kInfiniteSyncWaitTimeout = -1;
+ DCHECK_GE(fence_handle_.Peek(), 0);
+ if (sync_wait(fence_handle_.Peek(), kInfiniteSyncWaitTimeout) < 0) {
+@@ -57,7 +67,10 @@
+ GpuFence::FenceStatus GpuFence::GetStatusChangeTime(int fd,
+ base::TimeTicks* time) {
+ DCHECK_NE(fd, -1);
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_BSD)
++ // sync_fence_info is not available on FreeBSD.
++ return FenceStatus::kInvalid;
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
+ auto info =
+ std::unique_ptr<sync_fence_info_data, void (*)(sync_fence_info_data*)>{
+ sync_fence_info(fd), sync_fence_info_free};