From 792d4c1767138151f1b87c390756e86430d91294 Mon Sep 17 00:00:00 2001 From: Richie McIlroy <33632126+richiemcilroy@users.noreply.github.com> Date: Mon, 18 Mar 2024 22:52:23 +0000 Subject: [PATCH] fix: Add panic result for has_screen_capture_access --- apps/desktop/src-tauri/src/utils.rs | 43 +++++++++++++++++------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/apps/desktop/src-tauri/src/utils.rs b/apps/desktop/src-tauri/src/utils.rs index d604e7729..30ec5b10e 100644 --- a/apps/desktop/src-tauri/src/utils.rs +++ b/apps/desktop/src-tauri/src/utils.rs @@ -5,6 +5,7 @@ use ffmpeg_sidecar::{ }; use capture::{Capturer, Display}; use std::time::{Duration, Instant}; +use std::panic; #[tauri::command] pub fn has_screen_capture_access() -> bool { @@ -12,31 +13,37 @@ pub fn has_screen_capture_access() -> bool { Ok(display) => display, Err(_) => return false, }; - - let mut capturer = match Capturer::new(display) { - Ok(capturer) => capturer, - Err(_) => return false, - }; - let start = Instant::now(); + let result = panic::catch_unwind(|| { + let mut capturer = match Capturer::new(display) { + Ok(capturer) => capturer, + Err(_) => return false, + }; - loop { - if start.elapsed() > Duration::from_secs(2) { - return false; - } + let start = Instant::now(); - match capturer.frame() { - Ok(_frame) => { - return true; - }, - Err(_) => { - continue; + loop { + if start.elapsed() > Duration::from_secs(2) { + return false; } - }; + + match capturer.frame() { + Ok(_frame) => { + return true; + }, + Err(_) => { + continue; + } + }; + } + }); + + match result { + Ok(val) => val, + Err(_) => false, } } - pub fn run_command(command: &str, args: Vec<&str>) -> Result<(String, String), String> { let output = Command::new(command) .args(args)