Skip to content

PipeASIO v1.4.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 11:05
v1.4.0
68570d5

Added

  • PIPEASIO_WINE_INSTALL_ROOT CMake 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_ROOT absolute-path guard runs before
    project(), so the wine_install_root_relative test passes in containers
    without make: the inner configure previously aborted during toolchain
    probing before the guard could print its message.
  • pipeasio-register now finds installs in /usr/local/lib/wine (the default
    CMake prefix) and in the lib/wine layout 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 the wine
    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_PREFIX naming 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 stubbed wine.
  • install_manifest.txt now records the pipeasio.dll and pipeasio.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 run pipeasio-register.
  • Proton / Faugus: extract to $HOME/.local and set WINEDLLPATH=$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.