diff --git a/src/features/game_networking.rs b/src/features/game_networking.rs index 26ea98d..3b795b9 100644 --- a/src/features/game_networking.rs +++ b/src/features/game_networking.rs @@ -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() }; } } } diff --git a/src/gui/run.rs b/src/gui/run.rs index 695eabf..6a0bea6 100644 --- a/src/gui/run.rs +++ b/src/gui/run.rs @@ -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> { + // 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