1 /* GDK - The GIMP Drawing Kit
2 * Copyright (C) 2012 Red Hat, Inc.
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.
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.
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/>.
20 #include "gdkframetimings.h"
22 struct _GdkFrameTimings
31 gint64 presentation_time;
32 gint64 refresh_interval;
35 G_DEFINE_BOXED_TYPE (GdkFrameTimings, gdk_frame_timings,
36 gdk_frame_timings_ref,
37 gdk_frame_timings_unref)
40 gdk_frame_timings_new (gint64 frame_counter)
42 GdkFrameTimings *timings;
44 timings = g_slice_new0 (GdkFrameTimings);
45 timings->ref_count = 1;
46 timings->frame_counter = frame_counter;
52 gdk_frame_timings_ref (GdkFrameTimings *timings)
54 g_return_val_if_fail (timings != NULL, NULL);
62 gdk_frame_timings_unref (GdkFrameTimings *timings)
64 g_return_if_fail (timings != NULL);
65 g_return_if_fail (timings->ref_count > 0);
68 if (timings->ref_count == 0)
70 g_slice_free (GdkFrameTimings, timings);
75 gdk_frame_timings_get_frame_counter (GdkFrameTimings *timings)
77 return timings->frame_counter;
81 gdk_frame_timings_get_cookie (GdkFrameTimings *timings)
83 g_return_val_if_fail (timings != NULL, 0);
85 return timings->cookie;
89 gdk_frame_timings_set_cookie (GdkFrameTimings *timings,
92 g_return_if_fail (timings != NULL);
94 timings->cookie = cookie;
98 gdk_frame_timings_get_complete (GdkFrameTimings *timings)
100 g_return_val_if_fail (timings != NULL, FALSE);
102 return timings->complete;
106 gdk_frame_timings_set_complete (GdkFrameTimings *timings,
109 g_return_if_fail (timings != NULL);
111 timings->complete = complete;
115 gdk_frame_timings_get_frame_time (GdkFrameTimings *timings)
117 g_return_val_if_fail (timings != NULL, 0);
119 return timings->frame_time;
123 gdk_frame_timings_set_frame_time (GdkFrameTimings *timings,
126 g_return_if_fail (timings != NULL);
128 timings->frame_time = frame_time;
132 gdk_frame_timings_get_drawn_time (GdkFrameTimings *timings)
134 g_return_val_if_fail (timings != NULL, 0);
136 return timings->drawn_time;
140 gdk_frame_timings_set_drawn_time (GdkFrameTimings *timings,
143 g_return_if_fail (timings != NULL);
145 timings->drawn_time = drawn_time;
149 gdk_frame_timings_get_presentation_time (GdkFrameTimings *timings)
151 g_return_val_if_fail (timings != NULL, 0);
153 return timings->presentation_time;
157 gdk_frame_timings_set_presentation_time (GdkFrameTimings *timings,
158 gint64 presentation_time)
160 g_return_if_fail (timings != NULL);
162 timings->presentation_time = presentation_time;
166 gdk_frame_timings_get_refresh_interval (GdkFrameTimings *timings)
168 g_return_val_if_fail (timings != NULL, 0);
170 return timings->refresh_interval;
174 gdk_frame_timings_set_refresh_interval (GdkFrameTimings *timings,
175 gint64 refresh_interval)
177 g_return_if_fail (timings != NULL);
179 timings->refresh_interval = refresh_interval;