Update dependencies
[temp2RGB.git] / src / main_loop.rs
index 6e7dd74..bc2f6ee 100644 (file)
@@ -17,13 +17,20 @@ pub fn main_loop(completed: Arc<AtomicBool>) {
         panic!("Polling frequency must be a multiple of RGB refresh frequency");
     }
 
-    init_winring0();
+    winring0::init();
 
     let sleep = timer::Sleep::new();
     let settings = settings::Settings::read(consts::FILE_CONF).expect("Cannot load settings");
     println!("Settings: {settings:?}");
 
-    let machine: &mut dyn machine::Machine = &mut machine::MachineJiji::new();
+    let mut machine: Box<dyn machine::Machine> = match settings.machine_name {
+        settings::MachineName::Jiji => {
+            Box::new(machine::MachineJiji::new().expect("Unable to create MachineJiji"))
+        }
+        settings::MachineName::LyssMetal => {
+            Box::new(machine::MachineLyssMetal::new().expect("Unable to create MachineLyssMetal"))
+        }
+    };
 
     let mut kernel = [0f32; consts::KERNEL_SIZE_SAMPLES];
     let mut current_pos = 0usize;
@@ -77,20 +84,5 @@ pub fn main_loop(completed: Arc<AtomicBool>) {
     // println!("Press any key to continue...");
     // std::io::stdin().read_line(&mut String::new()).unwrap();
 
-    unsafe {
-        winring0::DeinitializeOls();
-    }
-}
-
-fn init_winring0() {
-    unsafe {
-        let ols_ok = winring0::InitializeOls() != 0;
-        if !ols_ok {
-            panic!("Unable to initalize WingRing0");
-        }
-        let dll_status = winring0::GetDllStatus();
-        if dll_status != 0 {
-            panic!("WingRing0 DLL status error: {}", dll_status);
-        }
-    }
+    winring0::deinit();
 }