Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 08 Apr 2026 11:56:26 +0000
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: cd8a2d391eb8 - main - www/qt6-webengine: fix running under wayland
Message-ID:  <69d6426a.26682.62df5653@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by bapt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=cd8a2d391eb83ac123c0e22bd27ba8c77064f3a3

commit cd8a2d391eb83ac123c0e22bd27ba8c77064f3a3
Author:     Baptiste Daroussin <bapt@FreeBSD.org>
AuthorDate: 2026-04-08 11:36:11 +0000
Commit:     Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2026-04-08 11:55:47 +0000

    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
---
 .../Makefile                                       |  0
 .../distinfo                                       |  0
 .../files/patch-CMakeModules_CompilerFlags.cmake   |  0
 .../files/patch-src_main.cpp                       |  0
 .../files/patch-src_player_CodecsComponent.cpp     |  0
 .../files/patch-src_system_SystemComponent.cpp     |  0
 .../files/patch-src_system_SystemComponent.h       |  0
 .../pkg-descr                                      |  0
 .../pkg-plist                                      |  0
 ...atch-src_3rdparty_chromium_ui_gfx_gpu__fence.cc | 40 ++++++++++++++++++++++
 10 files changed, 40 insertions(+)

diff --git a/multimedia/jellyfin-media-player/Makefile b/multimedia/jellyfin-desktop/Makefile
similarity index 100%
rename from multimedia/jellyfin-media-player/Makefile
rename to multimedia/jellyfin-desktop/Makefile
diff --git a/multimedia/jellyfin-media-player/distinfo b/multimedia/jellyfin-desktop/distinfo
similarity index 100%
rename from multimedia/jellyfin-media-player/distinfo
rename to 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
similarity index 100%
rename from multimedia/jellyfin-media-player/files/patch-CMakeModules_CompilerFlags.cmake
rename to 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
similarity index 100%
rename from multimedia/jellyfin-media-player/files/patch-src_main.cpp
rename to 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
similarity index 100%
rename from multimedia/jellyfin-media-player/files/patch-src_player_CodecsComponent.cpp
rename to 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
similarity index 100%
rename from multimedia/jellyfin-media-player/files/patch-src_system_SystemComponent.cpp
rename to 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
similarity index 100%
rename from multimedia/jellyfin-media-player/files/patch-src_system_SystemComponent.h
rename to multimedia/jellyfin-desktop/files/patch-src_system_SystemComponent.h
diff --git a/multimedia/jellyfin-media-player/pkg-descr b/multimedia/jellyfin-desktop/pkg-descr
similarity index 100%
rename from multimedia/jellyfin-media-player/pkg-descr
rename to multimedia/jellyfin-desktop/pkg-descr
diff --git a/multimedia/jellyfin-media-player/pkg-plist b/multimedia/jellyfin-desktop/pkg-plist
similarity index 100%
rename from multimedia/jellyfin-media-player/pkg-plist
rename to 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};


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69d6426a.26682.62df5653>