Fix Cast teardown leaks, keyframe latch, and DLNA session lifecycle

Dropped frames never requested a keyframe, SessionEnded skipped ordered
stop (portal/TV/FFI leak, next start could abort), and a late end could
kill the following cast. Failed starts left PlatformClientPosix alive.
DLNA leaked its HTTP server and ignored portal EOS.

Also: start no longer blocks the daemon actor, IPC accept/request loops
stay up, HLS Range is clamped, LAN IP follows the renderer subnet, and
the picker closes before the portal dialog and handles Escape.
This commit is contained in:
Breadway 2026-08-16 14:15:56 +08:00
parent a80c49593d
commit 17abeed7ae
26 changed files with 861 additions and 222 deletions

View file

@ -1,7 +1,9 @@
name = "breadcast"
description = "Cast your screen to any Chromecast/Google TV or DLNA renderer — daemon + GTK4 popup"
binaries = ["breadcast", "breadcastd"]
# gst-plugin-va: the `vah264enc` element both encode pipelines use (see
# gst-plugins-base: videoconvert/videoscale/videorate/appsink -- the
# `gstreamer` package is only the core library. gst-plugin-va: the
# `vah264enc` element both encode pipelines use (see
# breadcast-core/src/pipeline/mod.rs) -- a separate Arch package from
# gst-plugins-bad itself, not bundled into it. jsoncpp/openssl: runtime
# shared-library deps of breadcastd itself (not just a build dep of
@ -14,6 +16,7 @@ system_deps = [
"gtk4",
"gtk4-layer-shell",
"gstreamer",
"gst-plugins-base",
"gst-plugin-pipewire",
"gst-plugins-bad",
"gst-plugin-hlssink3",