diff --git a/gstreamer/src/clock.rs b/gstreamer/src/clock.rs index dfb3ed02a..6eb8989b6 100644 --- a/gstreamer/src/clock.rs +++ b/gstreamer/src/clock.rs @@ -312,13 +312,21 @@ impl AtomicClockReturn { unsafe { from_glib(self.0.swap(val.to_glib(), atomic::Ordering::SeqCst)) } } - pub fn compare_and_swap(&self, current: ClockReturn, new: ClockReturn) -> ClockReturn { + pub fn compare_exchange( + &self, + current: ClockReturn, + new: ClockReturn, + ) -> Result { unsafe { - from_glib(self.0.compare_and_swap( - current.to_glib(), - new.to_glib(), - atomic::Ordering::SeqCst, - )) + self.0 + .compare_exchange( + current.to_glib(), + new.to_glib(), + atomic::Ordering::SeqCst, + atomic::Ordering::SeqCst, + ) + .map(|v| from_glib(v)) + .map_err(|v| from_glib(v)) } } }