]> Pileus Git - ~andy/gtk/blob - gdk/gdkframetimings.c
deb2932ebe7e71fc0634317274cfe2f5be1c6009
[~andy/gtk] / gdk / gdkframetimings.c
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 2012 Red Hat, Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include "config.h"
19
20 #include "gdkframeclockprivate.h"
21
22 G_DEFINE_BOXED_TYPE (GdkFrameTimings, gdk_frame_timings,
23                      gdk_frame_timings_ref,
24                      gdk_frame_timings_unref)
25
26 GdkFrameTimings *
27 _gdk_frame_timings_new (gint64 frame_counter)
28 {
29   GdkFrameTimings *timings;
30
31   timings = g_slice_new0 (GdkFrameTimings);
32   timings->ref_count = 1;
33   timings->frame_counter = frame_counter;
34
35   return timings;
36 }
37
38 GdkFrameTimings *
39 gdk_frame_timings_ref (GdkFrameTimings *timings)
40 {
41   g_return_val_if_fail (timings != NULL, NULL);
42
43   timings->ref_count++;
44
45   return timings;
46 }
47
48 void
49 gdk_frame_timings_unref (GdkFrameTimings *timings)
50 {
51   g_return_if_fail (timings != NULL);
52   g_return_if_fail (timings->ref_count > 0);
53
54   timings->ref_count--;
55   if (timings->ref_count == 0)
56     {
57       g_slice_free (GdkFrameTimings, timings);
58     }
59 }
60
61 gint64
62 gdk_frame_timings_get_frame_counter (GdkFrameTimings *timings)
63 {
64   return timings->frame_counter;
65 }
66
67 gboolean
68 gdk_frame_timings_get_complete (GdkFrameTimings *timings)
69 {
70   g_return_val_if_fail (timings != NULL, FALSE);
71
72   return timings->complete;
73 }
74
75 gint64
76 gdk_frame_timings_get_frame_time (GdkFrameTimings *timings)
77 {
78   g_return_val_if_fail (timings != NULL, 0);
79
80   return timings->frame_time;
81 }
82
83 gint64
84 gdk_frame_timings_get_presentation_time (GdkFrameTimings *timings)
85 {
86   g_return_val_if_fail (timings != NULL, 0);
87
88   return timings->presentation_time;
89 }
90
91 gint64
92 gdk_frame_timings_get_predicted_presentation_time (GdkFrameTimings *timings)
93 {
94   g_return_val_if_fail (timings != NULL, 0);
95
96   return timings->predicted_presentation_time;
97 }
98
99 gint64
100 gdk_frame_timings_get_refresh_interval (GdkFrameTimings *timings)
101 {
102   g_return_val_if_fail (timings != NULL, 0);
103
104   return timings->refresh_interval;
105 }