initialize COM in app_creator instead of local to module

This commit is contained in:
2025-12-12 03:52:40 -05:00
committed by Sapphire
parent 97e1446996
commit 54985d350a
2 changed files with 6 additions and 14 deletions
+1 -14
View File
@@ -6,10 +6,7 @@ use windows::{
INetFwPolicy2, INetFwRule, NET_FW_ACTION_BLOCK, NET_FW_IP_PROTOCOL_ANY,
NET_FW_RULE_DIR_OUT, NetFwPolicy2, NetFwRule,
},
System::Com::{
CLSCTX_INPROC_SERVER, COINIT_MULTITHREADED, CoCreateInstance, CoInitializeEx,
CoUninitialize,
},
System::Com::{CLSCTX_INPROC_SERVER, CoCreateInstance},
},
core::BSTR,
};
@@ -19,7 +16,6 @@ const FILTER_NAME_SAVE_SERVER: &str = "[GTA Tools] Block outbound traffic to Roc
#[derive(Debug)]
pub struct GameNetworking {
com_initialized: bool,
pub blocked: bool,
}
@@ -31,15 +27,6 @@ impl Default for GameNetworking {
} else {
Self::is_exe_blocked().unwrap()
},
com_initialized: unsafe { CoInitializeEx(None, COINIT_MULTITHREADED) }.is_ok(),
}
}
}
impl Drop for GameNetworking {
fn drop(&mut self) {
if self.com_initialized {
unsafe { CoUninitialize() };
}
}
}
+5
View File
@@ -6,10 +6,15 @@ use crate::{
util::{persistent_state::PersistentState, win},
};
use eframe::egui;
use windows::Win32::System::Com::{COINIT_APARTMENTTHREADED, CoInitializeEx};
fn app_creator(
cc: &eframe::CreationContext<'_>,
) -> Result<Box<dyn eframe::App>, Box<dyn std::error::Error + Send + Sync>> {
// initialize COM just in case
if unsafe { CoInitializeEx(None, COINIT_APARTMENTTHREADED) }.is_err() {
log::error!("couldn't initialize COM");
}
// initialize App early to modify some things before returning it
let mut app = Box::new(App::default());
// load previously selected launch platform & settings from persistent state