Index | Thread | Search

From:
Fabien Romano <fabienromano@gmail.com>
Subject:
Re: freerdp 3.x
To:
ports <ports@openbsd.org>
Cc:
Stuart Henderson <stu@spacehopper.org>
Date:
Wed, 12 Aug 2026 08:13:46 +0100

Download raw body.

Thread
  • Stuart Henderson:

    freerdp 3.x

    • Rafael Sadowski:

      freerdp 3.x

    • Fabien Romano:

      freerdp 3.x

    • Antoine Jacoutot:

      freerdp 3.x


On 8/12/26 00:30, Stuart Henderson wrote:
> Fabien Romano found that freerdp 3.x is working again in current
> versions, it seems something has got fixed with the timer issues we
> were running into with my earlier updates.
> 
> Here's an update diff, plus changes to dependent ports (I already
> knocked out the dep in guacamole, that's in the too-hard basket at
> the moment)
> 
> security/hydra: I updated this to a version which handles freerdp3
>     earlier, diff switches the libs over.
> 
> x11/remmina: update to handle freerdp3. builds, runs, am able to
>     connect via simple RDP.
> 
> x11/gnome/connections: handles freerdp3 already, diff switches libs
>     over. runs, am able to connect via simple RDP.
> 
> x11/kde-applications/krdc: currently marked BROKEN because it needs
>    freerdp3; diff takes things part of the way but build still fails
>    at present.
> 
> anyone want to test these (or freerdp itself) further before it goes in?

I didn't try connecting to more recent Windows.
I think more tests are needed to confirm the issue is solved.

There is one timer-related test that fails but is theoretical.
It fails because it schedules 5 timers every 100 ms, and each does a sleep 11.
On OpenBSD, sleep 11 ends up sleeping more; they run for more than 100 ms.
The TimerQueue isn't designed to handle such cases and miss completion events.
I doubt this happens in real use cases.

