Skip to content

Verify sleep, wake and display reconfiguration actually recover #87

Description

@nbkdoesntknowcoding

What is claimed, and what was tested

The README says a session survives sleep, wake, Wi-Fi drops and display reconfiguration, and that capture recovery is typically under 0.1 s.

The recovery path is exercised in tests — but through the same entry point the wake notification calls, not by actually sleeping the Mac. Nobody has closed the lid and opened it again with a receiver attached.

That gap is listed under "What isn't proven yet", and it is the most likely of those to be hiding something, because sleep and wake touch every layer at once: the virtual display, the capture stream, the socket, and the receiver's decoder all have to come back, in an order nobody has controlled.

What to try

Each of these with a receiver connected and something moving on the second display:

  1. Sleep and wake the Mac — lid, and pmset sleepnow. Does the display come back? Do the user's windows stay where they were?
  2. Let the receiver's machine sleep while the Mac keeps sharing.
  3. Drop the Wi-Fi on either end and bring it back.
  4. Plug in or unplug a real monitor while sharing, which triggers CGDisplayRegisterReconfigurationCallback and is the case the supervisor watches for.
  5. Change the Mac's resolution in System Settings during a session.

What to record

  • Whether it recovered at all, and roughly how long it took
  • Whether window arrangement survived — the virtual display dies with the process holding it, and vd_helper exists as a separate process specifically so a crash elsewhere does not scatter your windows. This is the case that tests that claim.
  • What each end displayed while it was recovering. A recovery that works but shows nothing useful for ten seconds is still a bug worth filing.
  • Anything in the Mac's log: log stream --predicate 'process == "DisplayShare"'

Related

The supervisor no longer treats a still desktop as a stalled capture (#63) — it now watches a heartbeat that counts idle frames. That change makes a genuine stall easier to see, and it has not been exercised against a real one.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is neededneeds-hardwareCannot be done without specific hardware to hand

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions