Files
RedBear-OS/local
vasilito 9ff09dceaf sessiond: track inhibitor FD per-call + wifictl: AccessPointExport type alias
Three concurrent refinements from the same work batch:

1. sessiond/manager.rs + runtime_state.rs: switch inhibitor_fds
   from HashMap<u64, StdOwnedFd> to HashMap<i32, TrackedInhibitorFd>
   so each inhibitor carries both its numeric id and the OwnedFd
   that needs to be closed when the caller FD vanishes. The
   TrackedInhibitorFd newtype wraps (inhibitor_id, _fd) and lets
   reap-on-vanish use the keyed fd handle to take() out of the
   map cleanly. The dead_senders code path now collects daemon_fd()
   values directly instead of round-tripping through Vec<u64>.

2. wifictl/dbus_nm.rs: introduce AccessPointExport type alias
   (OwnedObjectPath, AccessPointInterface) and rename
   access_point_interfaces -> access_point_exports returning the
   same shape. access_point_paths now derives from the exports
   list (avoiding the parse-then-rebuild cycle) and a new
   all_access_point_paths() passes through. All call sites in
   serve_on_thread get a single coherent exports() call instead
   of duplicate path/interface computations.

3. recipes/wip/wayland/qt6-wayland-smoke: correct the relative
   symlink target from ../../../local/recipes/wayland/qt6-wayland-smoke
   to ../../../../local/recipes/wayland/qt6-wayland-smoke. The
   symlink resolves correctly either way (filesystem lookup
   succeeds) but the git tree now records a path that is one
   level more explicit and matches the canonical Red Bear recipe
   symlink convention used elsewhere in recipes/wip/.

Verified via grep that no callers of the old HashMap<u64,
StdOwnedFd> shape remain; all switched to the new TrackedInhibitorFd
type. The sessiond-vs-dead_senders race that motivated the FD
tracking is now correctly closed by taking the daemon_fd handle
out of the map under the same Mutex that updates runtime.inhibitors.
2026-07-28 08:02:34 +09:00
..