From 7bf434181908700e2291e50390ef358ca4159a1e Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Mon, 13 Nov 2023 10:36:49 -0600 Subject: [PATCH] making obs an option so that incase of errors we can set to None This is really effective since it means we can still launch the app without obs running too. Now I'll still need to figure out why it's having problems though. --- src/rust/service_item_model.rs | 47 +++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/rust/service_item_model.rs b/src/rust/service_item_model.rs index 5ea3323..aeab708 100644 --- a/src/rust/service_item_model.rs +++ b/src/rust/service_item_model.rs @@ -84,30 +84,33 @@ mod service_item_model { } #[cxx_qt::qobject(base = "QAbstractListModel")] - #[derive(Debug, Default)] + #[derive(Debug)] pub struct ServiceItemMod { id: i32, service_items: Vec, - // obs: Obs, + obs: Option, } - // impl Default for ServiceItemMod { - // fn default() -> Self { - // let obs = tokio::runtime::Runtime::new() - // .unwrap() - // .block_on(async { - // match Obs::new().await { - // Ok(o) => o, - // Err(e) => error!(e), - // } - // }); - // Self { - // id: 0, - // service_items: Vec::new(), - // obs, - // } - // } - // } + impl Default for ServiceItemMod { + fn default() -> Self { + let obs = tokio::runtime::Runtime::new() + .unwrap() + .block_on(async { + match Obs::new().await { + Ok(o) => Some(o), + Err(e) => { + error!(e); + None + }, + } + }); + Self { + id: 0, + service_items: Vec::new(), + obs, + } + } + } #[cxx_qt::qsignals(ServiceItemMod)] pub enum Signals<'a> { @@ -605,7 +608,7 @@ mod service_item_model { // println!("service_item is deactivating {:?}", i); service_item.active = false; } - // let obs = self.as_mut().obs_mut().clone(); + let obs = self.as_mut().obs_mut().clone(); if let Some(service_item) = self .as_mut() @@ -617,7 +620,9 @@ mod service_item_model { background = ?service_item.background, background_type = ?service_item.background_type); service_item.active = true; - // obs.set_scene(service_item.obs_scene.to_string()); + if let Some(obs) = obs { + obs.set_scene(service_item.obs_scene.to_string()); + } self.as_mut().emit_data_changed( tl, br,