mirror of
https://gitlab.com/gabmus/envision.git
synced 2025-08-03 14:49:04 +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::fs::remove_file;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
#[tracker::track]
|
|
||||||
pub struct App {
|
pub struct App {
|
||||||
enable_debug_view: bool,
|
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
|
||||||
application: adw::Application,
|
application: adw::Application,
|
||||||
#[tracker::do_not_track]
|
|
||||||
app_win: adw::ApplicationWindow,
|
app_win: adw::ApplicationWindow,
|
||||||
#[tracker::do_not_track]
|
|
||||||
inhibit_id: Option<u32>,
|
inhibit_id: Option<u32>,
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
|
||||||
main_view: Controller<MainView>,
|
main_view: Controller<MainView>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
debug_view: Controller<DebugView>,
|
debug_view: Controller<DebugView>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
split_view: Option<adw::NavigationSplitView>,
|
split_view: Option<adw::NavigationSplitView>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
about_dialog: adw::AboutDialog,
|
about_dialog: adw::AboutDialog,
|
||||||
#[tracker::do_not_track]
|
|
||||||
build_window: Controller<BuildWindow>,
|
build_window: Controller<BuildWindow>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
setcap_confirm_dialog: adw::MessageDialog,
|
setcap_confirm_dialog: adw::MessageDialog,
|
||||||
#[tracker::do_not_track]
|
|
||||||
libsurvive_setup_window: Controller<LibsurviveSetupWindow>,
|
libsurvive_setup_window: Controller<LibsurviveSetupWindow>,
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
|
||||||
config: Config,
|
config: Config,
|
||||||
#[tracker::do_not_track]
|
|
||||||
xrservice_worker: Option<JobWorker>,
|
xrservice_worker: Option<JobWorker>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
autostart_worker: Option<JobWorker>,
|
autostart_worker: Option<JobWorker>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
restart_xrservice: bool,
|
restart_xrservice: bool,
|
||||||
#[tracker::do_not_track]
|
|
||||||
build_worker: Option<JobWorker>,
|
build_worker: Option<JobWorker>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
profiles: Vec<Profile>,
|
profiles: Vec<Profile>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
xr_devices: Vec<XRDevice>,
|
xr_devices: Vec<XRDevice>,
|
||||||
#[tracker::do_not_track]
|
|
||||||
libmonado: Option<libmonado_rs::Monado>,
|
libmonado: Option<libmonado_rs::Monado>,
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
|
||||||
wivrn_conf_editor: Option<Controller<WivrnConfEditor>>,
|
wivrn_conf_editor: Option<Controller<WivrnConfEditor>>,
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
|
||||||
skip_depcheck: bool,
|
skip_depcheck: bool,
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
|
||||||
wivrn_appimage_warn_shown: bool,
|
wivrn_appimage_warn_shown: bool,
|
||||||
#[tracker::do_not_track]
|
|
||||||
configure_wivrn_action: gtk::gio::SimpleAction,
|
configure_wivrn_action: gtk::gio::SimpleAction,
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
|
||||||
openxr_prober_worker: Option<JobWorker>,
|
openxr_prober_worker: Option<JobWorker>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,8 +319,6 @@ impl SimpleComponent for App {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update(&mut self, message: Self::Input, sender: ComponentSender<Self>) {
|
fn update(&mut self, message: Self::Input, sender: ComponentSender<Self>) {
|
||||||
self.reset();
|
|
||||||
|
|
||||||
match message {
|
match message {
|
||||||
Msg::NoOp => {}
|
Msg::NoOp => {}
|
||||||
Msg::OnServiceLog(rows) => {
|
Msg::OnServiceLog(rows) => {
|
||||||
|
@ -391,10 +360,7 @@ impl SimpleComponent for App {
|
||||||
};
|
};
|
||||||
if stop_condition {
|
if stop_condition {
|
||||||
if let Some(monado) = self.libmonado.as_ref() {
|
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
|
self.main_view
|
||||||
.sender()
|
.sender()
|
||||||
.emit(MainViewMsg::UpdateDevices(self.xr_devices.clone()));
|
.emit(MainViewMsg::UpdateDevices(self.xr_devices.clone()));
|
||||||
|
@ -408,7 +374,6 @@ impl SimpleComponent for App {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Msg::EnableDebugViewChanged(val) => {
|
Msg::EnableDebugViewChanged(val) => {
|
||||||
self.set_enable_debug_view(val);
|
|
||||||
self.config.debug_view_enabled = val;
|
self.config.debug_view_enabled = val;
|
||||||
self.config.save();
|
self.config.save();
|
||||||
self.split_view.clone().unwrap().set_collapsed(!val);
|
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 selected_profile = config.get_selected_profile(&profiles);
|
||||||
|
|
||||||
let mut model = App {
|
let mut model = App {
|
||||||
tracker: 0,
|
|
||||||
application: init.application,
|
application: init.application,
|
||||||
app_win: root.clone(),
|
app_win: root.clone(),
|
||||||
inhibit_id: None,
|
inhibit_id: None,
|
||||||
|
@ -923,7 +887,6 @@ impl SimpleComponent for App {
|
||||||
.detach(),
|
.detach(),
|
||||||
split_view: None,
|
split_view: None,
|
||||||
setcap_confirm_dialog,
|
setcap_confirm_dialog,
|
||||||
enable_debug_view: config.debug_view_enabled,
|
|
||||||
config,
|
config,
|
||||||
profiles,
|
profiles,
|
||||||
xrservice_worker: None,
|
xrservice_worker: None,
|
||||||
|
@ -955,7 +918,7 @@ impl SimpleComponent for App {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
actions.add_action(RelmAction::<DebugViewToggleAction>::new_stateful(
|
actions.add_action(RelmAction::<DebugViewToggleAction>::new_stateful(
|
||||||
&model.enable_debug_view,
|
&model.config.debug_view_enabled,
|
||||||
clone!(
|
clone!(
|
||||||
#[strong]
|
#[strong]
|
||||||
sender,
|
sender,
|
||||||
|
|
|
@ -319,79 +319,4 @@ impl XRDevice {
|
||||||
}
|
}
|
||||||
res
|
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
Add a link
Reference in a new issue