base_pipwire_capturer: Stop stream upon destruction

Shared screencast stream is tied to desktop capturer options,
which may outlive capturer itself. This leads to a case where
one may attempt to restart the stream in the capturer. This
causes the previous pipewire objects to leak (as observed
in `pw-top` output) and seems to appear as frozen screen for
clients. This CL ensures that the shared screen cast stream,
which is started in this capturer, is also stopped when the
capturer is destroyed.

Bug: chromium:1291247
Change-Id: I5f2b22e54e916549a5280ec457cd76360e42e48a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276640
Commit-Queue: Salman Malik <salmanmalik@chromium.org>
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
Cr-Commit-Position: refs/heads/main@{#38187}
This commit is contained in:
Salman Malik 2022-09-24 00:09:38 +00:00 committed by WebRTC LUCI CQ
parent 838c1a5a86
commit 62b40efe5a

View File

@ -44,7 +44,9 @@ BaseCapturerPipeWire::BaseCapturerPipeWire(
source_id_ = RestoreTokenManager::GetInstance().GetUnusedId();
}
BaseCapturerPipeWire::~BaseCapturerPipeWire() {}
BaseCapturerPipeWire::~BaseCapturerPipeWire() {
options_.screencast_stream()->StopScreenCastStream();
}
void BaseCapturerPipeWire::OnScreenCastRequestResult(RequestResponse result,
uint32_t stream_node_id,