Skip to content

Commit 51b183a

Browse files
committed
fixes
1 parent 8014d27 commit 51b183a

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

  • media-video/capture/src/wayland
  • media/rtc/src/rtp_session/inbound

media-video/capture/src/wayland/mod.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
use ashpd::{
2-
desktop::screencast::{CursorMode, Screencast},
2+
desktop::{
3+
Session,
4+
screencast::{CursorMode, Screencast},
5+
},
36
enumflags2::BitFlags,
47
};
58
use std::{os::fd::OwnedFd, thread};
@@ -168,8 +171,8 @@ pub struct CapturedDmaBufferSync {
168171
#[error("Stream has been closed")]
169172
pub struct StreamClosedError;
170173

171-
#[derive(Clone)]
172174
pub struct StreamHandle {
175+
session: Session<'static, Screencast<'static>>,
173176
sender: pipewire::channel::Sender<stream::Command>,
174177
}
175178

@@ -186,7 +189,11 @@ impl StreamHandle {
186189
.map_err(|_| StreamClosedError)
187190
}
188191

189-
pub fn close(&self) -> Result<(), StreamClosedError> {
192+
pub async fn close(&self) -> Result<(), StreamClosedError> {
193+
if let Err(e) = self.session.close().await {
194+
log::warn!("Failed to close xdg session properly {e}");
195+
}
196+
190197
self.sender
191198
.send(stream::Command::Close)
192199
.map_err(|_| StreamClosedError)
@@ -279,5 +286,5 @@ async fn start_screen_capture_boxed(
279286
.await
280287
.map_err(|_| StartCaptureError::CaptureThreadPanicked)??;
281288

282-
Ok(StreamHandle { sender })
289+
Ok(StreamHandle { session, sender })
283290
}

media/rtc/src/rtp_session/inbound/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::{ntp_timestamp::NtpTimestamp, report::ReportsQueue};
44
use queue::InboundQueue;
55
use rtp::{
66
RtpPacket, Ssrc,
7-
rtcp_types::{Fir, PayloadFeedback, Pli, ReportBlock, SenderReport},
7+
rtcp_types::{Fir, PayloadFeedback, Pli, ReportBlock, SenderReport, TransportFeedback},
88
};
99
use std::time::{Duration, Instant};
1010

@@ -114,8 +114,8 @@ impl RtpInboundStream {
114114
if self.emit_nack
115115
&& let Some(nack) = self.queue.poll_nack(now)
116116
{
117-
reports.add_payload_feedback(
118-
PayloadFeedback::builder_owned(nack)
117+
reports.add_transport_feedback(
118+
TransportFeedback::builder_owned(nack)
119119
.media_ssrc(self.ssrc.0)
120120
.sender_ssrc(fallback_sender_ssrc.0),
121121
);

0 commit comments

Comments
 (0)