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" name = "auto_mute_tool"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"once_cell",
"widestring", "widestring",
"windows", "windows",
] ]
[[package]]
name = "once_cell"
version = "1.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.51" version = "1.0.51"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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