diff --git a/crates/libs/windows/src/core/agile_reference.rs b/crates/libs/windows/src/core/agile_reference.rs index f11876ab4a..9f626c495b 100644 --- a/crates/libs/windows/src/core/agile_reference.rs +++ b/crates/libs/windows/src/core/agile_reference.rs @@ -9,7 +9,10 @@ pub struct AgileReference(IAgileReference, PhantomData); impl AgileReference { /// Creates an agile reference to the object. - pub fn new<'a, O: IntoParam<'a, IUnknown>>(object: O) -> Result { + pub fn new<'a>(object: &'a T) -> Result + where + &'a T: IntoParam<'a, IUnknown>, + { unsafe { RoGetAgileReference(AGILEREFERENCE_DEFAULT, &T::IID, object).map(|reference| Self(reference, Default::default())) } } diff --git a/crates/tests/agile_reference/tests/tests.rs b/crates/tests/agile_reference/tests/tests.rs index 88141b8305..91ed3befb2 100644 --- a/crates/tests/agile_reference/tests/tests.rs +++ b/crates/tests/agile_reference/tests/tests.rs @@ -4,7 +4,7 @@ use windows::Media::Control::GlobalSystemMediaTransportControlsSessionManager; #[test] fn test() -> Result<()> { let manager = GlobalSystemMediaTransportControlsSessionManager::RequestAsync()?.get()?; - let reference = AgileReference::::new(&manager)?; + let reference = AgileReference::new(&manager)?; let handle = std::thread::spawn(move || { let manager = reference.resolve()?;