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
30 gint64 presentation_time;
31 gint64 refresh_interval;
32 gint64 predicted_presentation_time;
35 gint64 layout_start_time;
36 gint64 paint_start_time;
37 gint64 frame_end_time;
38 #endif /* G_ENABLE_DEBUG */
41 guint slept_before : 1;
44 G_DEFINE_BOXED_TYPE (GdkFrameTimings, gdk_frame_timings,
45 gdk_frame_timings_ref,
46 gdk_frame_timings_unref)
49 gdk_frame_timings_new (gint64 frame_counter)
51 GdkFrameTimings *timings;
53 timings = g_slice_new0 (GdkFrameTimings);
54 timings->ref_count = 1;
55 timings->frame_counter = frame_counter;
61 gdk_frame_timings_ref (GdkFrameTimings *timings)
63 g_return_val_if_fail (timings != NULL, NULL);
71 gdk_frame_timings_unref (GdkFrameTimings *timings)
73 g_return_if_fail (timings != NULL);
74 g_return_if_fail (timings->ref_count > 0);
77 if (timings->ref_count == 0)
79 g_slice_free (GdkFrameTimings, timings);
84 gdk_frame_timings_get_frame_counter (GdkFrameTimings *timings)
86 return timings->frame_counter;
90 gdk_frame_timings_get_cookie (GdkFrameTimings *timings)
92 g_return_val_if_fail (timings != NULL, 0);
94 return timings->cookie;
98 gdk_frame_timings_set_cookie (GdkFrameTimings *timings,
101 g_return_if_fail (timings != NULL);
103 timings->cookie = cookie;
107 gdk_frame_timings_get_complete (GdkFrameTimings *timings)
109 g_return_val_if_fail (timings != NULL, FALSE);
111 return timings->complete;
115 gdk_frame_timings_set_complete (GdkFrameTimings *timings,
118 g_return_if_fail (timings != NULL);
120 timings->complete = complete;
124 gdk_frame_timings_get_slept_before (GdkFrameTimings *timings)
126 g_return_val_if_fail (timings != NULL, FALSE);
128 return timings->slept_before;
132 gdk_frame_timings_set_slept_before (GdkFrameTimings *timings,
133 gboolean slept_before)
135 g_return_if_fail (timings != NULL);
137 timings->slept_before = slept_before;
141 gdk_frame_timings_get_frame_time (GdkFrameTimings *timings)
143 g_return_val_if_fail (timings != NULL, 0);
145 return timings->frame_time;
149 gdk_frame_timings_set_frame_time (GdkFrameTimings *timings,
152 g_return_if_fail (timings != NULL);
154 timings->frame_time = frame_time;
158 gdk_frame_timings_get_drawn_time (GdkFrameTimings *timings)
160 g_return_val_if_fail (timings != NULL, 0);
162 return timings->drawn_time;
166 gdk_frame_timings_set_drawn_time (GdkFrameTimings *timings,
169 g_return_if_fail (timings != NULL);
171 timings->drawn_time = drawn_time;
175 gdk_frame_timings_get_presentation_time (GdkFrameTimings *timings)
177 g_return_val_if_fail (timings != NULL, 0);
179 return timings->presentation_time;
183 gdk_frame_timings_set_presentation_time (GdkFrameTimings *timings,
184 gint64 presentation_time)
186 g_return_if_fail (timings != NULL);
188 timings->presentation_time = presentation_time;
192 gdk_frame_timings_get_predicted_presentation_time (GdkFrameTimings *timings)
194 g_return_val_if_fail (timings != NULL, 0);
196 return timings->predicted_presentation_time;
200 gdk_frame_timings_set_predicted_presentation_time (GdkFrameTimings *timings,
201 gint64 predicted_presentation_time)
203 g_return_if_fail (timings != NULL);
205 timings->predicted_presentation_time = predicted_presentation_time;
209 gdk_frame_timings_get_refresh_interval (GdkFrameTimings *timings)
211 g_return_val_if_fail (timings != NULL, 0);
213 return timings->refresh_interval;
217 gdk_frame_timings_set_refresh_interval (GdkFrameTimings *timings,
218 gint64 refresh_interval)
220 g_return_if_fail (timings != NULL);
222 timings->refresh_interval = refresh_interval;
225 #ifdef G_ENABLE_DEBUG
227 _gdk_frame_timings_get_layout_start_time (GdkFrameTimings *timings)
229 g_return_val_if_fail (timings != NULL, 0);
231 return timings->layout_start_time;
235 _gdk_frame_timings_set_layout_start_time (GdkFrameTimings *timings,
236 gint64 layout_start_time)
238 g_return_if_fail (timings != NULL);
240 timings->layout_start_time = layout_start_time;
244 _gdk_frame_timings_get_paint_start_time (GdkFrameTimings *timings)
246 g_return_val_if_fail (timings != NULL, 0);
248 return timings->paint_start_time;
252 _gdk_frame_timings_set_paint_start_time (GdkFrameTimings *timings,
253 gint64 paint_start_time)
255 g_return_if_fail (timings != NULL);
257 timings->paint_start_time = paint_start_time;
261 _gdk_frame_timings_get_frame_end_time (GdkFrameTimings *timings)
263 g_return_val_if_fail (timings != NULL, 0);
265 return timings->frame_end_time;
269 _gdk_frame_timings_set_frame_end_time (GdkFrameTimings *timings,
270 gint64 frame_end_time)
272 g_return_if_fail (timings != NULL);
274 timings->frame_end_time = frame_end_time;
277 #endif /* G_ENABLE_DEBUG */