mirror of
https://github.com/4yn/slidershim.git
synced 2025-02-02 04:27:58 +01:00
integration hell
This commit is contained in:
parent
786ac83c4c
commit
263d21c0a6
@ -4,16 +4,16 @@ use std::{io, time::Duration};
|
|||||||
|
|
||||||
use tokio::time::sleep;
|
use tokio::time::sleep;
|
||||||
|
|
||||||
use slidershim::slider_io::{
|
// use slidershim::slider_io::{
|
||||||
brokenithm::BrokenithmJob, controller_state::FullState, worker::AsyncWorker,
|
// brokenithm::BrokenithmJob, controller_state::FullState, worker::AsyncWorker,
|
||||||
};
|
// };
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
env_logger::Builder::new()
|
env_logger::Builder::new()
|
||||||
.filter_level(log::LevelFilter::Debug)
|
.filter_level(log::LevelFilter::Debug)
|
||||||
.init();
|
.init();
|
||||||
|
|
||||||
let worker = AsyncWorker::new("brokenithm", BrokenithmJob::new(FullState::new()));
|
// let worker = AsyncWorker::new("brokenithm", BrokenithmJob::new(FullState::new()));
|
||||||
let mut input = String::new();
|
let mut input = String::new();
|
||||||
let string = io::stdin().read_line(&mut input).unwrap();
|
let string = io::stdin().read_line(&mut input).unwrap();
|
||||||
}
|
}
|
||||||
|
@ -29,15 +29,19 @@ fn quit_app() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
env_logger::init();
|
env_logger::Builder::new()
|
||||||
|
.filter_level(log::LevelFilter::Debug)
|
||||||
|
.init();
|
||||||
|
|
||||||
let config = Arc::new(Mutex::new(Some(slider_io::Config::default())));
|
let config = Arc::new(Mutex::new(Some(slider_io::Config::default())));
|
||||||
let manager: slider_io::Manager;
|
let manager: Arc<Mutex<Option<slider_io::Manager>>> = Arc::new(Mutex::new(None));
|
||||||
{
|
{
|
||||||
let c = config.lock().unwrap();
|
let config_handle = config.lock().unwrap();
|
||||||
let cr = c.as_ref().unwrap();
|
let config_handle_ref = config_handle.as_ref().unwrap();
|
||||||
cr.save();
|
config_handle_ref.save();
|
||||||
manager = slider_io::Manager::new(cr.clone());
|
let mut manager_handle = manager.lock().unwrap();
|
||||||
|
manager_handle.take();
|
||||||
|
manager_handle.replace(slider_io::Manager::new(config_handle_ref.clone()));
|
||||||
}
|
}
|
||||||
|
|
||||||
tauri::Builder::default()
|
tauri::Builder::default()
|
||||||
@ -85,13 +89,19 @@ fn main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let config_clone = Arc::clone(&config);
|
let config_clone = Arc::clone(&config);
|
||||||
|
let manager_clone = Arc::clone(&manager);
|
||||||
app.listen_global("setConfig", move |event| {
|
app.listen_global("setConfig", move |event| {
|
||||||
let payload = event.payload().unwrap();
|
let payload = event.payload().unwrap();
|
||||||
info!("Config applied {}", payload);
|
info!("Config applied {}", payload);
|
||||||
if let Some(new_config) = slider_io::Config::from_str(payload) {
|
if let Some(new_config) = slider_io::Config::from_str(payload) {
|
||||||
let mut config_handle = config_clone.lock().unwrap();
|
let mut config_handle = config_clone.lock().unwrap();
|
||||||
|
config_handle.take();
|
||||||
config_handle.replace(new_config);
|
config_handle.replace(new_config);
|
||||||
config_handle.as_ref().unwrap().save();
|
let config_handle_ref = config_handle.as_ref().unwrap();
|
||||||
|
config_handle_ref.save();
|
||||||
|
let mut manager_handle = manager_clone.lock().unwrap();
|
||||||
|
manager_handle.take();
|
||||||
|
manager_handle.replace(slider_io::Manager::new(config_handle_ref.clone()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -176,8 +176,10 @@ pub struct BrokenithmJob {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl BrokenithmJob {
|
impl BrokenithmJob {
|
||||||
pub fn new(state: FullState) -> Self {
|
pub fn new(state: &FullState) -> Self {
|
||||||
Self { state }
|
Self {
|
||||||
|
state: state.clone(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,20 @@
|
|||||||
use log::info;
|
use log::info;
|
||||||
|
|
||||||
use crate::slider_io::{
|
use crate::slider_io::{
|
||||||
config::Config, controller_state::FullState, device::HidDeviceJob, led::LedJob,
|
brokenithm::BrokenithmJob,
|
||||||
output::OutputJob, worker::ThreadWorker,
|
config::{Config, DeviceMode},
|
||||||
|
controller_state::FullState,
|
||||||
|
device::HidDeviceJob,
|
||||||
|
led::LedJob,
|
||||||
|
output::OutputJob,
|
||||||
|
worker::{AsyncWorker, ThreadWorker},
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct Manager {
|
pub struct Manager {
|
||||||
state: FullState,
|
state: FullState,
|
||||||
config: Config,
|
config: Config,
|
||||||
device_worker: ThreadWorker,
|
device_worker: Option<ThreadWorker>,
|
||||||
|
brokenithm_worker: Option<AsyncWorker>,
|
||||||
output_worker: ThreadWorker,
|
output_worker: ThreadWorker,
|
||||||
led_worker: ThreadWorker,
|
led_worker: ThreadWorker,
|
||||||
}
|
}
|
||||||
@ -21,10 +27,20 @@ impl Manager {
|
|||||||
info!("LED config {:?}", config.led_mode);
|
info!("LED config {:?}", config.led_mode);
|
||||||
|
|
||||||
let state = FullState::new();
|
let state = FullState::new();
|
||||||
let device_worker = ThreadWorker::new(
|
|
||||||
|
let (device_worker, brokenithm_worker) = match &config.device_mode {
|
||||||
|
DeviceMode::Brokenithm { .. } => (
|
||||||
|
None,
|
||||||
|
Some(AsyncWorker::new("brokenithm", BrokenithmJob::new(&state))),
|
||||||
|
),
|
||||||
|
other => (
|
||||||
|
Some(ThreadWorker::new(
|
||||||
"device",
|
"device",
|
||||||
HidDeviceJob::from_config(&state, &config.device_mode),
|
HidDeviceJob::from_config(&state, other),
|
||||||
);
|
)),
|
||||||
|
None,
|
||||||
|
),
|
||||||
|
};
|
||||||
let output_worker = ThreadWorker::new("output", OutputJob::new(&state, &config.output_mode));
|
let output_worker = ThreadWorker::new("output", OutputJob::new(&state, &config.output_mode));
|
||||||
let led_worker = ThreadWorker::new("led", LedJob::new(&state, &config.led_mode));
|
let led_worker = ThreadWorker::new("led", LedJob::new(&state, &config.led_mode));
|
||||||
|
|
||||||
@ -32,6 +48,7 @@ impl Manager {
|
|||||||
state,
|
state,
|
||||||
config,
|
config,
|
||||||
device_worker,
|
device_worker,
|
||||||
|
brokenithm_worker,
|
||||||
output_worker,
|
output_worker,
|
||||||
led_worker,
|
led_worker,
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
mod config;
|
mod config;
|
||||||
mod utils;
|
mod utils;
|
||||||
pub mod worker;
|
mod worker;
|
||||||
|
|
||||||
pub mod controller_state;
|
mod controller_state;
|
||||||
mod voltex;
|
mod voltex;
|
||||||
|
|
||||||
pub mod brokenithm;
|
mod brokenithm;
|
||||||
mod gamepad;
|
mod gamepad;
|
||||||
mod keyboard;
|
mod keyboard;
|
||||||
|
|
||||||
|
@ -115,19 +115,20 @@ impl Drop for AsyncWorker {
|
|||||||
|
|
||||||
if self.stop_signal.is_some() {
|
if self.stop_signal.is_some() {
|
||||||
let send_stop = self.stop_signal.take().unwrap();
|
let send_stop = self.stop_signal.take().unwrap();
|
||||||
self.runtime.block_on(async move {
|
|
||||||
send_stop.send(()).unwrap();
|
send_stop.send(()).unwrap();
|
||||||
});
|
// self.runtime.block_on(async move {
|
||||||
|
// send_stop.send(()).unwrap();
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
let name = self.name;
|
let name = self.name;
|
||||||
|
|
||||||
if self.task.is_some() {
|
if self.task.is_some() {
|
||||||
let task = self.task.take().unwrap();
|
// let task = self.task.take().unwrap();
|
||||||
self.runtime.block_on(async move {
|
// self.runtime.block_on(async move {
|
||||||
task.await;
|
// task.await;
|
||||||
info!("Async worker stopping internal {}", name);
|
// info!("Async worker stopping internal {}", name);
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user