mirror of
https://gitlab.com/gabmus/envision.git
synced 2025-04-20 11:35:48 +00:00
feat: application doesn't need tracker; remove useless variable for debug view state; remove xrdevice merging between refreshes, always replace with updated list
This commit is contained in:
parent
311d6761fa
commit
2380df2612
2 changed files with 2 additions and 114 deletions
|
@ -59,61 +59,32 @@ use std::collections::VecDeque;
|
|||
use std::fs::remove_file;
|
||||
use std::time::Duration;
|
||||
|
||||
#[tracker::track]
|
||||
pub struct App {
|
||||
enable_debug_view: bool,
|
||||
|
||||
#[tracker::do_not_track]
|
||||
application: adw::Application,
|
||||
#[tracker::do_not_track]
|
||||
app_win: adw::ApplicationWindow,
|
||||
#[tracker::do_not_track]
|
||||
inhibit_id: Option<u32>,
|
||||
|
||||
#[tracker::do_not_track]
|
||||
main_view: Controller<MainView>,
|
||||
#[tracker::do_not_track]
|
||||
debug_view: Controller<DebugView>,
|
||||
#[tracker::do_not_track]
|
||||
split_view: Option<adw::NavigationSplitView>,
|
||||
#[tracker::do_not_track]
|
||||
about_dialog: adw::AboutDialog,
|
||||
#[tracker::do_not_track]
|
||||
build_window: Controller<BuildWindow>,
|
||||
#[tracker::do_not_track]
|
||||
setcap_confirm_dialog: adw::MessageDialog,
|
||||
#[tracker::do_not_track]
|
||||
libsurvive_setup_window: Controller<LibsurviveSetupWindow>,
|
||||
|
||||
#[tracker::do_not_track]
|
||||
config: Config,
|
||||
#[tracker::do_not_track]
|
||||
xrservice_worker: Option<JobWorker>,
|
||||
#[tracker::do_not_track]
|
||||
autostart_worker: Option<JobWorker>,
|
||||
#[tracker::do_not_track]
|
||||
restart_xrservice: bool,
|
||||
#[tracker::do_not_track]
|
||||
build_worker: Option<JobWorker>,
|
||||
#[tracker::do_not_track]
|
||||
profiles: Vec<Profile>,
|
||||
#[tracker::do_not_track]
|
||||
xr_devices: Vec<XRDevice>,
|
||||
#[tracker::do_not_track]
|
||||
libmonado: Option<libmonado_rs::Monado>,
|
||||
|
||||
#[tracker::do_not_track]
|
||||
wivrn_conf_editor: Option<Controller<WivrnConfEditor>>,
|
||||
|
||||
#[tracker::do_not_track]
|
||||
skip_depcheck: bool,
|
||||
|
||||
#[tracker::do_not_track]
|
||||
wivrn_appimage_warn_shown: bool,
|
||||
#[tracker::do_not_track]
|
||||
configure_wivrn_action: gtk::gio::SimpleAction,
|
||||
|
||||
#[tracker::do_not_track]
|
||||
openxr_prober_worker: Option<JobWorker>,
|
||||
}
|
||||
|
||||
|
@ -348,8 +319,6 @@ impl SimpleComponent for App {
|
|||
}
|
||||
|
||||
fn update(&mut self, message: Self::Input, sender: ComponentSender<Self>) {
|
||||
self.reset();
|
||||
|
||||
match message {
|
||||
Msg::NoOp => {}
|
||||
Msg::OnServiceLog(rows) => {
|
||||
|
@ -391,10 +360,7 @@ impl SimpleComponent for App {
|
|||
};
|
||||
if stop_condition {
|
||||
if let Some(monado) = self.libmonado.as_ref() {
|
||||
self.xr_devices = XRDevice::merge(
|
||||
&self.xr_devices,
|
||||
&XRDevice::from_libmonado(monado),
|
||||
);
|
||||
self.xr_devices = XRDevice::from_libmonado(monado);
|
||||
self.main_view
|
||||
.sender()
|
||||
.emit(MainViewMsg::UpdateDevices(self.xr_devices.clone()));
|
||||
|
@ -408,7 +374,6 @@ impl SimpleComponent for App {
|
|||
}
|
||||
}
|
||||
Msg::EnableDebugViewChanged(val) => {
|
||||
self.set_enable_debug_view(val);
|
||||
self.config.debug_view_enabled = val;
|
||||
self.config.save();
|
||||
self.split_view.clone().unwrap().set_collapsed(!val);
|
||||
|
@ -884,7 +849,6 @@ impl SimpleComponent for App {
|
|||
let selected_profile = config.get_selected_profile(&profiles);
|
||||
|
||||
let mut model = App {
|
||||
tracker: 0,
|
||||
application: init.application,
|
||||
app_win: root.clone(),
|
||||
inhibit_id: None,
|
||||
|
@ -923,7 +887,6 @@ impl SimpleComponent for App {
|
|||
.detach(),
|
||||
split_view: None,
|
||||
setcap_confirm_dialog,
|
||||
enable_debug_view: config.debug_view_enabled,
|
||||
config,
|
||||
profiles,
|
||||
xrservice_worker: None,
|
||||
|
@ -955,7 +918,7 @@ impl SimpleComponent for App {
|
|||
)
|
||||
);
|
||||
actions.add_action(RelmAction::<DebugViewToggleAction>::new_stateful(
|
||||
&model.enable_debug_view,
|
||||
&model.config.debug_view_enabled,
|
||||
clone!(
|
||||
#[strong]
|
||||
sender,
|
||||
|
|
|
@ -319,79 +319,4 @@ impl XRDevice {
|
|||
}
|
||||
res
|
||||
}
|
||||
|
||||
#[deprecated]
|
||||
pub fn from_log_message(s: &str) -> Vec<Self> {
|
||||
let mut res = vec![];
|
||||
let rows = s.split('\n');
|
||||
let mut in_section = false;
|
||||
for row in rows {
|
||||
if !in_section && row.starts_with("\tIn roles:") {
|
||||
in_section = true;
|
||||
continue;
|
||||
}
|
||||
if in_section {
|
||||
if row.starts_with("\tResult:") {
|
||||
break;
|
||||
}
|
||||
match row.trim().split(": ").collect::<Vec<&str>>()[..] {
|
||||
[_, "<none>"] => {}
|
||||
[dev_type_s, name] => {
|
||||
if let Some(xrdt) = XRDeviceRole::from_monado_str(dev_type_s) {
|
||||
res.push(Self {
|
||||
dev_type: xrdt,
|
||||
name: name.to_string(),
|
||||
..Default::default()
|
||||
});
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
res
|
||||
}
|
||||
|
||||
pub fn merge(old: &[Self], new: &[Self]) -> Vec<Self> {
|
||||
if old.is_empty() {
|
||||
return Vec::from(new);
|
||||
}
|
||||
let new_dev_types = new
|
||||
.iter()
|
||||
.filter_map(|d| {
|
||||
if d.dev_type == XRDeviceRole::GenericTracker {
|
||||
None
|
||||
} else {
|
||||
Some(d.dev_type)
|
||||
}
|
||||
})
|
||||
.collect::<Vec<XRDeviceRole>>();
|
||||
let mut res = old
|
||||
.iter()
|
||||
.filter(|d| !new_dev_types.contains(&d.dev_type))
|
||||
.map(Self::clone)
|
||||
.collect::<Vec<Self>>();
|
||||
let old_tracker_serials = old
|
||||
.iter()
|
||||
.filter_map(|d| {
|
||||
if d.dev_type == XRDeviceRole::GenericTracker {
|
||||
d.serial.clone()
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.collect::<Vec<String>>();
|
||||
for n_dev in new {
|
||||
if n_dev.dev_type == XRDeviceRole::GenericTracker {
|
||||
if let Some(n_serial) = n_dev.serial.as_ref() {
|
||||
if !old_tracker_serials.contains(n_serial) {
|
||||
res.push(n_dev.clone());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
res.push(n_dev.clone());
|
||||
}
|
||||
}
|
||||
res
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue