diff options
| author | Baptiste Daroussin <bapt@FreeBSD.org> | 2026-04-08 11:36:11 +0000 |
|---|---|---|
| committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2026-04-08 11:55:47 +0000 |
| commit | cd8a2d391eb83ac123c0e22bd27ba8c77064f3a3 (patch) | |
| tree | 20d9c38f480e9bb993b1b6582c72efc44f99aba8 | |
| parent | 082e36892d5c1f00fb726a360d7484090e57b343 (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.cc | 40 |
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}; |
