1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
use glib::translate::*;
glib::wrapper! {
/// A [`FrameTimings`][crate::FrameTimings] object holds timing information for a single frame
/// of the application’s displays. To retrieve [`FrameTimings`][crate::FrameTimings] objects,
/// use [`FrameClock::timings()`][crate::FrameClock::timings()] or [`FrameClock::current_timings()`][crate::FrameClock::current_timings()].
/// The information in [`FrameTimings`][crate::FrameTimings] is useful for precise synchronization
/// of video with the event or audio streams, and for measuring
/// quality metrics for the application’s display, such as latency and jitter.
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct FrameTimings(Shared<ffi::GdkFrameTimings>);
match fn {
ref => |ptr| ffi::gdk_frame_timings_ref(ptr),
unref => |ptr| ffi::gdk_frame_timings_unref(ptr),
type_ => || ffi::gdk_frame_timings_get_type(),
}
}
impl FrameTimings {
/// The timing information in a [`FrameTimings`][crate::FrameTimings] is filled in
/// incrementally as the frame as drawn and passed off to the
/// window system for processing and display to the user. The
/// accessor functions for [`FrameTimings`][crate::FrameTimings] can return 0 to
/// indicate an unavailable value for two reasons: either because
/// the information is not yet available, or because it isn't
/// available at all. Once [`is_complete()`][Self::is_complete()] returns
/// [`true`] for a frame, you can be certain that no further values
/// will become available and be stored in the [`FrameTimings`][crate::FrameTimings].
///
/// # Returns
///
/// [`true`] if all information that will be available
/// for the frame has been filled in.
#[doc(alias = "gdk_frame_timings_get_complete")]
#[doc(alias = "get_complete")]
pub fn is_complete(&self) -> bool {
unsafe { from_glib(ffi::gdk_frame_timings_get_complete(self.to_glib_none().0)) }
}
/// Gets the frame counter value of the [`FrameClock`][crate::FrameClock] when this
/// this frame was drawn.
///
/// # Returns
///
/// the frame counter value for this frame
#[doc(alias = "gdk_frame_timings_get_frame_counter")]
#[doc(alias = "get_frame_counter")]
pub fn frame_counter(&self) -> i64 {
unsafe { ffi::gdk_frame_timings_get_frame_counter(self.to_glib_none().0) }
}
/// Returns the frame time for the frame. This is the time value
/// that is typically used to time animations for the frame. See
/// [`FrameClock::frame_time()`][crate::FrameClock::frame_time()].
///
/// # Returns
///
/// the frame time for the frame, in the timescale
/// of `g_get_monotonic_time()`
#[doc(alias = "gdk_frame_timings_get_frame_time")]
#[doc(alias = "get_frame_time")]
pub fn frame_time(&self) -> i64 {
unsafe { ffi::gdk_frame_timings_get_frame_time(self.to_glib_none().0) }
}
}