Perform various optimizations #173

Merged
lucas merged 19 commits from feat/optimization into master 2024-07-10 19:45:52 +02:00
3 changed files with 39 additions and 24 deletions
Showing only changes of commit ef4c2a1d94 - Show all commits

33
Cargo.lock generated
View file

@ -1798,15 +1798,14 @@ dependencies = [
[[package]] [[package]]
name = "interprocess" name = "interprocess"
version = "1.2.1" version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81f2533f3be42fffe3b5e63b71aeca416c1c3bc33e4e27be018521e76b1f38fb" checksum = "7b4d0250d41da118226e55b3d50ca3f0d9e0a0f6829b92f543ac0054aeea1572"
dependencies = [ dependencies = [
"cfg-if",
"libc", "libc",
"rustc_version", "recvmsg",
"to_method", "widestring",
"winapi", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -2093,9 +2092,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]] [[package]]
name = "minijinja" name = "minijinja"
version = "1.0.21" version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55e877d961d4f96ce13615862322df7c0b6d169d40cab71a7ef3f9b9e594451e" checksum = "7165d0e94806d52ad5295e4b54a95176d831814840bc067298ca647e1c956338"
dependencies = [ dependencies = [
"serde", "serde",
] ]
@ -2765,6 +2764,12 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b42e27ef78c35d3998403c1d26f3efd9e135d3e5121b0a4845cc5cc27547f4f" checksum = "3b42e27ef78c35d3998403c1d26f3efd9e135d3e5121b0a4845cc5cc27547f4f"
[[package]]
name = "recvmsg"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175"
[[package]] [[package]]
name = "redox_syscall" name = "redox_syscall"
version = "0.4.1" version = "0.4.1"
@ -3540,12 +3545,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "to_method"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.37.0" version = "1.37.0"
@ -4178,6 +4177,12 @@ dependencies = [
"rustix", "rustix",
] ]
[[package]]
name = "widestring"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311"
[[package]] [[package]]
name = "winapi" name = "winapi"
version = "0.3.9" version = "0.3.9"

View file

@ -18,10 +18,10 @@ druid = { version = "0.8", features = ["im", "serde", "image", "png", "jpeg", "b
druid-widget-nursery = "0.1" druid-widget-nursery = "0.1"
dtmt-shared = { path = "../../lib/dtmt-shared", version = "*" } dtmt-shared = { path = "../../lib/dtmt-shared", version = "*" }
futures = "0.3.25" futures = "0.3.25"
interprocess = { version = "1.2.1", default-features = false } interprocess = "2.1.0"
lazy_static = "1.4.0" lazy_static = "1.4.0"
luajit2-sys = { path = "../../lib/luajit2-sys", version = "*" } luajit2-sys = { path = "../../lib/luajit2-sys", version = "*" }
minijinja = "1.0.10" minijinja = { version = "2.0.1", default-features = false }
nexusmods = { path = "../../lib/nexusmods", version = "*" } nexusmods = { path = "../../lib/nexusmods", version = "*" }
oodle = { path = "../../lib/oodle", version = "*" } oodle = { path = "../../lib/oodle", version = "*" }
open = "5.0.1" open = "5.0.1"

View file

@ -11,7 +11,7 @@ use clap::{command, value_parser, Arg};
use color_eyre::eyre::{self, Context}; use color_eyre::eyre::{self, Context};
use color_eyre::{Report, Result, Section}; use color_eyre::{Report, Result, Section};
use druid::AppLauncher; use druid::AppLauncher;
use interprocess::local_socket::{LocalSocketListener, LocalSocketStream}; use interprocess::local_socket::{prelude::*, GenericNamespaced, ListenerOptions};
use tokio::sync::RwLock; use tokio::sync::RwLock;
use crate::controller::worker::work_thread; use crate::controller::worker::work_thread;
@ -29,9 +29,9 @@ mod util {
} }
mod ui; mod ui;
// As explained in https://docs.rs/interprocess/latest/interprocess/local_socket/enum.NameTypeSupport.html // As explained in https://docs.rs/interprocess/2.1.0/interprocess/local_socket/struct.Name.html
// namespaces are supported on both platforms we care about: Windows and Linux. // namespaces are supported on both platforms we care about: Windows and Linux.
const IPC_ADDRESS: &str = "@dtmm.sock"; const IPC_ADDRESS: &str = "dtmm.sock";
#[tracing::instrument] #[tracing::instrument]
fn notify_nxm_download( fn notify_nxm_download(
@ -42,7 +42,11 @@ fn notify_nxm_download(
tracing::debug!("Received Uri '{}', sending to main process.", uri.as_ref()); tracing::debug!("Received Uri '{}', sending to main process.", uri.as_ref());
let mut stream = LocalSocketStream::connect(IPC_ADDRESS) let mut stream = LocalSocketStream::connect(
IPC_ADDRESS
.to_ns_name::<GenericNamespaced>()
.expect("Invalid socket name"),
)
.wrap_err_with(|| format!("Failed to connect to '{}'", IPC_ADDRESS)) .wrap_err_with(|| format!("Failed to connect to '{}'", IPC_ADDRESS))
.suggestion("Make sure the main window is open.")?; .suggestion("Make sure the main window is open.")?;
@ -130,8 +134,14 @@ fn main() -> Result<()> {
let _guard = span.enter(); let _guard = span.enter();
let event_sink = event_sink.clone(); let event_sink = event_sink.clone();
let server = let server = ListenerOptions::new()
LocalSocketListener::bind(IPC_ADDRESS).wrap_err("Failed to create IPC listener")?; .name(
IPC_ADDRESS
.to_ns_name::<GenericNamespaced>()
.expect("Invalid socket name"),
)
.create_sync()
.wrap_err("Failed to create IPC listener")?;
tracing::debug!("IPC server listening on '{}'", IPC_ADDRESS); tracing::debug!("IPC server listening on '{}'", IPC_ADDRESS);