From 6dff3d56d1d15e0c92f13b31a5d470bcd853cb57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Mon, 9 Mar 2026 11:15:19 -0700 Subject: [PATCH] Session: don't destroy dialog before setup recording --- src/ScreenCast/Session.vala | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/ScreenCast/Session.vala b/src/ScreenCast/Session.vala index bda0fdf8..e1104d9a 100644 --- a/src/ScreenCast/Session.vala +++ b/src/ScreenCast/Session.vala @@ -102,14 +102,24 @@ public class ScreenCast.Session : Object { } dialog.response.connect ((response) => { - dialog.close (); - - if (response == CANCEL) { - started (1, streams); - } else { - setup_recording.begin (dialog); + switch (response) { + case ALLOW: + setup_recording.begin ( + dialog.get_selected_windows (), + dialog.get_selected_monitors (), + dialog.get_virtual () + ); + break; + + case CANCEL: + case DELETE_EVENT: + started (1, streams); + break; } + + dialog.destroy (); }); + dialog.present (); } @@ -126,21 +136,21 @@ public class ScreenCast.Session : Object { return 0; } - private async void setup_recording (Dialog dialog) { + private async void setup_recording (uint64[] selected_windows, string[] selected_monitors, bool is_virtual) { //Should we fail if one fails or if all fail? Currently it's all - foreach (var window in dialog.get_selected_windows ()) { + foreach (var window in selected_windows) { if (yield record_window (window)) { required_streams++; } } - foreach (var connector in dialog.get_selected_monitors ()) { + foreach (var connector in selected_monitors) { if (yield record_monitor (connector)) { required_streams++; } } - if (dialog.get_virtual () && yield record_virtual ()) { + if (is_virtual && yield record_virtual ()) { required_streams++; }