Update to current winapi, split project
This commit is contained in:
23
crates/auto_mute_lib/src/session_notification.rs
Normal file
23
crates/auto_mute_lib/src/session_notification.rs
Normal file
@@ -0,0 +1,23 @@
|
||||
use windows::{
|
||||
core::{implement, Interface},
|
||||
Win32::Media::Audio::{
|
||||
IAudioSessionControl, IAudioSessionControl2, IAudioSessionNotification, IAudioSessionNotification_Impl,
|
||||
},
|
||||
};
|
||||
|
||||
#[implement(IAudioSessionNotification)]
|
||||
pub(crate) struct SessionNotification {
|
||||
pub(crate) observer: Box<dyn SessionObserver>,
|
||||
}
|
||||
|
||||
pub trait SessionObserver {
|
||||
fn add_session(&self, session: IAudioSessionControl2);
|
||||
}
|
||||
|
||||
impl IAudioSessionNotification_Impl for SessionNotification_Impl {
|
||||
fn OnSessionCreated(&self,newsession:Option<&IAudioSessionControl>) -> windows::core::Result<()> {
|
||||
let ses: IAudioSessionControl2 = newsession.as_ref().unwrap().cast().unwrap();
|
||||
self.observer.add_session(ses);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user