Skip to content

USBridge release-v3.2.11

Choose a tag to compare

@github-actions github-actions released this 30 Oct 15:28
· 14 commits to main since this release

Windows: virtual monitor

  • Displays come back after a broken session (#23). The virtual monitor's changes for a session (attached, made primary, other screens off) are no longer saved to Windows' display database. A session that ends without undoing them (connection lost, agent killed, power cut) no longer leaves the virtual monitor primary through a reboot, with the login screen on a monitor nobody can see.

  • A watcher restores the displays if the agent dies mid-session. With the first session on the virtual monitor the agent starts a small helper in the user's session; if the agent exits mid-session and its service doesn't come back, the helper puts the real monitors back and makes a physical one primary.

  • No stray virtual monitor outside a session. It is detached right after the driver is installed (setup or the Agent's Install button), so it no longer extends the desktop next to the real screen, and with no session the agent detaches one left attached (once at start, then every 30 s). A virtual monitor that is the machine's only screen (headless) is left alone.

  • The virtual display driver is its own checkbox in both Windows setups (under the Agent in the all-in-one setup): ticked on a machine with a real GPU, unticked in a virtual machine whose only display adapters are virtual.

  • Stopping the Agent service puts the displays back first. Stopping it (Services, Task Manager, shutdown) mid-session used to leave the virtual monitor as the only, primary screen with the real ones dark.

Tested in a VirtualBox Windows 11 guest: lost network mid-session, agent killed mid-session, hard reset mid-session; each time the real screen came back as the primary one.

Linux: virtual monitor

  • No password prompt when a client picks the virtual monitor. The polkit rule granted under Permissions → Virtual display never matched (modprobe is a symlink to kmod, and polkit sees the resolved path), so every connect asked for the password. Grant it once more after updating; Grant now also loads vkms right away.
  • The virtual monitor is the agent's and exists for a session only, as on Windows: up when a session on it starts (primary unless turned off, the only screen with "only the virtual monitor"), gone when it ends, with the real monitors and the primary role back. A watcher puts the displays back if the agent dies mid-session; with no session a leftover virtual monitor is taken off. Works the same for every streamer.
  • Devices on KDE: real monitors get On/Off and Main; the vkms connector no longer shows up as a second virtual row.

macOS: virtual monitor

  • The same session-only virtual monitor, held by the agent (CGVirtualDisplay): up for a session, gone after, the real monitors back, a watcher for an agent that dies mid-session. Devices lists real monitors with On/Off and Main and the virtual monitor once.

Devices (all platforms)

  • One row for the virtual monitor, with On/Off for the session and Main lit only while it really is the primary display.
  • Main on every real monitor, also on a switched-off one (switches it on and makes it primary); Main is lit on exactly one monitor.
  • Deleting the virtual monitor moves the stream to a real monitor and makes it the primary one.

Windows: Agent window in virtual machines

  • The Agent's window opens without OpenGL 2.1 (a VM without 3D acceleration, a remote desktop session). It used to fail with "WGL: The driver does not appear to support OpenGL" and the tray icon vanished. The Agent now ships Mesa's llvmpipe software OpenGL in softgl\ and uses it only when the system OpenGL falls short; with a real GPU driver it is never loaded. The setup is about 18 MB larger.

Streamer

  • RustShine 0.3.195: the same display-database fix for its own virtual monitor, and software H.264 on odd capture sizes (0.3.194: a VM window resized to e.g. 1335x657 showed no picture).

Full Changelog: release-v3.2.9...release-v3.2.11