mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-11 13:48:40 +00:00
48 lines
1.6 KiB
Rust
48 lines
1.6 KiB
Rust
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
|
|
|
mod midibridge;
|
|
mod oscbridge;
|
|
mod loggerbridge;
|
|
use std::sync::Arc;
|
|
|
|
use loggerbridge::Logger;
|
|
use tauri::Manager;
|
|
use tokio::sync::mpsc;
|
|
use tokio::sync::Mutex;
|
|
// the payload type must implement `Serialize` and `Clone`.
|
|
#[derive(Clone, serde::Serialize)]
|
|
struct Payload {
|
|
message: String,
|
|
message_type: String,
|
|
}
|
|
fn main() {
|
|
let (async_input_transmitter_midi, async_input_receiver_midi) = mpsc::channel(1);
|
|
let (async_output_transmitter_midi, async_output_receiver_midi) = mpsc::channel(1);
|
|
let (async_input_transmitter_osc, async_input_receiver_osc) = mpsc::channel(1);
|
|
let (async_output_transmitter_osc, async_output_receiver_osc) = mpsc::channel(1);
|
|
tauri::Builder
|
|
::default()
|
|
.manage(midibridge::AsyncInputTransmit {
|
|
inner: Mutex::new(async_input_transmitter_midi),
|
|
})
|
|
.manage(oscbridge::AsyncInputTransmit {
|
|
inner: Mutex::new(async_input_transmitter_osc),
|
|
})
|
|
.invoke_handler(tauri::generate_handler![midibridge::sendmidi, oscbridge::sendosc])
|
|
.setup(|app| {
|
|
let window = Arc::new(app.get_window("main").unwrap());
|
|
let logger = Logger { window };
|
|
midibridge::init(
|
|
logger.clone(),
|
|
async_input_receiver_midi,
|
|
async_output_receiver_midi,
|
|
async_output_transmitter_midi
|
|
);
|
|
oscbridge::init(logger, async_input_receiver_osc, async_output_receiver_osc, async_output_transmitter_osc);
|
|
Ok(())
|
|
})
|
|
.run(tauri::generate_context!())
|
|
.expect("error while running tauri application");
|
|
}
|