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
// 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 gdk_sys;
use glib::translate::*;

glib_wrapper! {
    /// A `FrameTimings` object holds timing information for a single frame
    /// of the application’s displays. To retrieve `FrameTimings` objects,
    /// use `FrameClock::get_timings` or `FrameClock::get_current_timings`.
    /// The information in `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<gdk_sys::GdkFrameTimings>);

    match fn {
        ref => |ptr| gdk_sys::gdk_frame_timings_ref(ptr),
        unref => |ptr| gdk_sys::gdk_frame_timings_unref(ptr),
        get_type => || gdk_sys::gdk_frame_timings_get_type(),
    }
}

impl FrameTimings {
    /// The timing information in a `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` 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 `FrameTimings::get_complete` returns
    /// `true` for a frame, you can be certain that no further values
    /// will become available and be stored in the `FrameTimings`.
    ///
    /// # Returns
    ///
    /// `true` if all information that will be available
    ///  for the frame has been filled in.
    pub fn get_complete(&self) -> bool {
        unsafe {
            from_glib(gdk_sys::gdk_frame_timings_get_complete(
                self.to_glib_none().0,
            ))
        }
    }

    /// Gets the frame counter value of the `FrameClock` when this
    /// this frame was drawn.
    ///
    /// # Returns
    ///
    /// the frame counter value for this frame
    pub fn get_frame_counter(&self) -> i64 {
        unsafe { gdk_sys::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::get_frame_time`.
    ///
    /// # Returns
    ///
    /// the frame time for the frame, in the timescale
    ///  of `g_get_monotonic_time`
    pub fn get_frame_time(&self) -> i64 {
        unsafe { gdk_sys::gdk_frame_timings_get_frame_time(self.to_glib_none().0) }
    }
}