Update to current winapi, split project

This commit is contained in:
Your Name
2024-08-25 22:24:06 -04:00
parent a647fc5186
commit 82153d31c9
18 changed files with 593 additions and 145 deletions

View 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(())
}
}