845a97601d
Three leaf-crate additions the IDD-push capturer (pf-capture, plan §W6 C6)
builds on — committed ahead so the capture-crate extraction and the HID
compose kick can land on top:
- pf-frame session_tuning::DisplayWakeRequest — RAII PowerCreateRequest/
PowerSetRequest(PowerRequestDisplayRequired + SystemRequired), the
service-grade 'someone is watching this screen' assertion (visible in
powercfg /requests), held for a capture session so the console cannot
drop into display-off mid-stream. Object-lifetime, unlike the
thread-bound ES_* flags in on_hot_thread. Prevention only: no power
request turns an already-off display back on — that wake is input's
job (the virtual-mouse compose kick).
- pf-win-display win_display::desktop_bounds() — the virtual-desktop
bounds as the union of every ACTIVE CCD path's source rect. From the
CCD database (global), NOT GetSystemMetrics (a per-session view), so
a non-console-session host still aims HID absolute coordinates at the
console's real layout.
- pf-win-display console_session_mismatch() — the session guard from
3d9b3290, copied into the leaf so pf-capture reads it as a peer
instead of reaching into the orchestrator (relocation authored by the
W6 extraction session).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
36 lines
1.7 KiB
TOML
36 lines
1.7 KiB
TOML
# The Windows display-topology cluster (plan §W6): CCD/GDI path activation, mode-setting, HDR
|
|
# advanced-colour toggles, source-rect geometry ([`win_display`]); PnP monitor devnode enable/disable
|
|
# ([`monitor_devnode`]); and the WM_DISPLAYCHANGE / device-arrival watch ([`display_events`]). A leaf
|
|
# so the IDD-push capturer (pf-capture) and the pf-vdisplay backend (host) depend on it as a PEER
|
|
# instead of the capturer reaching back into the host for display utilities. Windows-only content;
|
|
# compiles to an empty lib elsewhere.
|
|
[package]
|
|
name = "pf-win-display"
|
|
version = "0.12.0"
|
|
edition = "2021"
|
|
rust-version.workspace = true
|
|
license = "MIT OR Apache-2.0"
|
|
description = "punktfunk host Windows display-topology helpers: CCD/GDI mode-set + path activation, HDR advanced colour, PnP monitor devnodes, and the display-change event watch."
|
|
publish = false
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
# `Mode` (the negotiated display mode) is the core wire type; `pf-paths` for the pnp-disabled-monitors
|
|
# state file.
|
|
punktfunk-core = { path = "../punktfunk-core", features = ["quic"] }
|
|
pf-paths = { path = "../pf-paths" }
|
|
anyhow = "1"
|
|
tracing = "0.1"
|
|
# The pnp-disabled-monitors state file (a `Vec<String>` of instance ids) is serialized as JSON.
|
|
serde_json = "1"
|
|
windows = { version = "0.62", features = [
|
|
"Win32_Foundation",
|
|
"Win32_Devices_DeviceAndDriverInstallation",
|
|
"Win32_Devices_Display",
|
|
"Win32_Graphics_Gdi",
|
|
"Win32_UI_WindowsAndMessaging",
|
|
"Win32_System_LibraryLoader",
|
|
# console_session_mismatch: WTSGetActiveConsoleSessionId + ProcessIdToSessionId + GetCurrentProcessId.
|
|
"Win32_System_RemoteDesktop",
|
|
"Win32_System_Threading",
|
|
] }
|