> 
> (one diff for all the above; apply with patch -d /usr/ports -E -p0)
> 
> 
> 
> Index: x11/freerdp/Makefile
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/Makefile,v
> diff -u -p -r1.80 Makefile
> --- x11/freerdp/Makefile	21 May 2026 17:02:48 -0000	1.80
> +++ x11/freerdp/Makefile	11 Aug 2026 23:18:17 -0000
> @@ -1,34 +1,27 @@
>  COMMENT =	client for Microsoft RDP (remote desktop protocol)
>  
> -# 3.x needs posix timers, epoll-shim is no longer enough to workaround
> -DISTNAME =	freerdp-2.11.8
> -REVISION =	1
> +DISTNAME =	freerdp-3.30.0
>  
>  CATEGORIES =	x11 net
>  
>  DPB_PROPERTIES = parallel
>  
> -SHARED_LIBS +=  freerdp-client2           1.1
> -SHARED_LIBS +=  freerdp2                  3.0
> -SHARED_LIBS +=  winpr-tools2              1.0
> -SHARED_LIBS +=  winpr2                    2.1
> +SHARED_LIBS +=	freerdp-client3           0.0 # 0.0
> +SHARED_LIBS +=	freerdp3                  0.0 # 0.0
> +SHARED_LIBS +=	winpr-tools3              0.0 # 0.0
> +SHARED_LIBS +=	winpr3                    0.0 # 0.0
>  
>  HOMEPAGE =	https://www.freerdp.com/
>  SITES =		https://pub.freerdp.com/releases/
>  
> -# add sndio patchset, not yet in 2.x branch
> -# mirrored from https://github.com/FreeRDP/FreeRDP/commit/b3a2042103a192d9e4482691ce9e7d73f9475b09.patch
> -# (github patch files aren't stable)
> -SITES.sndio =	https://spacehopper.org/mirrors/
> -PATCHFILES.sndio = freerdp-sndio-upd2.patch
> -PATCH_DIST_STRIP = -p1
> -
>  # Apache 2.0
>  PERMIT_PACKAGE = Yes
>  
> -WANTLIB += X11 Xcursor Xext Xfixes Xi Xinerama Xrandr Xrender Xv
> -WANTLIB += avcodec avutil c crypto cups epoll-shim execinfo m pthread sndio
> -WANTLIB += ssl swresample usb-1.0 xkbfile
> +WANTLIB += ICE SM X11 Xcursor Xext Xfixes Xi Xinerama Xrandr Xrender
> +WANTLIB += Xv avcodec avdevice avfilter avformat avutil c crypto
> +WANTLIB += cups epoll-shim execinfo icudata icui18n icuio icuuc
> +WANTLIB += jansson m pthread sndio ssl swresample swscale uriparser
> +WANTLIB += usb-1.0 xkbfile z
>  
>  DEBUG_PACKAGES =	${BUILD_PACKAGES}
>  
> @@ -37,7 +30,6 @@ COMPILER =	base-clang ports-gcc
>  COMPILER_LANGS = c
>  
>  MODULES =	devel/cmake
> -MODCMAKE_POLICY_VERSION_OVERRIDE = Yes
>  
>  CFLAGS +=	-I${X11BASE}/include \
>  		-I${LOCALBASE}/include
> @@ -47,31 +39,47 @@ BUILD_DEPENDS =	security/pcsc-lite \
>  
>  LIB_DEPENDS =	devel/libusb1 \
>  		print/cups,-libs \
> -		graphics/ffmpeg
> +		graphics/ffmpeg \
> +		textproc/icu4c \
> +		devel/jansson \
> +		www/uriparser
>  
>  # used to work-around lack of posix timers.
>  # not quite everything is correct, but works well enough for most use.
>  LIB_DEPENDS +=	devel/epoll-shim
>  
>  CONFIGURE_ARGS += \
> +		-DUSE_VERSION_FROM_GIT_TAG=OFF \
> +		-DUSE_GIT_FOR_REVISION=OFF \
>  		-DBUILD_TESTING=ON \
>  		-DWITH_CCACHE=OFF \
>  		-DWITH_CUPS=ON \
>  		-DWITH_DIRECTFB=OFF \
> +		-DWITH_FUSE=OFF \
>  		-DWITH_GSTREAMER_0_10=OFF \
>  		-DWITH_GSTREAMER_1_0=OFF \
> +		-DWITH_KRB5=OFF \
>  		-DWITH_OPENSLES=OFF \
>  		-DWITH_PCSC=ON \
>  		-DWITH_LIBSYSTEMD=OFF \
>  		-DWITH_OSS=OFF \
>  		-DWITH_SNDIO=ON
>  
> -.if ${MACHINE_ARCH} == "sparc64"
> -CONFIGURE_ARGS +=	-DWITH_NEON=OFF
> -.endif
> +# experimental, pulls in libpam
> +CONFIGURE_ARGS += -DWITH_SERVER=OFF
>  
> -pre-configure:
> -	sed -i 's,/usr/local,${LOCALBASE},g' ${WRKSRC}/{,winpr/libwinpr/}CMakeLists.txt
> +# SDL 2.x experimental, disabled by default
> +# SDL 3.x on by default but needs devel/sdl3 devel/sdl3-ttf (the latter unported)
> +# is SDL support worth the extra deps?
> +# if so, maybe subpackage to reduce them for the common case?
> +CONFIGURE_ARGS += -DWITH_CLIENT_SDL=OFF
>  
> +# wants at least LDEP on wayland/wayland x11/xkbcommon
> +CONFIGURE_ARGS += -DWITH_WAYLAND=OFF
> +
> +# might no longer be needed
> +.if ${MACHINE_ARCH} == "sparc64"
> +CONFIGURE_ARGS += -DWITH_SIMD=OFF
> +.endif
>  
>  .include <bsd.port.mk>
> Index: x11/freerdp/distinfo
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/distinfo,v
> diff -u -p -r1.31 distinfo
> --- x11/freerdp/distinfo	26 Feb 2026 09:23:13 -0000	1.31
> +++ x11/freerdp/distinfo	11 Aug 2026 23:18:17 -0000
> @@ -1,4 +1,2 @@
> -SHA256 (freerdp-2.11.8.tar.gz) = vhGaNLBtP2l7eO/+GrfIHe6As5rjM9haF1NeZHhqEts=
> -SHA256 (freerdp-sndio-upd2.patch) = aQEVS0+WMH4D0tPX56gdMHgpiEL1d0Pv3g8QgHno6jk=
> -SIZE (freerdp-2.11.8.tar.gz) = 7330711
> -SIZE (freerdp-sndio-upd2.patch) = 23241
> +SHA256 (freerdp-3.30.0.tar.gz) = 4mh9At6m/t4ATTY5HawadM5XohD4hn/ZUDMXHUkJWQw=
> +SIZE (freerdp-3.30.0.tar.gz) = 11070523
> Index: x11/freerdp/patches/patch-CMakeLists_txt
> ===================================================================
> RCS file: x11/freerdp/patches/patch-CMakeLists_txt
> diff -N x11/freerdp/patches/patch-CMakeLists_txt
> --- x11/freerdp/patches/patch-CMakeLists_txt	28 Feb 2026 18:03:04 -0000	1.17
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,58 +0,0 @@
> -Index: CMakeLists.txt
> ---- CMakeLists.txt.orig
> -+++ CMakeLists.txt
> -@@ -85,7 +85,7 @@ if ($ENV{BUILD_NUMBER})
> - endif()
> - set(WITH_LIBRARY_VERSIONING "ON")
> - 
> --set(RAW_VERSION_STRING "2.11.8-dev")
> -+set(RAW_VERSION_STRING "2.11.8")
> - if(EXISTS "${CMAKE_SOURCE_DIR}/.source_tag")
> - 	file(READ ${CMAKE_SOURCE_DIR}/.source_tag RAW_VERSION_STRING)
> - elseif(USE_VERSION_FROM_GIT_TAG)
> -@@ -202,12 +202,14 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "BSD")
> - 	set(BSD TRUE)
> - 	if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
> - 		set(FREEBSD TRUE)
> -+		set(EPOLLSHIM TRUE)
> - 	endif()
> - 	if(${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD")
> - 		set(KFREEBSD TRUE)
> - 	endif()
> - 	if(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
> - 		set(OPENBSD TRUE)
> -+		set(EPOLLSHIM TRUE)
> - 	endif()
> - endif()
> - 
> -@@ -216,11 +218,13 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
> - 	set(FREEBSD TRUE)
> - endif()
> - 
> --if(FREEBSD)
> -+if(EPOLLSHIM)
> - 	find_path(EPOLLSHIM_INCLUDE_DIR NAMES sys/epoll.h sys/timerfd.h HINTS /usr/local/include/libepoll-shim)
> - 	find_library(EPOLLSHIM_LIBS NAMES epoll-shim libepoll-shim HINTS /usr/local/lib)
> - endif()
> - 
> -+find_library(EXECINFO_LIBS NAMES execinfo)
> -+
> - # Configure MSVC Runtime
> - if(MSVC)
> - 	include(MSVCRuntime)
> -@@ -656,12 +660,13 @@ if(UNIX OR CYGWIN)
> - 	if (HAVE_SYS_EVENTFD_H)
> - 		check_symbol_exists(eventfd_read sys/eventfd.h WITH_EVENTFD_READ_WRITE)
> - 	endif()
> --	if (FREEBSD)
> -+	if (EPOLLSHIM)
> - 		list(APPEND CMAKE_REQUIRED_INCLUDES ${EPOLLSHIM_INCLUDE_DIR})
> - 	endif()
> - 	check_include_files(sys/timerfd.h HAVE_SYS_TIMERFD_H)
> --	if (FREEBSD)
> -+	if (EPOLLSHIM)
> - 		list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${EPOLLSHIM_INCLUDE_DIR})
> -+		list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${EXECINFO_INCLUDE_DIR})
> - 	endif()
> - 	check_include_files(poll.h HAVE_POLL_H)
> - 	list(APPEND CMAKE_REQUIRED_LIBRARIES m)
> Index: x11/freerdp/patches/patch-channels_rdpdr_client_rdpdr_main_c
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/patches/patch-channels_rdpdr_client_rdpdr_main_c,v
> diff -u -p -r1.7 patch-channels_rdpdr_client_rdpdr_main_c
> --- x11/freerdp/patches/patch-channels_rdpdr_client_rdpdr_main_c	10 Feb 2024 17:52:47 -0000	1.7
> +++ x11/freerdp/patches/patch-channels_rdpdr_client_rdpdr_main_c	11 Aug 2026 23:18:17 -0000
> @@ -1,16 +1,28 @@
> +#1: no hotplug on openbsd
> +#2: static mount table returned by getmntinfo(3) on freebsd/openbsd cannot be freed
> +#3: no hotplug on openbsd
> +
>  Index: channels/rdpdr/client/rdpdr_main.c
>  --- channels/rdpdr/client/rdpdr_main.c.orig
>  +++ channels/rdpdr/client/rdpdr_main.c
> -@@ -254,7 +254,7 @@ static UINT rdpdr_send_device_list_remove_request(rdpd
> +@@ -247,7 +247,7 @@ static UINT rdpdr_send_device_list_remove_request(rdpd
>   	return rdpdr_send(rdpdr, s);
>   }
>   
>  -#if defined(_UWP) || defined(__IOS__)
>  +#if defined(_UWP) || defined(__IOS__) || defined(__OpenBSD__)
>   
> - void first_hotplug(rdpdrPlugin* rdpdr)
> - {
> -@@ -1101,7 +1101,7 @@ out:
> + static UINT handle_hotplug(WINPR_ATTR_UNUSED RdpdrClientContext* context,
> +                            WINPR_ATTR_UNUSED RdpdrHotplugEventType type)
> +@@ -842,7 +842,6 @@ static UINT handle_platform_mounts_bsd(wLog* log, hotp
> + 	{
> + 		handle_mountpoint(dev_array, size, mntbuf[idx].f_mntonname);
> + 	}
> +-	free(mntbuf);
> + 	return ERROR_SUCCESS;
> + }
> + #endif
> +@@ -1099,7 +1098,7 @@ out:
>   
>   #endif
>   
> Index: x11/freerdp/patches/patch-channels_rdpsnd_client_rdpsnd_main_c
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/patches/patch-channels_rdpsnd_client_rdpsnd_main_c,v
> diff -u -p -r1.2 patch-channels_rdpsnd_client_rdpsnd_main_c
> --- x11/freerdp/patches/patch-channels_rdpsnd_client_rdpsnd_main_c	10 Feb 2024 17:52:47 -0000	1.2
> +++ x11/freerdp/patches/patch-channels_rdpsnd_client_rdpsnd_main_c	11 Aug 2026 23:18:17 -0000
> @@ -3,13 +3,13 @@ Default /sound (without parameters) to :
>  Index: channels/rdpsnd/client/rdpsnd_main.c
>  --- channels/rdpsnd/client/rdpsnd_main.c.orig
>  +++ channels/rdpsnd/client/rdpsnd_main.c
> -@@ -986,7 +986,8 @@ static UINT rdpsnd_process_addin_args(rdpsndPlugin* rd
> +@@ -1017,7 +1017,8 @@ static UINT rdpsnd_process_addin_args(rdpsndPlugin* rd
>   			}
>   			CommandLineSwitchEnd(arg)
> - 		} while ((arg = CommandLineFindNextArgumentA(arg)) != NULL);
> + 		} while ((arg = CommandLineFindNextArgumentA(arg)) != nullptr);
>  -	}
>  +	} else
> -+		rdpsnd_set_subsystem(rdpsnd, "sndio");	/* default to sndio(7) not fake backend */
> ++		rdpsnd_set_subsystem(rdpsnd, "sndio");  /* default to sndio(7) not fake backend */
>   
>   	return CHANNEL_RC_OK;
>   }
> Index: x11/freerdp/patches/patch-channels_tsmf_client_ffmpeg_tsmf_ffmpeg_c
> ===================================================================
> RCS file: x11/freerdp/patches/patch-channels_tsmf_client_ffmpeg_tsmf_ffmpeg_c
> diff -N x11/freerdp/patches/patch-channels_tsmf_client_ffmpeg_tsmf_ffmpeg_c
> --- x11/freerdp/patches/patch-channels_tsmf_client_ffmpeg_tsmf_ffmpeg_c	7 Nov 2025 14:19:31 -0000	1.3
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,22 +0,0 @@
> -Index: channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
> ---- channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c.orig
> -+++ channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
> -@@ -624,11 +624,18 @@ static void tsmf_ffmpeg_free(ITSMFDecoder* decoder)
> - 
> - 	if (mdecoder->codec_context)
> - 	{
> -+
> -+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 69, 100)
> - 		if (mdecoder->prepared)
> - 			avcodec_close(mdecoder->codec_context);
> -+#endif
> - 
> - 		free(mdecoder->codec_context->extradata);
> -+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 69, 100)
> -+		avcodec_free_context(&mdecoder->codec_context);
> -+#else
> - 		av_free(mdecoder->codec_context);
> -+#endif
> - 	}
> - 
> - 	free(decoder);
> Index: x11/freerdp/patches/patch-client_X11_CMakeLists_txt
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/patches/patch-client_X11_CMakeLists_txt,v
> diff -u -p -r1.5 patch-client_X11_CMakeLists_txt
> --- x11/freerdp/patches/patch-client_X11_CMakeLists_txt	11 Mar 2022 20:15:31 -0000	1.5
> +++ x11/freerdp/patches/patch-client_X11_CMakeLists_txt	11 Aug 2026 23:18:17 -0000
> @@ -1,12 +1,12 @@
>  Index: client/X11/CMakeLists.txt
>  --- client/X11/CMakeLists.txt.orig
>  +++ client/X11/CMakeLists.txt
> -@@ -229,7 +229,7 @@ endif()
> - include_directories(${CMAKE_SOURCE_DIR}/resources)
> +@@ -183,7 +183,7 @@ endif()
> + list(APPEND PUB_LIBS freerdp-client)
>   
> - set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-client freerdp m)
> --if (NOT APPLE)
> -+if ((NOT APPLE) AND (NOT OPENBSD))
> - 	list(APPEND ${MODULE_PREFIX}_LIBS rt)
> + list(APPEND PRIV_LIBS m)
> +-if(NOT APPLE)
> ++if(NOT APPLE AND NOT OPENBSD)
> +   list(APPEND PRIV_LIBS rt)
>   endif()
> - target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${${MODULE_PREFIX}_LIBS})
> + target_link_libraries(${PROJECT_NAME} PUBLIC ${PUB_LIBS})
> Index: x11/freerdp/patches/patch-cmake_ConfigOptions_cmake
> ===================================================================
> RCS file: x11/freerdp/patches/patch-cmake_ConfigOptions_cmake
> diff -N x11/freerdp/patches/patch-cmake_ConfigOptions_cmake
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-cmake_ConfigOptions_cmake	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,16 @@
> +broken upstream
> +
> +Index: cmake/ConfigOptions.cmake
> +--- cmake/ConfigOptions.cmake.orig
> ++++ cmake/ConfigOptions.cmake
> +@@ -181,9 +181,7 @@ endif()
> + 
> + if(OPENBSD)
> +   find_package(SNDIO)
> +-  option(WITH_SNDIO "use SNDIO for sound" ${SNDIO_FOUND # OpenBSD
> +-         endif () }
> +-  )
> ++  option(WITH_SNDIO "use SNDIO for sound" ${SNDIO_FOUND})
> + endif()
> + 
> + option(BUILD_FUZZERS "Use BUILD_FUZZERS to build fuzzing tests" OFF)
> Index: x11/freerdp/patches/patch-cmake_FindSNDIO_cmake
> ===================================================================
> RCS file: x11/freerdp/patches/patch-cmake_FindSNDIO_cmake
> diff -N x11/freerdp/patches/patch-cmake_FindSNDIO_cmake
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-cmake_FindSNDIO_cmake	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,29 @@
> +not included when upstream merged the sndio diff
> +
> +Index: cmake/FindSNDIO.cmake
> +--- cmake/FindSNDIO.cmake.orig
> ++++ cmake/FindSNDIO.cmake
> +@@ -0,0 +1,23 @@
> ++# - Try to find sndio
> ++# Once done this will define
> ++#  SNDIO_FOUND - sndio was found
> ++#  SNDIO_INCLUDE_DIRS - sndio include directories
> ++#  SNDIO_LIBRARIES - libraries needed for linking
> ++
> ++find_package(PkgConfig QUIET)
> ++
> ++if(PKG_CONFIG_FOUND)
> ++  pkg_check_modules(PC_SNDIO QUIET sndio)
> ++endif()
> ++
> ++find_path(SNDIO_INCLUDE_DIR sndio.h HINTS ${PC_SNDIO_INCLUDEDIR} ${PC_SNDIO_INCLUDE_DIRS})
> ++
> ++find_library(SNDIO_LIBRARY NAMES sndio HINTS ${PC_SNDIO_LIBDIR} ${PC_SNDIO_LIBRARY_DIRS})
> ++
> ++include(FindPackageHandleStandardArgs)
> ++find_package_handle_standard_args(SNDIO DEFAULT_MSG SNDIO_LIBRARY SNDIO_INCLUDE_DIR)
> ++
> ++set(SNDIO_LIBRARIES ${SNDIO_LIBRARY})
> ++set(SNDIO_INCLUDE_DIRS ${SNDIO_INCLUDE_DIR})
> ++
> ++mark_as_advanced(SNDIO_INCLUDE_DIR SNDIO_LIBRARY)
> Index: x11/freerdp/patches/patch-cmake_PlatformDefaults_cmake
> ===================================================================
> RCS file: x11/freerdp/patches/patch-cmake_PlatformDefaults_cmake
> diff -N x11/freerdp/patches/patch-cmake_PlatformDefaults_cmake
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-cmake_PlatformDefaults_cmake	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,31 @@
> +Index: cmake/PlatformDefaults.cmake
> +--- cmake/PlatformDefaults.cmake.orig
> ++++ cmake/PlatformDefaults.cmake
> +@@ -23,6 +23,7 @@ if(USE_PLATFORM_DEFAULT)
> +   if("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
> +     set(BSD TRUE CACHE INTERNAL "platform default")
> +     set(FREEBSD TRUE CACHE INTERNAL "platform default")
> ++    set(EPOLLSHIM TRUE CACHE INTERNAL "platform default")
> +     # we want POSIX 2008. FreeBSD 14 does only support 2001 fully, but the subset we require from 2008
> +     # is implemented, so ignore _POSIX_VERSION from unistd.h
> +     add_compile_definitions("_POSIX_C_SOURCE=200809L")
> +@@ -65,6 +66,10 @@ if(USE_PLATFORM_DEFAULT)
> +   if(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
> +     set(BSD TRUE CACHE INTERNAL "platform default")
> +     set(OPENBSD TRUE CACHE INTERNAL "platform default")
> ++    set(EPOLLSHIM TRUE CACHE INTERNAL "platform default")
> ++    # set _POSIX_C_SOURCE, but also keep internal APIs like getthrid(2)
> ++    add_compile_definitions("_POSIX_C_SOURCE=200809L")
> ++    add_compile_definitions("_BSD_SOURCE")
> +   endif()
> + 
> +   if(${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
> +@@ -103,7 +108,7 @@ if(USE_PLATFORM_DEFAULT)
> +   endif()
> +   add_compile_definitions("WINPR_TIMEZONE_FILE=\"${WINPR_TIMEZONE_FILE}\"")
> + 
> +-  if(FREEBSD)
> ++  if(EPOLLSHIM)
> +     find_path(EPOLLSHIM_INCLUDE_DIR NAMES sys/epoll.h sys/timerfd.h HINTS /usr/local/include/libepoll-shim)
> +     find_library(EPOLLSHIM_LIBS NAMES epoll-shim libepoll-shim HINTS /usr/local/lib)
> +   endif()
> Index: x11/freerdp/patches/patch-libfreerdp_CMakeLists_txt
> ===================================================================
> RCS file: x11/freerdp/patches/patch-libfreerdp_CMakeLists_txt
> diff -N x11/freerdp/patches/patch-libfreerdp_CMakeLists_txt
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-libfreerdp_CMakeLists_txt	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,41 @@
> +Recognize the bundled FindFFmpeg's uppercase AVCODEC result for MJPEG.
> +
> +Drop useless confusing chunk. Upstream's merging process seems very
> +confusing and often results in commits that seem to be (and in some
> +cases definitely are) bad.
> +
> +Index: libfreerdp/CMakeLists.txt
> +--- libfreerdp/CMakeLists.txt.orig
> ++++ libfreerdp/CMakeLists.txt
> +@@ -176,7 +176,7 @@ if(WITH_SWSCALE)
> +     # AVUTIL is needed for av_image_* functions, AVCODEC is optional (for MJPEG in video.c)
> +     find_package(FFmpeg REQUIRED COMPONENTS SWSCALE AVUTIL)
> +     find_package(FFmpeg COMPONENTS AVCODEC)
> +-    if(FFmpeg_avcodec_FOUND)
> ++    if(FFmpeg_AVCODEC_FOUND OR FFmpeg_avcodec_FOUND)
> +       message(STATUS "FFmpeg AVCODEC found - MJPEG support available in video codec wrappers")
> +       set(WITH_FFMPEG ON)
> +     else()
> +@@ -189,22 +189,6 @@ if(WITH_CAIRO)
> +   find_package(Cairo REQUIRED)
> +   freerdp_pc_add_requires_private("cairo")
> + endif(WITH_CAIRO)
> +-
> +-# Prefer SWScale over Cairo, both at the same time are not possible.
> +-if(WITH_SWSCALE)
> +-  if(NOT WITH_SWSCALE_LOADING)
> +-    include_directories(SYSTEM ${SWSCALE_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS})
> +-    freerdp_library_add(${SWSCALE_LIBRARIES} ${AVUTIL_LIBRARIES})
> +-    if(FFmpeg_avcodec_FOUND)
> +-      include_directories(SYSTEM ${AVCODEC_INCLUDE_DIRS})
> +-      freerdp_library_add(${AVCODEC_LIBRARIES})
> +-    endif()
> +-  endif(NOT WITH_SWSCALE_LOADING)
> +-endif()
> +-if(WITH_CAIRO)
> +-  include_directories(SYSTEM ${CAIRO_INCLUDE_DIR})
> +-  freerdp_library_add(${CAIRO_LIBRARY})
> +-endif()
> + if(NOT WITH_SWSCALE AND NOT WITH_CAIRO)
> +   message(WARNING "-DWITH_SWSCALE=OFF and -DWITH_CAIRO=OFF, compiling without image scaling support!")
> + endif()
> Index: x11/freerdp/patches/patch-libfreerdp_codec_h264_ffmpeg_c
> ===================================================================
> RCS file: x11/freerdp/patches/patch-libfreerdp_codec_h264_ffmpeg_c
> diff -N x11/freerdp/patches/patch-libfreerdp_codec_h264_ffmpeg_c
> --- x11/freerdp/patches/patch-libfreerdp_codec_h264_ffmpeg_c	7 Nov 2025 14:19:31 -0000	1.5
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,27 +0,0 @@
> -Index: libfreerdp/codec/h264_ffmpeg.c
> ---- libfreerdp/codec/h264_ffmpeg.c.orig
> -+++ libfreerdp/codec/h264_ffmpeg.c
> -@@ -100,10 +100,10 @@ static void libavcodec_destroy_encoder(H264_CONTEXT* h
> - 
> - 	if (sys->codecEncoderContext)
> - 	{
> --		avcodec_close(sys->codecEncoderContext);
> - #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 69, 100)
> - 		avcodec_free_context(&sys->codecEncoderContext);
> - #else
> -+		avcodec_close(sys->codecEncoderContext);
> - 		av_free(sys->codecEncoderContext);
> - #endif
> - 	}
> -@@ -430,10 +430,10 @@ static void libavcodec_uninit(H264_CONTEXT* h264)
> - 
> - 	if (sys->codecDecoderContext)
> - 	{
> --		avcodec_close(sys->codecDecoderContext);
> - #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 69, 100)
> - 		avcodec_free_context(&sys->codecDecoderContext);
> - #else
> -+		avcodec_close(sys->codecDecoderContext);
> - 		av_free(sys->codecDecoderContext);
> - #endif
> - 	}
> Index: x11/freerdp/patches/patch-libfreerdp_core_transport_c
> ===================================================================
> RCS file: x11/freerdp/patches/patch-libfreerdp_core_transport_c
> diff -N x11/freerdp/patches/patch-libfreerdp_core_transport_c
> --- x11/freerdp/patches/patch-libfreerdp_core_transport_c	2 Aug 2022 13:02:43 -0000	1.1
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: libfreerdp/core/transport.c
> ---- libfreerdp/core/transport.c.orig
> -+++ libfreerdp/core/transport.c
> -@@ -300,7 +300,7 @@ BOOL transport_connect_tls(rdpTransport* transport)
> - 	}
> - 
> - 	transport->frontBio = tls->bio;
> --	BIO_callback_ctrl(tls->bio, BIO_CTRL_SET_CALLBACK, (bio_info_cb*)(void*)transport_ssl_cb);
> -+	BIO_callback_ctrl(tls->bio, BIO_CTRL_SET_CALLBACK, (BIO_info_cb*)(void*)transport_ssl_cb);
> - 	SSL_set_app_data(tls->ssl, transport);
> - 
> - 	if (!transport->frontBio)
> Index: x11/freerdp/patches/patch-libfreerdp_crypto_crypto_c
> ===================================================================
> RCS file: x11/freerdp/patches/patch-libfreerdp_crypto_crypto_c
> diff -N x11/freerdp/patches/patch-libfreerdp_crypto_crypto_c
> --- x11/freerdp/patches/patch-libfreerdp_crypto_crypto_c	10 Feb 2024 17:52:47 -0000	1.4
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,21 +0,0 @@
> -Index: libfreerdp/crypto/crypto.c
> ---- libfreerdp/crypto/crypto.c.orig
> -+++ libfreerdp/crypto/crypto.c
> -@@ -979,7 +979,7 @@ WINPR_MD_TYPE crypto_cert_get_signature_alg(X509* xcer
> - 			return WINPR_MD_SHA512;
> - 		case NID_ripemd160:
> - 			return WINPR_MD_RIPEMD160;
> --#if (OPENSSL_VERSION_NUMBER >= 0x1010101fL) && !defined(LIBRESSL_VERSION_NUMBER)
> -+#if (OPENSSL_VERSION_NUMBER >= 0x1010101fL) && defined(NID_sha3_256)
> - 		case NID_sha3_224:
> - 			return WINPR_MD_SHA3_224;
> - 		case NID_sha3_256:
> -@@ -988,6 +988,8 @@ WINPR_MD_TYPE crypto_cert_get_signature_alg(X509* xcer
> - 			return WINPR_MD_SHA3_384;
> - 		case NID_sha3_512:
> - 			return WINPR_MD_SHA3_512;
> -+#endif
> -+#if defined(NID_shake256)
> - 		case NID_shake128:
> - 			return WINPR_MD_SHAKE128;
> - 		case NID_shake256:
> Index: x11/freerdp/patches/patch-libfreerdp_crypto_tls_c
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/patches/patch-libfreerdp_crypto_tls_c,v
> diff -u -p -r1.10 patch-libfreerdp_crypto_tls_c
> --- x11/freerdp/patches/patch-libfreerdp_crypto_tls_c	2 Aug 2022 13:02:43 -0000	1.10
> +++ x11/freerdp/patches/patch-libfreerdp_crypto_tls_c	11 Aug 2026 23:18:17 -0000
> @@ -3,7 +3,7 @@ Use correct version of BIO_info_cb (we m
>  Index: libfreerdp/crypto/tls.c
>  --- libfreerdp/crypto/tls.c.orig
>  +++ libfreerdp/crypto/tls.c
> -@@ -484,7 +484,7 @@ static int bio_rdp_tls_free(BIO* bio)
> +@@ -536,7 +536,7 @@ static int bio_rdp_tls_free(BIO* bio)
>   	return 1;
>   }
>   
> @@ -11,13 +11,13 @@ Index: libfreerdp/crypto/tls.c
>  +static long bio_rdp_tls_callback_ctrl(BIO* bio, int cmd, BIO_info_cb* fp)
>   {
>   	long status = 0;
> - 	BIO_RDP_TLS* tls;
> -@@ -503,7 +503,7 @@ static long bio_rdp_tls_callback_ctrl(BIO* bio, int cm
> - 		{
> + 
> +@@ -555,7 +555,7 @@ static long bio_rdp_tls_callback_ctrl(BIO* bio, int cm
>   			typedef void (*fkt_t)(const SSL*, int, int);
> + 
>   			/* Documented since https://www.openssl.org/docs/man1.1.1/man3/BIO_set_callback.html
>  -			 * the argument is not really of type bio_info_cb* and must be cast
>  +			 * the argument is not really of type BIO_info_cb* and must be cast
>   			 * to the required type */
> - 			fkt_t fkt = (fkt_t)(void*)fp;
> - 			SSL_set_info_callback(tls->ssl, fkt);
> + 
> + 			fkt_t fkt = WINPR_FUNC_PTR_CAST(fp, fkt_t);
> Index: x11/freerdp/patches/patch-uwac_libuwac_CMakeLists_txt
> ===================================================================
> RCS file: x11/freerdp/patches/patch-uwac_libuwac_CMakeLists_txt
> diff -N x11/freerdp/patches/patch-uwac_libuwac_CMakeLists_txt
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-uwac_libuwac_CMakeLists_txt	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,12 @@
> +Index: uwac/libuwac/CMakeLists.txt
> +--- uwac/libuwac/CMakeLists.txt.orig
> ++++ uwac/libuwac/CMakeLists.txt
> +@@ -49,7 +49,7 @@ generate_protocol_file(ivi-application)
> + generate_protocol_file(fullscreen-shell-unstable-v1)
> + generate_protocol_file(keyboard-shortcuts-inhibit-unstable-v1)
> + 
> +-if(FREEBSD)
> ++if(EPOLLSHIM)
> +   include_directories(SYSTEM ${EPOLLSHIM_INCLUDE_DIR})
> + endif()
> + include_directories(SYSTEM ${WAYLAND_INCLUDE_DIR})
> Index: x11/freerdp/patches/patch-uwac_libuwac_uwac-os_c
> ===================================================================
> RCS file: x11/freerdp/patches/patch-uwac_libuwac_uwac-os_c
> diff -N x11/freerdp/patches/patch-uwac_libuwac_uwac-os_c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-uwac_libuwac_uwac-os_c	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,15 @@
> +Don't define the macro if there's no backend support, it breaks the
> +proper fallback in uwac_create_anonymous_file().
> +
> +Index: uwac/libuwac/uwac-os.c
> +--- uwac/libuwac/uwac-os.c.orig
> ++++ uwac/libuwac/uwac-os.c
> +@@ -43,7 +43,7 @@
> + #endif
> + 
> + /* uClibc and uClibc-ng don't provide O_TMPFILE */
> +-#if !defined(O_TMPFILE) && !defined(__FreeBSD__)
> ++#if !defined(O_TMPFILE) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
> + #define O_TMPFILE (020000000 | O_DIRECTORY)
> + #endif
> + 
> Index: x11/freerdp/patches/patch-winpr_CMakeLists_txt
> ===================================================================
> RCS file: x11/freerdp/patches/patch-winpr_CMakeLists_txt
> diff -N x11/freerdp/patches/patch-winpr_CMakeLists_txt
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-winpr_CMakeLists_txt	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,38 @@
> +Index: winpr/CMakeLists.txt
> +--- winpr/CMakeLists.txt.orig
> ++++ winpr/CMakeLists.txt
> +@@ -245,6 +245,10 @@ endif()
> + if(NOT IOS)
> +   check_include_files(fcntl.h WINPR_HAVE_FCNTL_H)
> +   check_include_files(aio.h WINPR_HAVE_AIO_H)
> ++  if(EPOLLSHIM)
> ++    list(APPEND CMAKE_REQUIRED_INCLUDES ${EPOLLSHIM_INCLUDE_DIR})
> ++    list(APPEND CMAKE_REQUIRED_LIBRARIES ${EPOLLSHIM_LIBS})
> ++  endif()
> +   check_include_files(sys/timerfd.h WINPR_HAVE_SYS_TIMERFD_H)
> +   check_include_files(unistd.h WINPR_HAVE_UNISTD_H)
> +   check_include_files(inttypes.h WINPR_HAVE_INTTYPES_H)
> +@@ -257,6 +261,10 @@ if(NOT IOS)
> +   if(WINPR_HAVE_SYS_EVENTFD_H)
> +     check_symbol_exists(eventfd_read sys/eventfd.h WITH_EVENTFD_READ_WRITE)
> +   endif()
> ++  if(EPOLLSHIM)
> ++    list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${EPOLLSHIM_INCLUDE_DIR})
> ++    list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${EPOLLSHIM_LIBS})
> ++  endif()
> + 
> +   include(CheckFunctionExists)
> +   check_function_exists(strerror_r WINPR_HAVE_STRERROR_R)
> +@@ -272,12 +280,6 @@ else()
> + endif()
> + 
> + if(UNIX OR CYGWIN)
> +-  if(FREEBSD)
> +-    list(APPEND CMAKE_REQUIRED_INCLUDES ${EPOLLSHIM_INCLUDE_DIR})
> +-  endif()
> +-  if(FREEBSD)
> +-    list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${EPOLLSHIM_INCLUDE_DIR})
> +-  endif()
> +   option(WITH_POLL "Check for and include poll.h" ON)
> +   if(WITH_POLL)
> +     check_include_files(poll.h WINPR_HAVE_POLL_H)
> Index: x11/freerdp/patches/patch-winpr_include_winpr_string_h
> ===================================================================
> RCS file: x11/freerdp/patches/patch-winpr_include_winpr_string_h
> diff -N x11/freerdp/patches/patch-winpr_include_winpr_string_h
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-winpr_include_winpr_string_h	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,13 @@
> +Include stdarg.h for the va_list type exposed by the winpr_vasprintf.
> +
> +Index: winpr/include/winpr/string.h
> +--- winpr/include/winpr/string.h.orig
> ++++ winpr/include/winpr/string.h
> +@@ -21,6 +21,7 @@
> + #ifndef WINPR_CRT_STRING_H
> + #define WINPR_CRT_STRING_H
> + 
> ++#include <stdarg.h>
> + #include <wchar.h>
> + #include <stdio.h>
> + #include <string.h>
> Index: x11/freerdp/patches/patch-winpr_libwinpr_library_CMakeLists_txt
> ===================================================================
> RCS file: x11/freerdp/patches/patch-winpr_libwinpr_library_CMakeLists_txt
> diff -N x11/freerdp/patches/patch-winpr_libwinpr_library_CMakeLists_txt
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-winpr_libwinpr_library_CMakeLists_txt	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,11 @@
> +Index: winpr/libwinpr/library/CMakeLists.txt
> +--- winpr/libwinpr/library/CMakeLists.txt.orig
> ++++ winpr/libwinpr/library/CMakeLists.txt
> +@@ -17,6 +17,6 @@
> + 
> + winpr_module_add(library.c)
> + 
> +-if(BUILD_TESTING_INTERNAL OR BUILD_TESTING)
> ++if(BUILD_TESTING_INTERNAL OR BUILD_TESTING) # AND NOT OPENBSD -- no getexepath() yet
> +   add_subdirectory(test)
> + endif()
> Index: x11/freerdp/patches/patch-winpr_libwinpr_synch_CMakeLists_txt
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/patches/patch-winpr_libwinpr_synch_CMakeLists_txt,v
> diff -u -p -r1.6 patch-winpr_libwinpr_synch_CMakeLists_txt
> --- x11/freerdp/patches/patch-winpr_libwinpr_synch_CMakeLists_txt	11 Mar 2022 20:15:31 -0000	1.6
> +++ x11/freerdp/patches/patch-winpr_libwinpr_synch_CMakeLists_txt	11 Aug 2026 23:18:17 -0000
> @@ -1,18 +1,12 @@
>  Index: winpr/libwinpr/synch/CMakeLists.txt
>  --- winpr/libwinpr/synch/CMakeLists.txt.orig
>  +++ winpr/libwinpr/synch/CMakeLists.txt
> -@@ -30,9 +30,13 @@ winpr_module_add(
> - 	timer.c
> - 	wait.c)
> +@@ -31,7 +31,7 @@ winpr_module_add(
> +   wait.c
> + )
>   
>  -if(FREEBSD)
>  +if(EPOLLSHIM)
> - 	winpr_include_directory_add(${EPOLLSHIM_INCLUDE_DIR})
> - 	winpr_library_add_private(${EPOLLSHIM_LIBS})
> -+endif()
> -+
> -+if(EXECINFO_LIBS)
> -+	winpr_library_add_private(${EXECINFO_LIBS})
> +   winpr_system_include_directory_add(${EPOLLSHIM_INCLUDE_DIR})
> +   winpr_library_add_private(${EPOLLSHIM_LIBS})
>   endif()
> - 
> - if(BUILD_TESTING)
> Index: x11/freerdp/patches/patch-winpr_libwinpr_synch_test_CMakeLists_txt
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/patches/patch-winpr_libwinpr_synch_test_CMakeLists_txt,v
> diff -u -p -r1.4 patch-winpr_libwinpr_synch_test_CMakeLists_txt
> --- x11/freerdp/patches/patch-winpr_libwinpr_synch_test_CMakeLists_txt	11 Mar 2022 20:15:31 -0000	1.4
> +++ x11/freerdp/patches/patch-winpr_libwinpr_synch_test_CMakeLists_txt	11 Aug 2026 23:18:17 -0000
> @@ -1,12 +1,19 @@
>  Index: winpr/libwinpr/synch/test/CMakeLists.txt
>  --- winpr/libwinpr/synch/test/CMakeLists.txt.orig
>  +++ winpr/libwinpr/synch/test/CMakeLists.txt
> -@@ -22,7 +22,7 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS
> - 	${${MODULE_PREFIX}_DRIVER}
> - 	${${MODULE_PREFIX}_TESTS})
> +@@ -20,9 +20,14 @@ set(${MODULE_PREFIX}_TESTS
> +     TestSynchAPC.c
> + )
> + 
> ++# openbsd doesn't have proper posix timers
> ++if(OPENBSD)
> ++  list(REMOVE_ITEM ${MODULE_PREFIX}_TESTS TestSynchTimerQueue.c)
> ++endif()
> ++
> + create_test_sourcelist(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_DRIVER} ${${MODULE_PREFIX}_TESTS})
>   
>  -if(FREEBSD)
>  +if(EPOLLSHIM)
> - 	include_directories(${EPOLLSHIM_INCLUDE_DIR})
> +   include_directories(SYSTEM ${EPOLLSHIM_INCLUDE_DIR})
>   endif()
>   
> Index: x11/freerdp/patches/patch-winpr_libwinpr_sysinfo_sysinfo_c
> ===================================================================
> RCS file: x11/freerdp/patches/patch-winpr_libwinpr_sysinfo_sysinfo_c
> diff -N x11/freerdp/patches/patch-winpr_libwinpr_sysinfo_sysinfo_c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-winpr_libwinpr_sysinfo_sysinfo_c	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,21 @@
> +Linux CLOCK_MONOTONIC is unaffected by admin jumps in time but is
> +affected by NTP skewing etc so multiple calls may return the same value.
> +CLOCK_MONOTONIC_RAW is not affected by skewing. Depending on which
> +behaviour upstream wants, this change may or may not be correct.
> +
> +Index: winpr/libwinpr/sysinfo/sysinfo.c
> +--- winpr/libwinpr/sysinfo/sysinfo.c.orig
> ++++ winpr/libwinpr/sysinfo/sysinfo.c
> +@@ -328,7 +328,11 @@ BOOL GetSystemTimeAdjustment(WINPR_ATTR_UNUSED PDWORD 
> + }
> + 
> + #ifndef CLOCK_MONOTONIC_RAW
> +-#define CLOCK_MONOTONIC_RAW 4
> ++#  if defined(__linux__)
> ++#    define CLOCK_MONOTONIC_RAW 4
> ++#  else
> ++#    define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC
> ++#  endif
> + #endif
> + 
> + DWORD GetTickCount(void)
> Index: x11/freerdp/patches/patch-winpr_libwinpr_thread_thread_c
> ===================================================================
> RCS file: x11/freerdp/patches/patch-winpr_libwinpr_thread_thread_c
> diff -N x11/freerdp/patches/patch-winpr_libwinpr_thread_thread_c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/freerdp/patches/patch-winpr_libwinpr_thread_thread_c	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,12 @@
> +Index: winpr/libwinpr/thread/thread.c
> +--- winpr/libwinpr/thread/thread.c.orig
> ++++ winpr/libwinpr/thread/thread.c
> +@@ -907,6 +907,8 @@ DWORD GetCurrentThreadId(VOID)
> + {
> + #if defined(__FreeBSD__)
> + 	return WINPR_CXX_COMPAT_CAST(DWORD, pthread_getthreadid_np());
> ++#elif defined(__OpenBSD__)
> ++	return WINPR_CXX_COMPAT_CAST(DWORD, getthrid());
> + #elif defined(__linux__)
> + 	return WINPR_CXX_COMPAT_CAST(DWORD, syscall(SYS_gettid));
> + #else
> Index: x11/freerdp/patches/patch-winpr_libwinpr_utils_collections_Queue_c
> ===================================================================
> RCS file: x11/freerdp/patches/patch-winpr_libwinpr_utils_collections_Queue_c
> diff -N x11/freerdp/patches/patch-winpr_libwinpr_utils_collections_Queue_c
> --- x11/freerdp/patches/patch-winpr_libwinpr_utils_collections_Queue_c	21 May 2026 17:02:48 -0000	1.1
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: winpr/libwinpr/utils/collections/Queue.c
> ---- winpr/libwinpr/utils/collections/Queue.c.orig
> -+++ winpr/libwinpr/utils/collections/Queue.c
> -@@ -160,7 +160,7 @@ static BOOL Queue_EnsureCapacity(wQueue* queue, size_t
> - 		if (new_capacity > SIZE_MAX / sizeof(BYTE*))
> - 			return FALSE;
> - 
> --		uintptr_t* newArray = (uintptr_t*)realloc(queue->array, sizeof(uintptr_t) * new_capacity);
> -+		void **newArray = (void**)realloc(queue->array, sizeof(uintptr_t) * new_capacity);
> - 
> - 		if (!newArray)
> - 			return FALSE;
> Index: x11/freerdp/patches/patch-winpr_libwinpr_utils_trio_triodef_h
> ===================================================================
> RCS file: x11/freerdp/patches/patch-winpr_libwinpr_utils_trio_triodef_h
> diff -N x11/freerdp/patches/patch-winpr_libwinpr_utils_trio_triodef_h
> --- x11/freerdp/patches/patch-winpr_libwinpr_utils_trio_triodef_h	11 Mar 2022 20:15:31 -0000	1.3
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: winpr/libwinpr/utils/trio/triodef.h
> ---- winpr/libwinpr/utils/trio/triodef.h.orig
> -+++ winpr/libwinpr/utils/trio/triodef.h
> -@@ -88,7 +88,7 @@
> - #endif
> - #endif
> - 
> --#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
> -+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
> - #define TRIO_PLATFORM_UNIX
> - #endif
> - 
> Index: x11/freerdp/patches/patch-winpr_winpr_pc_in
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/patches/patch-winpr_winpr_pc_in,v
> diff -u -p -r1.2 patch-winpr_winpr_pc_in
> --- x11/freerdp/patches/patch-winpr_winpr_pc_in	11 Mar 2022 20:15:31 -0000	1.2
> +++ x11/freerdp/patches/patch-winpr_winpr_pc_in	11 Aug 2026 23:18:17 -0000
> @@ -3,8 +3,8 @@ Index: winpr/winpr.pc.in
>  +++ winpr/winpr.pc.in
>  @@ -11,5 +11,5 @@ Version: @WINPR_VERSION@
>   Requires:
> - Requires.private: libssl
> + Requires.private: @WINPR_PC_REQUIRES_PRIVATE@
>   Libs: -L${libdir} ${libs}
> --Libs.private: -ldl -lrt -lm -lpthread
> +-Libs.private: @WINPR_PC_LIBRARY_PRIVATE@
>  +Libs.private: -lm -lpthread
>   Cflags: -I${includedir}
> Index: x11/freerdp/pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/pkg/PLIST,v
> diff -u -p -r1.14 PLIST
> --- x11/freerdp/pkg/PLIST	17 Feb 2023 10:05:05 -0000	1.14
> +++ x11/freerdp/pkg/PLIST	11 Aug 2026 23:18:17 -0000
> @@ -1,263 +1,316 @@
>  @pkgpath x11/freerdp,no_cups
> +@bin bin/sfreerdp
>  @bin bin/winpr-hash
>  @bin bin/winpr-makecert
>  @bin bin/xfreerdp
> -include/freerdp2/
> -include/freerdp2/freerdp/
> -include/freerdp2/freerdp/addin.h
> -include/freerdp2/freerdp/altsec.h
> -include/freerdp2/freerdp/api.h
> -include/freerdp2/freerdp/assistance.h
> -include/freerdp2/freerdp/autodetect.h
> -include/freerdp2/freerdp/build-config.h
> -include/freerdp2/freerdp/cache/
> -include/freerdp2/freerdp/cache/bitmap.h
> -include/freerdp2/freerdp/cache/brush.h
> -include/freerdp2/freerdp/cache/cache.h
> -include/freerdp2/freerdp/cache/glyph.h
> -include/freerdp2/freerdp/cache/nine_grid.h
> -include/freerdp2/freerdp/cache/offscreen.h
> -include/freerdp2/freerdp/cache/palette.h
> -include/freerdp2/freerdp/cache/pointer.h
> -include/freerdp2/freerdp/channels/
> -include/freerdp2/freerdp/channels/ainput.h
> -include/freerdp2/freerdp/channels/audin.h
> -include/freerdp2/freerdp/channels/channels.h
> -include/freerdp2/freerdp/channels/cliprdr.h
> -include/freerdp2/freerdp/channels/disp.h
> -include/freerdp2/freerdp/channels/echo.h
> -include/freerdp2/freerdp/channels/encomsp.h
> -include/freerdp2/freerdp/channels/geometry.h
> -include/freerdp2/freerdp/channels/log.h
> -include/freerdp2/freerdp/channels/rail.h
> -include/freerdp2/freerdp/channels/rdpdr.h
> -include/freerdp2/freerdp/channels/rdpecam.h
> -include/freerdp2/freerdp/channels/rdpei.h
> -include/freerdp2/freerdp/channels/rdpgfx.h
> -include/freerdp2/freerdp/channels/rdpsnd.h
> -include/freerdp2/freerdp/channels/remdesk.h
> -include/freerdp2/freerdp/channels/telemetry.h
> -include/freerdp2/freerdp/channels/tsmf.h
> -include/freerdp2/freerdp/channels/urbdrc.h
> -include/freerdp2/freerdp/channels/video.h
> -include/freerdp2/freerdp/channels/wtsvc.h
> -include/freerdp2/freerdp/client/
> -include/freerdp2/freerdp/client.h
> -include/freerdp2/freerdp/client/ainput.h
> -include/freerdp2/freerdp/client/audin.h
> -include/freerdp2/freerdp/client/channels.h
> -include/freerdp2/freerdp/client/cliprdr.h
> -include/freerdp2/freerdp/client/cmdline.h
> -include/freerdp2/freerdp/client/disp.h
> -include/freerdp2/freerdp/client/drdynvc.h
> -include/freerdp2/freerdp/client/encomsp.h
> -include/freerdp2/freerdp/client/file.h
> -include/freerdp2/freerdp/client/geometry.h
> -include/freerdp2/freerdp/client/printer.h
> -include/freerdp2/freerdp/client/rail.h
> -include/freerdp2/freerdp/client/rdpei.h
> -include/freerdp2/freerdp/client/rdpgfx.h
> -include/freerdp2/freerdp/client/rdpsnd.h
> -include/freerdp2/freerdp/client/remdesk.h
> -include/freerdp2/freerdp/client/sshagent.h
> -include/freerdp2/freerdp/client/tsmf.h
> -include/freerdp2/freerdp/client/video.h
> -include/freerdp2/freerdp/codec/
> -include/freerdp2/freerdp/codec/audio.h
> -include/freerdp2/freerdp/codec/bitmap.h
> -include/freerdp2/freerdp/codec/bulk.h
> -include/freerdp2/freerdp/codec/clear.h
> -include/freerdp2/freerdp/codec/color.h
> -include/freerdp2/freerdp/codec/dsp.h
> -include/freerdp2/freerdp/codec/h264.h
> -include/freerdp2/freerdp/codec/interleaved.h
> -include/freerdp2/freerdp/codec/jpeg.h
> -include/freerdp2/freerdp/codec/mppc.h
> -include/freerdp2/freerdp/codec/ncrush.h
> -include/freerdp2/freerdp/codec/nsc.h
> -include/freerdp2/freerdp/codec/planar.h
> -include/freerdp2/freerdp/codec/progressive.h
> -include/freerdp2/freerdp/codec/region.h
> -include/freerdp2/freerdp/codec/rfx.h
> -include/freerdp2/freerdp/codec/xcrush.h
> -include/freerdp2/freerdp/codec/yuv.h
> -include/freerdp2/freerdp/codec/zgfx.h
> -include/freerdp2/freerdp/codecs.h
> -include/freerdp2/freerdp/constants.h
> -include/freerdp2/freerdp/crypto/
> -include/freerdp2/freerdp/crypto/ber.h
> -include/freerdp2/freerdp/crypto/certificate.h
> -include/freerdp2/freerdp/crypto/crypto.h
> -include/freerdp2/freerdp/crypto/der.h
> -include/freerdp2/freerdp/crypto/er.h
> -include/freerdp2/freerdp/crypto/per.h
> -include/freerdp2/freerdp/crypto/tls.h
> -include/freerdp2/freerdp/display.h
> -include/freerdp2/freerdp/dvc.h
> -include/freerdp2/freerdp/error.h
> -include/freerdp2/freerdp/event.h
> -include/freerdp2/freerdp/extension.h
> -include/freerdp2/freerdp/freerdp.h
> -include/freerdp2/freerdp/gdi/
> -include/freerdp2/freerdp/gdi/bitmap.h
> -include/freerdp2/freerdp/gdi/dc.h
> -include/freerdp2/freerdp/gdi/gdi.h
> -include/freerdp2/freerdp/gdi/gfx.h
> -include/freerdp2/freerdp/gdi/pen.h
> -include/freerdp2/freerdp/gdi/region.h
> -include/freerdp2/freerdp/gdi/shape.h
> -include/freerdp2/freerdp/gdi/video.h
> -include/freerdp2/freerdp/graphics.h
> -include/freerdp2/freerdp/heartbeat.h
> -include/freerdp2/freerdp/input.h
> -include/freerdp2/freerdp/license.h
> -include/freerdp2/freerdp/listener.h
> -include/freerdp2/freerdp/locale/
> -include/freerdp2/freerdp/locale/keyboard.h
> -include/freerdp2/freerdp/locale/locale.h
> -include/freerdp2/freerdp/log.h
> -include/freerdp2/freerdp/message.h
> -include/freerdp2/freerdp/metrics.h
> -include/freerdp2/freerdp/peer.h
> -include/freerdp2/freerdp/pointer.h
> -include/freerdp2/freerdp/primary.h
> -include/freerdp2/freerdp/primitives.h
> -include/freerdp2/freerdp/rail.h
> -include/freerdp2/freerdp/scancode.h
> -include/freerdp2/freerdp/secondary.h
> -include/freerdp2/freerdp/server/
> -include/freerdp2/freerdp/server/ainput.h
> -include/freerdp2/freerdp/server/audin.h
> -include/freerdp2/freerdp/server/channels.h
> -include/freerdp2/freerdp/server/cliprdr.h
> -include/freerdp2/freerdp/server/disp.h
> -include/freerdp2/freerdp/server/drdynvc.h
> -include/freerdp2/freerdp/server/echo.h
> -include/freerdp2/freerdp/server/encomsp.h
> -include/freerdp2/freerdp/server/rail.h
> -include/freerdp2/freerdp/server/rdpdr.h
> -include/freerdp2/freerdp/server/rdpecam-enumerator.h
> -include/freerdp2/freerdp/server/rdpecam.h
> -include/freerdp2/freerdp/server/rdpei.h
> -include/freerdp2/freerdp/server/rdpgfx.h
> -include/freerdp2/freerdp/server/rdpsnd.h
> -include/freerdp2/freerdp/server/remdesk.h
> -include/freerdp2/freerdp/server/server-common.h
> -include/freerdp2/freerdp/server/shadow.h
> -include/freerdp2/freerdp/server/telemetry.h
> -include/freerdp2/freerdp/session.h
> -include/freerdp2/freerdp/settings.h
> -include/freerdp2/freerdp/svc.h
> -include/freerdp2/freerdp/types.h
> -include/freerdp2/freerdp/update.h
> -include/freerdp2/freerdp/utils/
> -include/freerdp2/freerdp/utils/cliprdr_utils.h
> -include/freerdp2/freerdp/utils/passphrase.h
> -include/freerdp2/freerdp/utils/pcap.h
> -include/freerdp2/freerdp/utils/profiler.h
> -include/freerdp2/freerdp/utils/ringbuffer.h
> -include/freerdp2/freerdp/utils/signal.h
> -include/freerdp2/freerdp/utils/stopwatch.h
> -include/freerdp2/freerdp/utils/string.h
> -include/freerdp2/freerdp/version.h
> -include/freerdp2/freerdp/window.h
> -include/winpr2/
> -include/winpr2/winpr/
> -include/winpr2/winpr/asn1.h
> -include/winpr2/winpr/assert.h
> -include/winpr2/winpr/bcrypt.h
> -include/winpr2/winpr/bitstream.h
> -include/winpr2/winpr/clipboard.h
> -include/winpr2/winpr/cmdline.h
> -include/winpr2/winpr/collections.h
> -include/winpr2/winpr/comm.h
> -include/winpr2/winpr/credentials.h
> -include/winpr2/winpr/credui.h
> -include/winpr2/winpr/crt.h
> -include/winpr2/winpr/crypto.h
> -include/winpr2/winpr/custom-crypto.h
> -include/winpr2/winpr/debug.h
> -include/winpr2/winpr/dsparse.h
> -include/winpr2/winpr/endian.h
> -include/winpr2/winpr/environment.h
> -include/winpr2/winpr/error.h
> -include/winpr2/winpr/file.h
> -include/winpr2/winpr/handle.h
> -include/winpr2/winpr/heap.h
> -include/winpr2/winpr/image.h
> -include/winpr2/winpr/ini.h
> -include/winpr2/winpr/input.h
> -include/winpr2/winpr/interlocked.h
> -include/winpr2/winpr/intrin.h
> -include/winpr2/winpr/io.h
> -include/winpr2/winpr/library.h
> -include/winpr2/winpr/locale.h
> -include/winpr2/winpr/memory.h
> -include/winpr2/winpr/midl.h
> -include/winpr2/winpr/ndr.h
> -include/winpr2/winpr/nt.h
> -include/winpr2/winpr/ntlm.h
> -include/winpr2/winpr/pack.h
> -include/winpr2/winpr/path.h
> -include/winpr2/winpr/pipe.h
> -include/winpr2/winpr/platform.h
> -include/winpr2/winpr/pool.h
> -include/winpr2/winpr/print.h
> -include/winpr2/winpr/registry.h
> -include/winpr2/winpr/rpc.h
> -include/winpr2/winpr/sam.h
> -include/winpr2/winpr/schannel.h
> -include/winpr2/winpr/security.h
> -include/winpr2/winpr/shell.h
> -include/winpr2/winpr/smartcard.h
> -include/winpr2/winpr/spec.h
> -include/winpr2/winpr/ssl.h
> -include/winpr2/winpr/sspi.h
> -include/winpr2/winpr/sspicli.h
> -include/winpr2/winpr/stream.h
> -include/winpr2/winpr/string.h
> -include/winpr2/winpr/strlst.h
> -include/winpr2/winpr/synch.h
> -include/winpr2/winpr/sysinfo.h
> -include/winpr2/winpr/tchar.h
> -include/winpr2/winpr/thread.h
> -include/winpr2/winpr/timezone.h
> -include/winpr2/winpr/tools/
> -include/winpr2/winpr/tools/makecert.h
> -include/winpr2/winpr/user.h
> -include/winpr2/winpr/version.h
> -include/winpr2/winpr/wincrypt.h
> -include/winpr2/winpr/windows.h
> -include/winpr2/winpr/winhttp.h
> -include/winpr2/winpr/winpr.h
> -include/winpr2/winpr/winsock.h
> -include/winpr2/winpr/wlog.h
> -include/winpr2/winpr/wnd.h
> -include/winpr2/winpr/wtsapi.h
> -include/winpr2/winpr/wtypes.h
> -lib/cmake/FreeRDP-Client2/
> -lib/cmake/FreeRDP-Client2/FreeRDP-ClientConfig.cmake
> -lib/cmake/FreeRDP-Client2/FreeRDP-ClientConfigVersion.cmake
> -lib/cmake/FreeRDP-Client2/FreeRDP-ClientTargets${MODCMAKE_BUILD_SUFFIX}
> -lib/cmake/FreeRDP-Client2/FreeRDP-ClientTargets.cmake
> -lib/cmake/FreeRDP2/
> -lib/cmake/FreeRDP2/FreeRDPConfig.cmake
> -lib/cmake/FreeRDP2/FreeRDPConfigVersion.cmake
> -lib/cmake/FreeRDP2/FreeRDPTargets${MODCMAKE_BUILD_SUFFIX}
> -lib/cmake/FreeRDP2/FreeRDPTargets.cmake
> -lib/cmake/WinPR2/
> -lib/cmake/WinPR2/WinPRConfig.cmake
> -lib/cmake/WinPR2/WinPRConfigVersion.cmake
> -lib/cmake/WinPR2/WinPRTargets${MODCMAKE_BUILD_SUFFIX}
> -lib/cmake/WinPR2/WinPRTargets.cmake
> -@lib lib/libfreerdp-client2.so.${LIBfreerdp-client2_VERSION}
> -@lib lib/libfreerdp2.so.${LIBfreerdp2_VERSION}
> -@lib lib/libwinpr-tools2.so.${LIBwinpr-tools2_VERSION}
> -@lib lib/libwinpr2.so.${LIBwinpr2_VERSION}
> -lib/pkgconfig/freerdp-client2.pc
> -lib/pkgconfig/freerdp2.pc
> -lib/pkgconfig/winpr-tools2.pc
> -lib/pkgconfig/winpr2.pc
> +include/freerdp3/
> +include/freerdp3/freerdp/
> +include/freerdp3/freerdp/addin.h
> +include/freerdp3/freerdp/altsec.h
> +include/freerdp3/freerdp/api.h
> +include/freerdp3/freerdp/assistance.h
> +include/freerdp3/freerdp/autodetect.h
> +include/freerdp3/freerdp/build-config.h
> +include/freerdp3/freerdp/buildflags.h
> +include/freerdp3/freerdp/cache/
> +include/freerdp3/freerdp/cache/persistent.h
> +include/freerdp3/freerdp/channels/
> +include/freerdp3/freerdp/channels/ainput.h
> +include/freerdp3/freerdp/channels/audin.h
> +include/freerdp3/freerdp/channels/channels.h
> +include/freerdp3/freerdp/channels/cliprdr.h
> +include/freerdp3/freerdp/channels/disp.h
> +include/freerdp3/freerdp/channels/drdynvc.h
> +include/freerdp3/freerdp/channels/echo.h
> +include/freerdp3/freerdp/channels/encomsp.h
> +include/freerdp3/freerdp/channels/geometry.h
> +include/freerdp3/freerdp/channels/gfxredir.h
> +include/freerdp3/freerdp/channels/location.h
> +include/freerdp3/freerdp/channels/log.h
> +include/freerdp3/freerdp/channels/rail.h
> +include/freerdp3/freerdp/channels/rdp2tcp.h
> +include/freerdp3/freerdp/channels/rdpdr.h
> +include/freerdp3/freerdp/channels/rdpear.h
> +include/freerdp3/freerdp/channels/rdpecam.h
> +include/freerdp3/freerdp/channels/rdpei.h
> +include/freerdp3/freerdp/channels/rdpemsc.h
> +include/freerdp3/freerdp/channels/rdpewa.h
> +include/freerdp3/freerdp/channels/rdpgfx.h
> +include/freerdp3/freerdp/channels/rdpsnd.h
> +include/freerdp3/freerdp/channels/remdesk.h
> +include/freerdp3/freerdp/channels/scard.h
> +include/freerdp3/freerdp/channels/telemetry.h
> +include/freerdp3/freerdp/channels/tsmf.h
> +include/freerdp3/freerdp/channels/urbdrc.h
> +include/freerdp3/freerdp/channels/video.h
> +include/freerdp3/freerdp/channels/wtsvc.h
> +include/freerdp3/freerdp/client/
> +include/freerdp3/freerdp/client.h
> +include/freerdp3/freerdp/client/ainput.h
> +include/freerdp3/freerdp/client/audin.h
> +include/freerdp3/freerdp/client/channels.h
> +include/freerdp3/freerdp/client/client_cliprdr_file.h
> +include/freerdp3/freerdp/client/cliprdr.h
> +include/freerdp3/freerdp/client/cmdline.h
> +include/freerdp3/freerdp/client/disp.h
> +include/freerdp3/freerdp/client/drdynvc.h
> +include/freerdp3/freerdp/client/encomsp.h
> +include/freerdp3/freerdp/client/file.h
> +include/freerdp3/freerdp/client/geometry.h
> +include/freerdp3/freerdp/client/location.h
> +include/freerdp3/freerdp/client/printer.h
> +include/freerdp3/freerdp/client/rail.h
> +include/freerdp3/freerdp/client/rdpdr.h
> +include/freerdp3/freerdp/client/rdpei.h
> +include/freerdp3/freerdp/client/rdpgfx.h
> +include/freerdp3/freerdp/client/rdpsnd.h
> +include/freerdp3/freerdp/client/remdesk.h
> +include/freerdp3/freerdp/client/sshagent.h
> +include/freerdp3/freerdp/client/tsmf.h
> +include/freerdp3/freerdp/client/utils/
> +include/freerdp3/freerdp/client/utils/smartcard_cli.h
> +include/freerdp3/freerdp/client/video.h
> +include/freerdp3/freerdp/codec/
> +include/freerdp3/freerdp/codec/audio.h
> +include/freerdp3/freerdp/codec/av1.h
> +include/freerdp3/freerdp/codec/bitmap.h
> +include/freerdp3/freerdp/codec/bulk.h
> +include/freerdp3/freerdp/codec/clear.h
> +include/freerdp3/freerdp/codec/color.h
> +include/freerdp3/freerdp/codec/dsp.h
> +include/freerdp3/freerdp/codec/h264.h
> +include/freerdp3/freerdp/codec/interleaved.h
> +include/freerdp3/freerdp/codec/jpeg.h
> +include/freerdp3/freerdp/codec/nsc.h
> +include/freerdp3/freerdp/codec/planar.h
> +include/freerdp3/freerdp/codec/progressive.h
> +include/freerdp3/freerdp/codec/region.h
> +include/freerdp3/freerdp/codec/rfx.h
> +include/freerdp3/freerdp/codec/video.h
> +include/freerdp3/freerdp/codec/yuv.h
> +include/freerdp3/freerdp/codec/zgfx.h
> +include/freerdp3/freerdp/codecs.h
> +include/freerdp3/freerdp/config.h
> +include/freerdp3/freerdp/constants.h
> +include/freerdp3/freerdp/crypto/
> +include/freerdp3/freerdp/crypto/ber.h
> +include/freerdp3/freerdp/crypto/certificate.h
> +include/freerdp3/freerdp/crypto/certificate_data.h
> +include/freerdp3/freerdp/crypto/certificate_store.h
> +include/freerdp3/freerdp/crypto/crypto.h
> +include/freerdp3/freerdp/crypto/der.h
> +include/freerdp3/freerdp/crypto/er.h
> +include/freerdp3/freerdp/crypto/per.h
> +include/freerdp3/freerdp/crypto/privatekey.h
> +include/freerdp3/freerdp/display.h
> +include/freerdp3/freerdp/dvc.h
> +include/freerdp3/freerdp/emulate/
> +include/freerdp3/freerdp/emulate/scard/
> +include/freerdp3/freerdp/emulate/scard/smartcard_emulate.h
> +include/freerdp3/freerdp/error.h
> +include/freerdp3/freerdp/event.h
> +include/freerdp3/freerdp/extension.h
> +include/freerdp3/freerdp/freerdp.h
> +include/freerdp3/freerdp/gdi/
> +include/freerdp3/freerdp/gdi/bitmap.h
> +include/freerdp3/freerdp/gdi/dc.h
> +include/freerdp3/freerdp/gdi/gdi.h
> +include/freerdp3/freerdp/gdi/gfx.h
> +include/freerdp3/freerdp/gdi/pen.h
> +include/freerdp3/freerdp/gdi/region.h
> +include/freerdp3/freerdp/gdi/shape.h
> +include/freerdp3/freerdp/gdi/video.h
> +include/freerdp3/freerdp/graphics.h
> +include/freerdp3/freerdp/heartbeat.h
> +include/freerdp3/freerdp/input.h
> +include/freerdp3/freerdp/license.h
> +include/freerdp3/freerdp/listener.h
> +include/freerdp3/freerdp/locale/
> +include/freerdp3/freerdp/locale/keyboard.h
> +include/freerdp3/freerdp/locale/locale.h
> +include/freerdp3/freerdp/log.h
> +include/freerdp3/freerdp/message.h
> +include/freerdp3/freerdp/metrics.h
> +include/freerdp3/freerdp/peer.h
> +include/freerdp3/freerdp/pointer.h
> +include/freerdp3/freerdp/primary.h
> +include/freerdp3/freerdp/primitives.h
> +include/freerdp3/freerdp/rail.h
> +include/freerdp3/freerdp/redirection.h
> +include/freerdp3/freerdp/scancode.h
> +include/freerdp3/freerdp/secondary.h
> +include/freerdp3/freerdp/server/
> +include/freerdp3/freerdp/server/ainput.h
> +include/freerdp3/freerdp/server/audin.h
> +include/freerdp3/freerdp/server/channels.h
> +include/freerdp3/freerdp/server/cliprdr.h
> +include/freerdp3/freerdp/server/disp.h
> +include/freerdp3/freerdp/server/drdynvc.h
> +include/freerdp3/freerdp/server/echo.h
> +include/freerdp3/freerdp/server/encomsp.h
> +include/freerdp3/freerdp/server/gfxredir.h
> +include/freerdp3/freerdp/server/location.h
> +include/freerdp3/freerdp/server/proxy/
> +include/freerdp3/freerdp/server/proxy/proxy_config.h
> +include/freerdp3/freerdp/server/proxy/proxy_context.h
> +include/freerdp3/freerdp/server/proxy/proxy_log.h
> +include/freerdp3/freerdp/server/proxy/proxy_modules_api.h
> +include/freerdp3/freerdp/server/proxy/proxy_server.h
> +include/freerdp3/freerdp/server/proxy/proxy_types.h
> +include/freerdp3/freerdp/server/rail.h
> +include/freerdp3/freerdp/server/rdpdr.h
> +include/freerdp3/freerdp/server/rdpecam-enumerator.h
> +include/freerdp3/freerdp/server/rdpecam.h
> +include/freerdp3/freerdp/server/rdpei.h
> +include/freerdp3/freerdp/server/rdpemsc.h
> +include/freerdp3/freerdp/server/rdpgfx.h
> +include/freerdp3/freerdp/server/rdpsnd.h
> +include/freerdp3/freerdp/server/remdesk.h
> +include/freerdp3/freerdp/server/server-common.h
> +include/freerdp3/freerdp/server/shadow.h
> +include/freerdp3/freerdp/server/telemetry.h
> +include/freerdp3/freerdp/session.h
> +include/freerdp3/freerdp/settings.h
> +include/freerdp3/freerdp/settings_keys.h
> +include/freerdp3/freerdp/settings_types.h
> +include/freerdp3/freerdp/settings_types_private.h
> +include/freerdp3/freerdp/streamdump.h
> +include/freerdp3/freerdp/svc.h
> +include/freerdp3/freerdp/timer.h
> +include/freerdp3/freerdp/transport_io.h
> +include/freerdp3/freerdp/types.h
> +include/freerdp3/freerdp/update.h
> +include/freerdp3/freerdp/utils/
> +include/freerdp3/freerdp/utils/aad.h
> +include/freerdp3/freerdp/utils/channel_pdu_tracker.h
> +include/freerdp3/freerdp/utils/cliprdr_utils.h
> +include/freerdp3/freerdp/utils/drdynvc.h
> +include/freerdp3/freerdp/utils/encoded_types.h
> +include/freerdp3/freerdp/utils/gfx.h
> +include/freerdp3/freerdp/utils/helpers.h
> +include/freerdp3/freerdp/utils/http.h
> +include/freerdp3/freerdp/utils/passphrase.h
> +include/freerdp3/freerdp/utils/pcap.h
> +include/freerdp3/freerdp/utils/pod_arrays.h
> +include/freerdp3/freerdp/utils/profiler.h
> +include/freerdp3/freerdp/utils/proxy_utils.h
> +include/freerdp3/freerdp/utils/rdpdr_utils.h
> +include/freerdp3/freerdp/utils/ringbuffer.h
> +include/freerdp3/freerdp/utils/signal.h
> +include/freerdp3/freerdp/utils/smartcard_call.h
> +include/freerdp3/freerdp/utils/smartcard_operations.h
> +include/freerdp3/freerdp/utils/smartcard_pack.h
> +include/freerdp3/freerdp/utils/smartcardlogon.h
> +include/freerdp3/freerdp/utils/stopwatch.h
> +include/freerdp3/freerdp/utils/string.h
> +include/freerdp3/freerdp/utils/warnings.h
> +include/freerdp3/freerdp/version.h
> +include/freerdp3/freerdp/window.h
> +include/winpr3/
> +include/winpr3/winpr/
> +include/winpr3/winpr/asn1.h
> +include/winpr3/winpr/assert-api.h
> +include/winpr3/winpr/assert.h
> +include/winpr3/winpr/atexit.h
> +include/winpr3/winpr/bcrypt.h
> +include/winpr3/winpr/bitstream.h
> +include/winpr3/winpr/build-config.h
> +include/winpr3/winpr/buildflags.h
> +include/winpr3/winpr/cast.h
> +include/winpr3/winpr/clipboard.h
> +include/winpr3/winpr/cmdline.h
> +include/winpr3/winpr/collections.h
> +include/winpr3/winpr/comm.h
> +include/winpr3/winpr/config.h
> +include/winpr3/winpr/cred.h
> +include/winpr3/winpr/crt.h
> +include/winpr3/winpr/crypto.h
> +include/winpr3/winpr/custom-crypto.h
> +include/winpr3/winpr/debug.h
> +include/winpr3/winpr/dsparse.h
> +include/winpr3/winpr/endian.h
> +include/winpr3/winpr/environment.h
> +include/winpr3/winpr/error.h
> +include/winpr3/winpr/file.h
> +include/winpr3/winpr/handle.h
> +include/winpr3/winpr/image.h
> +include/winpr3/winpr/ini.h
> +include/winpr3/winpr/input.h
> +include/winpr3/winpr/interlocked.h
> +include/winpr3/winpr/intrin.h
> +include/winpr3/winpr/io.h
> +include/winpr3/winpr/json.h
> +include/winpr3/winpr/library.h
> +include/winpr3/winpr/memory.h
> +include/winpr3/winpr/ncrypt.h
> +include/winpr3/winpr/nt.h
> +include/winpr3/winpr/ntlm.h
> +include/winpr3/winpr/pack.h
> +include/winpr3/winpr/path.h
> +include/winpr3/winpr/pipe.h
> +include/winpr3/winpr/platform.h
> +include/winpr3/winpr/pool.h
> +include/winpr3/winpr/print.h
> +include/winpr3/winpr/registry.h
> +include/winpr3/winpr/rpc.h
> +include/winpr3/winpr/sam.h
> +include/winpr3/winpr/schannel.h
> +include/winpr3/winpr/secapi.h
> +include/winpr3/winpr/security.h
> +include/winpr3/winpr/shell.h
> +include/winpr3/winpr/smartcard.h
> +include/winpr3/winpr/spec.h
> +include/winpr3/winpr/ssl.h
> +include/winpr3/winpr/sspi.h
> +include/winpr3/winpr/sspicli.h
> +include/winpr3/winpr/stream.h
> +include/winpr3/winpr/string.h
> +include/winpr3/winpr/strlst.h
> +include/winpr3/winpr/synch.h
> +include/winpr3/winpr/sysinfo.h
> +include/winpr3/winpr/tchar.h
> +include/winpr3/winpr/thread.h
> +include/winpr3/winpr/timezone.h
> +include/winpr3/winpr/tools/
> +include/winpr3/winpr/tools/makecert.h
> +include/winpr3/winpr/user.h
> +include/winpr3/winpr/version.h
> +include/winpr3/winpr/wincrypt.h
> +include/winpr3/winpr/windows.h
> +include/winpr3/winpr/winpr.h
> +include/winpr3/winpr/winsock.h
> +include/winpr3/winpr/wlog.h
> +include/winpr3/winpr/wtsapi.h
> +include/winpr3/winpr/wtypes.h
> +lib/cmake/
> +lib/cmake/FreeRDP-Client3/
> +lib/cmake/FreeRDP-Client3/FreeRDP-ClientConfig.cmake
> +lib/cmake/FreeRDP-Client3/FreeRDP-ClientConfigVersion.cmake
> +lib/cmake/FreeRDP-Client3/FreeRDP-ClientTargets${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/FreeRDP-Client3/FreeRDP-ClientTargets.cmake
> +lib/cmake/FreeRDP3/
> +lib/cmake/FreeRDP3/FreeRDPConfig.cmake
> +lib/cmake/FreeRDP3/FreeRDPConfigVersion.cmake
> +lib/cmake/FreeRDP3/FreeRDPTargets${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/FreeRDP3/FreeRDPTargets.cmake
> +lib/cmake/WinPR-tools3/
> +lib/cmake/WinPR-tools3/WinPR-toolsConfig.cmake
> +lib/cmake/WinPR-tools3/WinPR-toolsConfigVersion.cmake
> +lib/cmake/WinPR-tools3/WinPR-toolsTargets${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/WinPR-tools3/WinPR-toolsTargets.cmake
> +lib/cmake/WinPR3/
> +lib/cmake/WinPR3/WinPRConfig.cmake
> +lib/cmake/WinPR3/WinPRConfigVersion.cmake
> +lib/cmake/WinPR3/WinPRTargets${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/WinPR3/WinPRTargets.cmake
> +@lib lib/libfreerdp-client3.so.${LIBfreerdp-client3_VERSION}
> +@lib lib/libfreerdp3.so.${LIBfreerdp3_VERSION}
> +@lib lib/libwinpr-tools3.so.${LIBwinpr-tools3_VERSION}
> +@lib lib/libwinpr3.so.${LIBwinpr3_VERSION}
> +lib/pkgconfig/freerdp-client3.pc
> +lib/pkgconfig/freerdp3.pc
> +lib/pkgconfig/winpr-tools3.pc
> +lib/pkgconfig/winpr3.pc
>  @man man/man1/winpr-hash.1
>  @man man/man1/winpr-makecert.1
>  @man man/man1/xfreerdp.1
> Index: security/hydra/Makefile
> ===================================================================
> RCS file: /cvs/ports/security/hydra/Makefile,v
> diff -u -p -r1.67 Makefile
> --- security/hydra/Makefile	11 Aug 2026 22:41:26 -0000	1.67
> +++ security/hydra/Makefile	11 Aug 2026 23:18:17 -0000
> @@ -2,6 +2,7 @@ COMMENT-main=	parallelized network logon
>  COMMENT-gui=	GTK frontend for hydra
>  
>  VERSION=	9.7
> +REVISION-main=	0
>  PKGNAME-main=	hydra-${VERSION}
>  PKGNAME-gui=	hydra-gui-${VERSION}
>  
> @@ -17,9 +18,9 @@ PERMIT_PACKAGE=	Yes
>  WANTLIB =	c
>  
>  WANTLIB-main =	${WANTLIB}
> -WANTLIB-main += apr-1 aprutil-1 crypto curses freerdp2 gcrypt idn m
> +WANTLIB-main += apr-1 aprutil-1 crypto curses freerdp3 gcrypt idn m
>  WANTLIB-main += mariadb memcached pcre2-8 pq ssh ssl svn_client-1 svn_subr-1
> -WANTLIB-main += sybdb winpr2 z
> +WANTLIB-main += sybdb winpr3 z
>  
>  WANTLIB-gui =	${WANTLIB}
>  WANTLIB-gui += atk-1.0 cairo cairo-gobject gdk_pixbuf-2.0 gdk-3 gio-2.0
> Index: x11/gnome/connections/Makefile
> ===================================================================
> RCS file: /cvs/ports/x11/gnome/connections/Makefile,v
> diff -u -p -r1.26 Makefile
> --- x11/gnome/connections/Makefile	15 May 2026 07:35:01 -0000	1.26
> +++ x11/gnome/connections/Makefile	11 Aug 2026 23:18:17 -0000
> @@ -1,6 +1,7 @@
>  COMMENT=		remote desktop client for GNOME
>  
>  GNOME_PROJECT=		gnome-connections
> +REVISION=		0
>  GNOME_VERSION=		50.0
>  
>  CATEGORIES=		net
> @@ -10,10 +11,10 @@ HOMEPAGE=		https://apps.gnome.org/Connec
>  # GPLv3
>  PERMIT_PACKAGE=		Yes
>  
> -WANTLIB += c cairo freerdp-client2 freerdp2 gdk-3 gdk_pixbuf-2.0
> +WANTLIB += c cairo freerdp-client3 freerdp3 gdk-3 gdk_pixbuf-2.0
>  WANTLIB += gio-2.0 glib-2.0 gobject-2.0 gtk-3 gtk-vnc-2.0 gvnc-1.0
>  WANTLIB += gvncpulse-1.0 handy-1 intl m secret-1 spice-client-glib-2.0
> -WANTLIB += spice-client-gtk-3.0 winpr2 xml2
> +WANTLIB += spice-client-gtk-3.0 winpr3 xml2
>  
>  MODULES=		devel/dconf \
>  			devel/meson \
> Index: x11/remmina/Makefile
> ===================================================================
> RCS file: /cvs/ports/x11/remmina/Makefile,v
> diff -u -p -r1.66 Makefile
> --- x11/remmina/Makefile	28 Jan 2025 09:27:40 -0000	1.66
> +++ x11/remmina/Makefile	11 Aug 2026 23:18:17 -0000
> @@ -1,25 +1,27 @@
> -COMMENT=		GTK+ remote desktop client
> +COMMENT=	GTK+ remote desktop client
>  
> -# post-release "Fix build for openssl-1.1"
> -C=			93d703ec8524dec774f36d2285a6ec87c6fabb8d
> -DIST_TUPLE=		gitlab	Remmina	Remmina	${C}	.
> -DISTNAME=		Remmina-${C}
> -PKGNAME=		remmina-1.4.34
> -CATEGORIES=		x11 net
> -REVISION=		1
> +V=		1.4.43
> +DISTNAME=	Remmina-v$V
> +SITES=		https://gitlab.com/Remmina/Remmina/-/archive/v$V/
> +# XXX using SITES because DIST_TUPLE uses wrong URLs for gitlab tags;
> +# https://gitlab.com/Remmina/Remmina/-/archive/v1.4.43/v1.4.43.tar.gz should be
> +# https://gitlab.com/Remmina/Remmina/-/archive/v1.4.43/Remmina-v1.4.43.tar.gz
>  
> -HOMEPAGE=		https://www.remmina.org/
> +PKGNAME=	remmina-$V
> +CATEGORIES=	x11 net
> +
> +HOMEPAGE=	https://www.remmina.org/
>  
>  # GPLv2+
> -PERMIT_PACKAGE=		Yes
> +PERMIT_PACKAGE=	Yes
>  
>  WANTLIB += ${MODPY_WANTLIB}
>  WANTLIB += avahi-client avahi-common avahi-ui-gtk3 c cairo crypto
> -WANTLIB += cups curl freerdp-client2 gcrypt gdk-3 gdk_pixbuf-2.0
> +WANTLIB += cups curl freerdp-client3 freerdp3 gcrypt gdk-3 gdk_pixbuf-2.0
>  WANTLIB += gio-2.0 glib-2.0 gmodule-2.0 gobject-2.0 gtk-3 intl
> -WANTLIB += json-glib-1.0 pango-1.0 pthread secret-1 sndio sodium
> -WANTLIB += spice-client-glib-2.0 spice-client-gtk-3.0 ssh ssl
> -WANTLIB += vncclient vncserver vte-2.91 winpr2
> +WANTLIB += json-glib-1.0 m pango-1.0 pthread secret-1 sodium spice-client-glib-2.0
> +WANTLIB += spice-client-gtk-3.0 ssh ssl vncclient vncserver vte-2.91
> +WANTLIB += wayland-client winpr3
>  
>  MODULES=		devel/cmake \
>  			lang/python
> @@ -53,7 +55,8 @@ CONFIGURE_ARGS=		-DCMAKE_DISABLE_FIND_PA
>  # Appindicator is only used by Ubuntu's Unity.
>  CONFIGURE_ARGS +=	-DHAVE_LIBAPPINDICATOR=OFF \
>  			-DWITH_ICON_CACHE=OFF \
> -			-DWITH_UPDATE_DESKTOP_DB=OFF
> +			-DWITH_UPDATE_DESKTOP_DB=OFF \
> +			-DWITH_FREERDP3=ON
>  
>  CFLAGS +=		-I${X11BASE}/include -I${LOCALBASE}/include
>  
> @@ -68,10 +71,5 @@ CONFIGURE_ARGS +=	-DWITH_KF5WALLET=OFF \
>  			-DWITH_WWW=OFF
>  
>  DEBUG_PACKAGES=		${BUILD_PACKAGES}
> -
> -post-install:
> -	# pending "Use universal /bin/sh shebang in remmina-rile-wrapper(1)"
> -	# https://gitlab.com/Remmina/Remmina/-/merge_requests/2572
> -	sed -i '1s,/usr/bin/env bash,/bin/sh,' ${PREFIX}/bin/remmina-file-wrapper
>  
>  .include <bsd.port.mk>
> Index: x11/remmina/distinfo
> ===================================================================
> RCS file: /cvs/ports/x11/remmina/distinfo,v
> diff -u -p -r1.14 distinfo
> --- x11/remmina/distinfo	23 Feb 2024 18:14:33 -0000	1.14
> +++ x11/remmina/distinfo	11 Aug 2026 23:18:17 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (Remmina-Remmina-93d703ec8524dec774f36d2285a6ec87c6fabb8d.tar.gz) = sQPaF6QTHIshMfabsWcfDerj1BT3N8qt6KV8ieZu/jw=
> -SIZE (Remmina-Remmina-93d703ec8524dec774f36d2285a6ec87c6fabb8d.tar.gz) = 3774333
> +SHA256 (Remmina-v1.4.43.tar.gz) = FlM/ioBtr/UkZJu0WuUeUfYWhdqUhGAGAYs8J56+cDU=
> +SIZE (Remmina-v1.4.43.tar.gz) = 3952178
> Index: x11/remmina/patches/patch-CMakeLists_txt
> ===================================================================
> RCS file: /cvs/ports/x11/remmina/patches/patch-CMakeLists_txt,v
> diff -u -p -r1.13 patch-CMakeLists_txt
> --- x11/remmina/patches/patch-CMakeLists_txt	3 Feb 2024 12:39:41 -0000	1.13
> +++ x11/remmina/patches/patch-CMakeLists_txt	11 Aug 2026 23:18:17 -0000
> @@ -4,7 +4,7 @@
>  Index: CMakeLists.txt
>  --- CMakeLists.txt.orig
>  +++ CMakeLists.txt
> -@@ -274,7 +274,7 @@ set(CMAKE_SHARED_LINKER_FLAGS
> +@@ -276,7 +276,7 @@ set(CMAKE_SHARED_LINKER_FLAGS
>   check_include_files(sys/socket.h HAVE_SYS_SOCKET_H)
>   check_include_files(arpa/inet.h HAVE_ARPA_INET_H)
>   check_include_files(netinet/in.h HAVE_NETINET_IN_H)
> @@ -13,7 +13,7 @@ Index: CMakeLists.txt
>   check_include_files(termios.h HAVE_TERMIOS_H)
>   check_include_files(netdb.h HAVE_NETDB_H)
>   check_include_files(fcntl.h HAVE_FCNTL_H)
> -@@ -285,9 +285,9 @@ check_include_files(errno.h HAVE_ERRNO_H)
> +@@ -287,9 +287,9 @@ check_include_files(errno.h HAVE_ERRNO_H)
>   include_directories(.)
>   include_directories(src/include)
>   
> @@ -23,53 +23,14 @@ Index: CMakeLists.txt
>  -if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
>  +if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD|OpenBSD|NetBSD")
>     set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-rdynamic")
> -   include_directories(/usr/local/include /usr/include)
> +   include_directories(SYSTEM /usr/local/include /usr/include)
>     link_directories(/usr/local/lib /usr/lib)
> -@@ -414,36 +414,17 @@ if(NOT GTK3_FOUND)
> +@@ -416,7 +416,7 @@ if(NOT GTK3_FOUND)
>   endif()
> - include_directories(${GTK3_INCLUDE_DIRS})
> + include_directories(SYSTEM ${GTK3_INCLUDE_DIRS})
>   
> --pkg_check_modules(wayland-client wayland-client)
> --if(wayland-client_FOUND)
> --  set(GTK_LIBRARIES
> --      ${GTK3_LIBRARY}
> --      ${GDK3_LIBRARY}
> --      ${GDKPixbuf_LIBRARY}
> --      ${Pango_LIBRARY}
> --      ${Cairo_LIBRARY}
> --      ${GObject_LIBRARY}
> --      ${GLib_LIBRARY}
> --      ${GIO_LIBRARY}
> --      ${Gmodule_LIBRARIES}
> --      ${GMODULE_LIBRARY}
> --      ${wayland-client_LIBRARIES})
> --  include_directories(${wayland-client_INCLUDE_DIRS})
> --  message(STATUS "Wayland library found.")
> --else()
> --  set(GTK_LIBRARIES
> --      ${GTK3_LIBRARY}
> --      ${GDK3_LIBRARY}
> --      ${GDKPixbuf_LIBRARY}
> --      ${Pango_LIBRARY}
> --      ${Cairo_LIBRARY}
> --      ${GObject_LIBRARY}
> --      ${GLib_LIBRARY}
> --      ${GIO_LIBRARY}
> --      ${Gmodule_LIBRARIES}
> --      ${GMODULE_LIBRARY})
> --  message(STATUS "Wayland library not found.")
> --endif()
> -+set(GTK_LIBRARIES
> -+    ${GTK3_LIBRARY}
> -+    ${GDK3_LIBRARY}
> -+    ${GDKPixbuf_LIBRARY}
> -+    ${Pango_LIBRARY}
> -+    ${Cairo_LIBRARY}
> -+    ${GObject_LIBRARY}
> -+    ${GLib_LIBRARY}
> -+    ${GIO_LIBRARY}
> -+    ${Gmodule_LIBRARIES}
> -+    ${GMODULE_LIBRARY})
> - 
> - set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
> - find_package(Threads REQUIRED)
> +-if(NOT APPLE)
> ++if(NOT APPLE AND NOT OPENBSD)
> +   pkg_check_modules(wayland-client wayland-client)
> + endif()
> + if(wayland-client_FOUND)
> Index: x11/remmina/patches/patch-plugins_vnc_vnc_plugin_c
> ===================================================================
> RCS file: /cvs/ports/x11/remmina/patches/patch-plugins_vnc_vnc_plugin_c,v
> diff -u -p -r1.7 patch-plugins_vnc_vnc_plugin_c
> --- x11/remmina/patches/patch-plugins_vnc_vnc_plugin_c	11 Jun 2023 20:59:09 -0000	1.7
> +++ x11/remmina/patches/patch-plugins_vnc_vnc_plugin_c	11 Aug 2026 23:18:17 -0000
> @@ -3,7 +3,7 @@ Fix double mutex lock and double free
>  Index: plugins/vnc/vnc_plugin.c
>  --- plugins/vnc/vnc_plugin.c.orig
>  +++ plugins/vnc/vnc_plugin.c
> -@@ -114,8 +114,6 @@ static void onMainThread_schedule_callback_and_wait(st
> +@@ -118,8 +118,6 @@ static void onMainThread_schedule_callback_and_wait(st
>   	pthread_mutex_lock(&d->mu);
>   	gdk_threads_add_idle((GSourceFunc)onMainThread_cb, (gpointer)d);
>   
> @@ -12,7 +12,7 @@ Index: plugins/vnc/vnc_plugin.c
>   	pthread_cleanup_pop(0);
>   	pthread_mutex_unlock(&d->mu);
>   	pthread_mutex_destroy(&d->mu);
> -@@ -240,7 +238,6 @@ static void remmina_plugin_vnc_update_scale(RemminaPro
> +@@ -244,7 +242,6 @@ static void remmina_plugin_vnc_update_scale(RemminaPro
>   		d->gp = gp;
>   		d->scale = scale;
>   		onMainThread_schedule_callback_and_wait(d);
> Index: x11/remmina/pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/x11/remmina/pkg/PLIST,v
> diff -u -p -r1.19 PLIST
> --- x11/remmina/pkg/PLIST	23 Feb 2024 18:14:33 -0000	1.19
> +++ x11/remmina/pkg/PLIST	11 Aug 2026 23:18:17 -0000
> @@ -63,6 +63,7 @@ share/icons/hicolor/scalable/actions/org
>  share/icons/hicolor/scalable/actions/org.remmina.Remmina-pin-down-symbolic.svg
>  share/icons/hicolor/scalable/actions/org.remmina.Remmina-pin-up-symbolic.svg
>  share/icons/hicolor/scalable/actions/org.remmina.Remmina-preferences-system-symbolic.svg
> +share/icons/hicolor/scalable/actions/org.remmina.Remmina-reconnect-symbolic.svg
>  share/icons/hicolor/scalable/actions/org.remmina.Remmina-scale-symbolic.svg
>  share/icons/hicolor/scalable/actions/org.remmina.Remmina-switch-page-symbolic.svg
>  share/icons/hicolor/scalable/actions/org.remmina.Remmina-system-run-symbolic.svg
> @@ -74,6 +75,9 @@ share/icons/hicolor/scalable/emblems/org
>  share/icons/hicolor/scalable/emblems/org.remmina.Remmina-spice-ssh-symbolic.svg
>  share/icons/hicolor/scalable/emblems/org.remmina.Remmina-spice-symbolic.svg
>  share/icons/hicolor/scalable/emblems/org.remmina.Remmina-ssh-symbolic.svg
> +share/icons/hicolor/scalable/emblems/org.remmina.Remmina-status-green.svg
> +share/icons/hicolor/scalable/emblems/org.remmina.Remmina-status-grey.svg
> +share/icons/hicolor/scalable/emblems/org.remmina.Remmina-status-red.svg
>  share/icons/hicolor/scalable/emblems/org.remmina.Remmina-tool-symbolic.svg
>  share/icons/hicolor/scalable/emblems/org.remmina.Remmina-vnc-ssh-symbolic.svg
>  share/icons/hicolor/scalable/emblems/org.remmina.Remmina-vnc-symbolic.svg
> @@ -150,6 +154,7 @@ share/locale/sl/LC_MESSAGES/remmina.mo
>  share/locale/sq/LC_MESSAGES/remmina.mo
>  share/locale/sr/LC_MESSAGES/remmina.mo
>  share/locale/sv/LC_MESSAGES/remmina.mo
> +share/locale/ta/LC_MESSAGES/remmina.mo
>  share/locale/te/LC_MESSAGES/remmina.mo
>  share/locale/th/LC_MESSAGES/remmina.mo
>  share/locale/tr/LC_MESSAGES/remmina.mo
> Index: x11/kde-applications/krdc/Makefile
> ===================================================================
> RCS file: /cvs/ports/x11/kde-applications/krdc/Makefile,v
> diff -u -p -r1.19 Makefile
> --- x11/kde-applications/krdc/Makefile	2 May 2025 06:11:30 -0000	1.19
> +++ x11/kde-applications/krdc/Makefile	11 Aug 2026 23:18:17 -0000
> @@ -1,4 +1,4 @@
> -BROKEN = Depends on FreeRDP3
> +BROKEN =	krdc-26.04.3/rdp/rdpsession.cpp:727:25: error: invalid use of member 'm_thread' in static member function
>  
>  COMMENT =	VNC and RDP  desktop client
>  DISTNAME =	krdc-${VERSION}
> @@ -16,9 +16,9 @@ WANTLIB += KF6KCMUtilsQuick KF6KIOCore K
>  WANTLIB += KF6Notifications KF6NotifyConfig KF6Service KF6Solid
>  WANTLIB += KF6StatusNotifierItem KF6Wallet KF6WidgetsAddons KF6WindowSystem
>  WANTLIB += KF6XmlGui PlasmaActivities Qt6Core Qt6DBus Qt6Gui Qt6Network
> -WANTLIB += Qt6Qml Qt6WaylandClient Qt6Widgets Qt6Xml X11 c freerdp-client2
> -WANTLIB += freerdp2 m sndio ssh vncclient wayland-client wayland-cursor
> -WANTLIB += winpr2 xkbcommon
> +WANTLIB += Qt6Qml Qt6WaylandClient Qt6Widgets Qt6Xml X11 c freerdp-client3
> +WANTLIB += freerdp3 m sndio ssh vncclient wayland-client wayland-cursor
> +WANTLIB += winpr3 xkbcommon
>  
>  MODKDE_DESKTOP_FILE = yes
>  MODKDE_TRANSLATIONS = yes
> @@ -53,6 +53,7 @@ LIB_DEPENDS =	devel/kf6/kbookmarks \
>  		devel/kf6/kcrash \
>  		net/libvncserver \
>  		security/libssh \
> +		security/qtkeychain,qt6 \
>  		wayland/wayland \
>  		x11/freerdp \
>  		x11/kde-plasma/plasma-activities \
> Index: x11/kde-applications/krdc/patches/patch-core_sshtunnelthread_cpp
> ===================================================================
> RCS file: x11/kde-applications/krdc/patches/patch-core_sshtunnelthread_cpp
> diff -N x11/kde-applications/krdc/patches/patch-core_sshtunnelthread_cpp
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ x11/kde-applications/krdc/patches/patch-core_sshtunnelthread_cpp	11 Aug 2026 23:18:17 -0000
> @@ -0,0 +1,11 @@
> +Index: core/sshtunnelthread.cpp
> +--- core/sshtunnelthread.cpp.orig
> ++++ core/sshtunnelthread.cpp
> +@@ -11,6 +11,7 @@
> + #include <KLocalizedString>
> + 
> + #include <arpa/inet.h>
> ++#include <errno.h>
> + #include <fcntl.h>
> + #include <netinet/in.h>
> + #include <sys/socket.h>
> Index: x11/kde-applications/krdc/patches/patch-rdp_rdpsession_cpp
> ===================================================================
> RCS file: /cvs/ports/x11/kde-applications/krdc/patches/patch-rdp_rdpsession_cpp,v
> diff -u -p -r1.6 patch-rdp_rdpsession_cpp
> --- x11/kde-applications/krdc/patches/patch-rdp_rdpsession_cpp	2 May 2025 06:11:30 -0000	1.6
> +++ x11/kde-applications/krdc/patches/patch-rdp_rdpsession_cpp	11 Aug 2026 23:18:17 -0000
> @@ -1,9 +1,9 @@
>  Index: rdp/rdpsession.cpp
>  --- rdp/rdpsession.cpp.orig
>  +++ rdp/rdpsession.cpp
> -@@ -12,6 +12,10 @@
> +@@ -11,6 +11,10 @@
> + 
>   #include <algorithm>
> - #include <memory>
>   
>  +#ifdef __OpenBSD__
>  +#include <pthread_np.h> /* pthread_set_name_np */
> @@ -12,7 +12,7 @@ Index: rdp/rdpsession.cpp
>   #include <QApplication>
>   #include <QKeyEvent>
>   #include <QMouseEvent>
> -@@ -715,7 +719,12 @@ int RdpSession::clientContextStart(rdpContext *context
> +@@ -718,7 +722,12 @@ int RdpSession::clientContextStart(rdpContext *context
>       }
>   
>       session->m_thread = std::thread(std::bind(&RdpSession::run, session));
> @@ -25,10 +25,3 @@ Index: rdp/rdpsession.cpp
>   
>       return 0;
>   }
> -@@ -1228,4 +1237,4 @@ bool RdpSession::sendResizeEvent(const QSize newSize)
> - void RdpSession::setRemoteCursor(const QCursor &cursor)
> - {
> -     Q_EMIT cursorChanged(cursor);
> --}
> -\ No newline at end of file
> -+}
> Index: x11/kde-applications/krdc/patches/patch-vnc_vncclientthread_cpp
> ===================================================================
> RCS file: /cvs/ports/x11/kde-applications/krdc/patches/patch-vnc_vncclientthread_cpp,v
> diff -u -p -r1.11 patch-vnc_vncclientthread_cpp
> --- x11/kde-applications/krdc/patches/patch-vnc_vncclientthread_cpp	28 Jun 2024 19:04:00 -0000	1.11
> +++ x11/kde-applications/krdc/patches/patch-vnc_vncclientthread_cpp	11 Aug 2026 23:18:17 -0000
> @@ -3,7 +3,7 @@
>  Index: vnc/vncclientthread.cpp
>  --- vnc/vncclientthread.cpp.orig
>  +++ vnc/vncclientthread.cpp
> -@@ -657,23 +657,6 @@ void VncClientThread::clientSetKeepalive()
> +@@ -677,23 +677,6 @@ void VncClientThread::clientSetKeepalive()
>           return;
>       }
>   
> Index: x11/kde-applications/krdc/patches/patch-vnc_vncsshtunnelthread_cpp
> ===================================================================
> RCS file: x11/kde-applications/krdc/patches/patch-vnc_vncsshtunnelthread_cpp
> diff -N x11/kde-applications/krdc/patches/patch-vnc_vncsshtunnelthread_cpp
> --- x11/kde-applications/krdc/patches/patch-vnc_vncsshtunnelthread_cpp	28 Jun 2024 19:04:00 -0000	1.4
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,13 +0,0 @@
> -Missing include
> -
> -Index: vnc/vncsshtunnelthread.cpp
> ---- vnc/vncsshtunnelthread.cpp.orig
> -+++ vnc/vncsshtunnelthread.cpp
> -@@ -11,6 +11,7 @@
> - #include <KLocalizedString>
> - 
> - #include <arpa/inet.h>
> -+#include <errno.h>
> - #include <fcntl.h>
> - #include <netinet/in.h>
> - #include <sys/socket.h>

-- 
Fabien Romano