//! App for neveko-gui #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release use std::time::Duration; use tokio::runtime::Runtime; // When compiling natively: fn main() -> Result<(), eframe::Error> { { // Silence wgpu log spam (https://github.com/gfx-rs/wgpu/issues/3206) let mut rust_log = std::env::var("RUST_LOG").unwrap_or_else(|_| "info".to_owned()); for loud_crate in ["naga", "wgpu_core", "wgpu_hal"] { if !rust_log.contains(&format!("{loud_crate}=")) { rust_log += &format!(",{loud_crate}=warn"); } } std::env::set_var("RUST_LOG", rust_log); } // Log to stdout (if you run with `RUST_LOG=debug`). tracing_subscriber::fmt::init(); let options = eframe::NativeOptions { initial_window_size: Some([1280.0, 1024.0].into()), #[cfg(feature = "wgpu")] renderer: eframe::Renderer::Wgpu, ..Default::default() }; // Guide for async gui stuff below (@_@) // Reference: https://github.com/parasyte/egui-tokio-example let rt = Runtime::new().expect("Unable to create Runtime"); // Enter the runtime so that `tokio::spawn` is available immediately. let _enter = rt.enter(); // Execute the runtime in its own thread. // The future doesn't have to do anything. In this example, it just sleeps forever. std::thread::spawn(move || { rt.block_on(async { loop { tokio::time::sleep(Duration::from_secs(3600)).await; } }) }); eframe::run_native( "neveko-gui-v0.4.8-alpha", options, Box::new(|cc| Box::new(neveko_gui::WrapApp::new(cc))), ) }