PipeASIO v1.4.0
Added
PIPEASIO_WINE_INSTALL_ROOTCMake option installs the driver files into an
explicit Wine library dir (Debian/Ubuntu's
/usr/lib/x86_64-linux-gnu/wine, a WineHQ/opt/wine-<branch>/lib/wine)
while the tools stay under the normal install prefix. Previously the driver
always landed in<prefix>/lib/wine, which Debian/Ubuntu Wine never reads.
Fixed
- The
PIPEASIO_WINE_INSTALL_ROOTabsolute-path guard runs before
project(), so thewine_install_root_relativetest passes in containers
withoutmake: the inner configure previously aborted during toolchain
probing before the guard could print its message. pipeasio-registernow finds installs in/usr/local/lib/wine(the default
CMake prefix) and in thelib/winelayout of current WineHQ packages under
/opt. It warns when the install root is outside the Wine installation's
own library dir, because such installs register successfully but no host can
load the driver at launch, and when stale installs in earlier search
locations shadow the one being registered. The library dir of thewine
binary in use is searched too, covering Wine roots outside the built-in
list (Bottles runners, self-built installs), and when it is one of several
installs that copy wins, matching the load order Wine uses (its own library
dir before WINEDLLPATH). Aliased candidates (lib/lib64
symlinks,PIPEASIO_PREFIXnaming a listed root) no longer trigger false
stale-install warnings, and the library dir detection requires the 64-bit
layout and a real Wine payload, so older WineHQ lib/lib64 splits resolve to
the right dir and bare arch dirs left by a PipeASIO-only install are not
mistaken for it. The built-in search list can be replaced with
PIPEASIO_REGISTER_CANDIDATES(colon-separated). The discovery and warning logic is covered by a scripted
test with a stubbedwine.install_manifest.txtnow records thepipeasio.dllandpipeasio.dll.so
symlinks, so the documented uninstall removes them.- Final COM release now synchronizes with the lifecycle worker before object
teardown, closing a Stop/Release use-after-free window. The TLS reentrancy
walk stays outside Wine's mixed-ABI COM methods, avoiding a codegen-sensitive
failed-init release crash.GetErrorMessage()now reports a bounded,
actionable backend error instead of a generic failure. - Buffer preparation now snapshots caller-owned channel descriptors before
validation, centralizes the accepted frame bounds, and rejects invalid
PipeWire quantum and WoW64 name values before they cross allocation or ABI
boundaries. PipeWire registry object counts and property lengths are capped
so an untrusted graph peer cannot grow the host cache indefinitely. - The settings panel now shares the driver's canonical defaults and rejects
multiline or unterminated device and node names before writing the INI file,
preventing injected configuration entries.
Install
Prebuilt for Arch Linux / CachyOS (x86_64). The exact build toolchain (Wine, glibc, PipeWire, MinGW) is recorded in BUILD-INFO.txt inside the tarball.
- User-local:
tar -xzf pipeasio-v1.4.0-archlinux-x86_64.tar.gz -C "$HOME/.local", then runpipeasio-register. - Proton / Faugus: extract to
$HOME/.localand setWINEDLLPATH=$HOME/.local/lib/wine.
Compatibility
A Wine builtin DLL is coupled to the Wine version and glibc it was built against. A different Wine or an older glibc may fail to load (regsvr32 c0000135). In that case build from source (README) or use the AUR package. Source tarballs are attached automatically below.