Repository navigation
fix: keep monitor screencasts alive while the output is gone - #12
Merged
Merged
Conversation
Powering off a captured monitor closed the frame target, so the PipeWire worker removed its node while the portal session stayed open, leaving OBS on a dead stream that a returning monitor could not revive. A missing output now skips the frame instead: the node stays, the last frame keeps being published, and each cycle re-requests by connector name, so capture resumes when the monitor returns. A different mode on return still ends the stream through the existing size check.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #11. This branch includes the Smithay migration commit, so merge #11 first. After that, this PR reduces to one commit.
Bug: on native
.198, OBS capture of HDMI-A-2 broke after that monitor was powered off.Output disconnectedat 01:59:29. OBS's stream wentstreaming→pausedat the same second and stayed there, and thetidewm-screencast-HDMI-A-2node was gone.FrameRequestedhandler closed theFrameTarget. The PipeWire worker then removed its node, but the portal session was never told. That left the consumer holding a dead stream that a returning monitor could not revive.Fix, behaviour chosen by Fiw: keep the stream and resume.
FrameTarget::skip(). It clears the pending flag and keeps the last frame.Validation:
skipped_frame_keeps_last_picture_and_allows_a_new_request.