| Summary: | krdc: Un- and Refocusing window makes stream (video and input) freeze | ||
|---|---|---|---|
| Product: | [Plasma] KRdp | Reporter: | postix <postix> |
| Component: | general | Assignee: | Unassigned bugs <unassigned-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | major | CC: | ahiemstra, akselmo, nate, xaver.hugl |
| Priority: | NOR | ||
| Version First Reported In: | 6.2.4 | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/krdp/-/commit/e58caeaabfae653ead0952d3795aa3a17b882009 | Version Fixed/Implemented In: | 6.8.0 |
| Sentry Crash Report: | |||
|
Description
postix
2024-12-21 21:14:58 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kpipewire/-/merge_requests/263 A possibly relevant merge request was started @ https://invent.kde.org/plasma/krdp/-/merge_requests/199 Git commit 19bb322a5b7253d3882b8c2e6efa804711b645c5 by Shouvik Kar. Committed on 26/06/2026 at 16:16. Pushed by davidedmundson into branch 'master'. PipeWireBaseEncodedStream: clarify pause() doc comment Spell out that pause() stops the source stream while frames already in the encode pipeline may still be encoded and emitted briefly, rather than implying that encoding stops immediately. M +3 -2 src/pipewirebaseencodedstream.h https://invent.kde.org/plasma/kpipewire/-/commit/19bb322a5b7253d3882b8c2e6efa804711b645c5 Git commit a4ec9070bd618e1120e1d4d7f7f769f43edf02d9 by Shouvik Kar. Committed on 26/06/2026 at 13:52. Pushed by davidedmundson into branch 'master'. PipeWireBaseEncodedStream: add pause() and resume() Add pause()/resume(), which deactivate and reactivate the running stream via pw_stream_set_active() without tearing it down, keeping the produce thread, encoder, stream and fd alive. While paused no frames are delivered, so the encoder idles. This lets a consumer suspend encoding (for example when an RDP client minimizes and sends a Suppress Output PDU) and resume without re-establishing the PipeWire stream. M +36 -0 src/pipewirebaseencodedstream.cpp M +15 -0 src/pipewirebaseencodedstream.h M +14 -0 src/pipewireproduce.cpp M +5 -0 src/pipewireproduce_p.h https://invent.kde.org/plasma/kpipewire/-/commit/a4ec9070bd618e1120e1d4d7f7f769f43edf02d9 Git commit e58caeaabfae653ead0952d3795aa3a17b882009 by David Edmundson, on behalf of Shouvik Kar. Committed on 30/06/2026 at 09:00. Pushed by davidedmundson into branch 'master'. VideoStream: pause the encoded stream on suppress output instead of stopping Requires: https://invent.kde.org/plasma/kpipewire/-/merge_requests/263 When a client suppresses output (e.g. its window is minimized) the encoded stream was stopped via PipeWireEncodedStream::stop() and restarted via start() on restore. But stop() is terminal in kpipewire - it closes the single-use PipeWire fd - so start() never resumes and the session freezes permanently. Use the new pause()/resume() API instead: pause the encoded stream on suppress (keeping it alive) and resume it on restore. The stream is only fully stopped on teardown via close(). The progressive/source-stream path is unchanged, as it already uses setActive(). Set as draft until the above linked MR is in kpipewire. M +6 -2 src/VideoStream.cpp https://invent.kde.org/plasma/krdp/-/commit/e58caeaabfae653ead0952d3795aa3a17b882009 |