mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-09-09 22:11:02 +03:00
drm: address the phase-2 split review
1- do not depend on the libdrmtap-sys crate for the pin: its build.rs statically compiles the whole libdrmtap C tree and a CAP_SYS_ADMIN helper and links -ldrm/-lseccomp/-lcap, which defeats the runtime-dlopen model. keep drm a pure dlopen backend and pin the .so by the build.py DRMTAP_REF release tag, guarded by a strict vX.Y.Z regex. drops the now-moot Cargo.lock freshness CI checks. 2- render-node-less consumers no longer lose the stream: the --server signals need_cpu on DrmStart when it cannot open a convert context, and the --service streams the CPU-converted frame path for that connection instead of a dma-buf fd the consumer cannot detile (which used to fall through to a PipeWire path nobody can approve on an unattended seat). 3- mark PipeWire initialized only after every per-display capturer is created, so a partial failure retries instead of the flag falsely reporting a complete init. 4- reject a degenerate (zero width/height) or short CPU frame before it reaches PixelBuffer::new (which derives stride as data.len()/height, dividing by zero). 5- keep the export-ledger epoch at DRM_DISPLAY_GENERATION so a hotplug invalidates cached buffers (elision stays off until the recycled-fb_id inode case is handled). 6- validate the udev uevent source (kernel nl_pid, multicast) with recvmsg so a local process cannot unicast a spoofed drm-change event to the root listener.
This commit is contained in:
10
build.py
10
build.py
@@ -335,11 +335,11 @@ def ffi_bindgen_function_refactor():
|
||||
# libdrmtap is fetched at build time by cloning the rustdesk-org fork at a pinned
|
||||
# ref — the same way rustdesk sources its other native build deps (vcpkg,
|
||||
# flutter_rust_bridge, ...), rather than carrying a git submodule. The ref is an
|
||||
# EXACT release tag (vX.Y.Z), NOT a moving branch: the bundled runtime .so version must
|
||||
# match the `libdrmtap-sys = "=0.4.13"` crate pinned in libs/scrap/Cargo.toml (the dlopen
|
||||
# loader only checks ABI-major, so a minor skew between the two artifacts would go undetected).
|
||||
# Bump this tag and the crate pin together. Override the repo/ref via env (DRMTAP_REPO /
|
||||
# DRMTAP_REF) for local testing or another fork.
|
||||
# EXACT release tag (vX.Y.Z), NOT a moving branch, and it is the ONLY pin for the
|
||||
# drm backend: rustdesk dlopens this .so at runtime and does not depend on the
|
||||
# libdrmtap-sys crate (whose build.rs would statically link the C tree, a helper and
|
||||
# libdrm/seccomp/cap). Override the repo/ref via env (DRMTAP_REPO / DRMTAP_REF) for
|
||||
# local testing or another fork.
|
||||
LIBDRMTAP_REPO = os.environ.get('DRMTAP_REPO', 'https://github.com/rustdesk-org/libdrmtap')
|
||||
LIBDRMTAP_REF = os.environ.get('DRMTAP_REF', 'v0.4.13')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user