Skip to content
This repository was archived by the owner on Nov 11, 2025. It is now read-only.

Commit 33e27e0

Browse files
committed
sender: handle screencast portal errors
1 parent 41aeee5 commit 33e27e0

1 file changed

Lines changed: 48 additions & 15 deletions

File tree

sender/src/main.rs

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -433,9 +433,21 @@ impl Application {
433433

434434
match (event, &winsys) {
435435
(FetchEvent::Fetch, WindowingSystem::Wayland) => {
436-
let new_proxy = Screencast::new().await.unwrap();
437-
let new_session = new_proxy.create_session().await.unwrap();
438-
new_proxy
436+
let new_proxy = match Screencast::new().await {
437+
Ok(proxy) => proxy,
438+
Err(err) => {
439+
error!("Failed to create Screencast proxy");
440+
continue;
441+
}
442+
};
443+
let new_session = match new_proxy.create_session().await {
444+
Ok(session) => session,
445+
Err(err) => {
446+
error!("Failed to create screencast session");
447+
continue;
448+
}
449+
};
450+
if let Err(err) = new_proxy
439451
.select_sources(
440452
&new_session,
441453
CursorMode::Embedded,
@@ -445,24 +457,45 @@ impl Application {
445457
PersistMode::DoNot,
446458
)
447459
.await
448-
.unwrap();
460+
{
461+
error!("Failed to select source: {err}");
462+
continue;
463+
}
449464

450-
let response = new_proxy
465+
let response = match new_proxy
451466
.start(&new_session, None)
452467
.await
453-
.unwrap()
454-
.response()
455-
.unwrap();
456-
let stream = response.streams().first().unwrap();
457-
let fd = new_proxy
458-
.open_pipe_wire_remote(&new_session)
459-
.await
460-
.unwrap()
461-
.as_raw_fd();
468+
{
469+
Ok(resp) => resp,
470+
Err(err) => {
471+
error!("Failed to start screencast session: {err}");
472+
continue;
473+
}
474+
};
475+
let response = match response.response() {
476+
Ok(resp) => resp,
477+
Err(err) => {
478+
error!("Failed to get response: {err}");
479+
continue;
480+
}
481+
};
482+
483+
let Some(stream) = response.streams().first() else {
484+
error!("No screencast streams available");
485+
continue;
486+
};
487+
488+
// let fd = new_proxy
489+
// .open_pipe_wire_remote(&new_session)
490+
// .await
491+
// .unwrap()
492+
// .as_raw_fd();
493+
462494
event_tx
463495
.send(Event::VideosAvailable(vec![VideoSource::PipeWire {
464496
node_id: stream.pipe_wire_node_id(),
465-
fd,
497+
// fd,
498+
fd: 0,
466499
}]))
467500
.unwrap();
468501

0 commit comments

Comments
 (0)