No more once_cell

Fix system audio check that didn't work because the API returns ()
This commit is contained in:
Your Name
2023-02-19 22:27:19 -05:00
parent 9eb15a4a5f
commit a5d0729bba
7 changed files with 11 additions and 37 deletions

7
Cargo.lock generated
View File

@@ -6,17 +6,10 @@ version = 3
name = "auto_mute_tool"
version = "0.1.0"
dependencies = [
"once_cell",
"widestring",
"windows",
]
[[package]]
name = "once_cell"
version = "1.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
[[package]]
name = "proc-macro2"
version = "1.0.51"

View File

@@ -7,7 +7,6 @@ edition = "2021"
[dependencies]
widestring = "1.0.2"
once_cell = "1.17.1"
[dependencies.windows]
version = "0.44.0"

View File

@@ -14,3 +14,4 @@ sm64.us.f3dex2e.exe
teardown.exe
underrail.exe
valheim.exe
Spotify.exe

View File

@@ -11,12 +11,6 @@ pub(crate) struct DeviceNotificationClient {
pub(crate) callback: Box<dyn Fn(&windows::core::PCWSTR)>
}
impl Drop for DeviceNotificationClient {
fn drop(&mut self) {
println!("DNC drop");
}
}
impl IMMNotificationClient_Impl for DeviceNotificationClient {
fn OnDeviceStateChanged(
&self,
@@ -32,8 +26,6 @@ impl IMMNotificationClient_Impl for DeviceNotificationClient {
}
fn OnDeviceRemoved(&self, _pwstrdeviceid: &windows::core::PCWSTR) -> windows::core::Result<()> {
println!("OnDeviceRemoved");
// TODO: Remove device and all its sessions
Ok(())
}

View File

@@ -12,7 +12,11 @@ use std::{
io::{BufRead, BufReader},
path::Path,
ptr::null_mut,
sync::{Arc, Mutex, mpsc::{self, Sender, Receiver}}, thread,
sync::{
mpsc::{self, Receiver, Sender},
Arc, Mutex,
},
thread,
};
use sm_session_notifier::SMSessionNotifier;
@@ -51,11 +55,6 @@ impl SessionMuter {
self: &mut SessionMuter,
session: IAudioSessionControl2,
) -> Result<(), Box<dyn Error>> {
unsafe {
if session.IsSystemSoundsSession().is_ok() {
return Ok(());
}
}
match self.session_to_filename(&session) {
Ok(file_name) => {
let fn_str = file_name.to_string_lossy().to_string();
@@ -68,9 +67,7 @@ impl SessionMuter {
self.sessions.push(session);
}
}
Err(err) => {
println!("Unable to get filename for session {:?}", err);
}
Err(_) => {}
}
Ok(())
}
@@ -136,7 +133,7 @@ fn main() {
.boot_devices()
.expect("failed to get initial audio devices and sessions");
let (tx, rx) : (Sender<String>, Receiver<String>) = mpsc::channel();
let (tx, rx): (Sender<String>, Receiver<String>) = mpsc::channel();
*WIN_CHANGE_CHANNEL_TX.lock().unwrap().borrow_mut() = Some(tx);
thread::spawn(move || {
@@ -147,5 +144,4 @@ fn main() {
let path = rx.recv().unwrap();
muter.lock().unwrap().notify_window_changed(&path);
}
}

View File

@@ -23,9 +23,3 @@ impl IAudioSessionNotification_Impl for SessionNotification {
Ok(())
}
}
impl Drop for SessionNotification {
fn drop(&mut self) {
println!("SN drop");
}
}

View File

@@ -1,9 +1,9 @@
use std::{
cell::RefCell,
sync::{mpsc::Sender, Arc, Mutex},
sync::{mpsc::Sender, Mutex},
};
use once_cell::sync::Lazy;
use windows::Win32::{
Foundation::{HINSTANCE, HWND},
UI::{
@@ -18,8 +18,7 @@ use windows::Win32::{
use crate::pid_to_exe::pid_to_exe_path;
pub static WIN_CHANGE_CHANNEL_TX: Lazy<Arc<Mutex<RefCell<Option<Sender<String>>>>>> =
Lazy::new(|| Arc::new(Mutex::new(RefCell::new(None))));
pub static WIN_CHANGE_CHANNEL_TX: Mutex<RefCell<Option<Sender<String>>>> = Mutex::new(RefCell::new(None));
unsafe extern "system" fn win_event_proc(
_hook: HWINEVENTHOOK,