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;
34 gint64 layout_start_time;
35 gint64 paint_start_time;
36 gint64 frame_end_time;
37 #endif /* G_ENABLE_DEBUG */
40 guint slept_before : 1;
43 G_DEFINE_BOXED_TYPE (GdkFrameTimings, gdk_frame_timings,
44 gdk_frame_timings_ref,
45 gdk_frame_timings_unref)
48 gdk_frame_timings_new (gint64 frame_counter)
50 GdkFrameTimings *timings;
52 timings = g_slice_new0 (GdkFrameTimings);
53 timings->ref_count = 1;
54 timings->frame_counter = frame_counter;
60 gdk_frame_timings_ref (GdkFrameTimings *timings)
62 g_return_val_if_fail (timings != NULL, NULL);
70 gdk_frame_timings_unref (GdkFrameTimings *timings)
72 g_return_if_fail (timings != NULL);
73 g_return_if_fail (timings->ref_count > 0);
76 if (timings->ref_count == 0)
78 g_slice_free (GdkFrameTimings, timings);
83 gdk_frame_timings_get_frame_counter (GdkFrameTimings *timings)
85 return timings->frame_counter;
89 gdk_frame_timings_get_cookie (GdkFrameTimings *timings)
91 g_return_val_if_fail (timings != NULL, 0);
93 return timings->cookie;
97 gdk_frame_timings_set_cookie (GdkFrameTimings *timings,
100 g_return_if_fail (timings != NULL);
102 timings->cookie = cookie;
106 gdk_frame_timings_get_complete (GdkFrameTimings *timings)
108 g_return_val_if_fail (timings != NULL, FALSE);
110 return timings->complete;
114 gdk_frame_timings_set_complete (GdkFrameTimings *timings,
117 g_return_if_fail (timings != NULL);
119 timings->complete = complete;
123 gdk_frame_timings_get_slept_before (GdkFrameTimings *timings)
125 g_return_val_if_fail (timings != NULL, FALSE);
127 return timings->slept_before;
131 gdk_frame_timings_set_slept_before (GdkFrameTimings *timings,
132 gboolean slept_before)
134 g_return_if_fail (timings != NULL);
136 timings->slept_before = slept_before;
140 gdk_frame_timings_get_frame_time (GdkFrameTimings *timings)
142 g_return_val_if_fail (timings != NULL, 0);
144 return timings->frame_time;
148 gdk_frame_timings_set_frame_time (GdkFrameTimings *timings,
151 g_return_if_fail (timings != NULL);
153 timings->frame_time = frame_time;
157 gdk_frame_timings_get_drawn_time (GdkFrameTimings *timings)
159 g_return_val_if_fail (timings != NULL, 0);
161 return timings->drawn_time;
165 gdk_frame_timings_set_drawn_time (GdkFrameTimings *timings,
168 g_return_if_fail (timings != NULL);
170 timings->drawn_time = drawn_time;
174 gdk_frame_timings_get_presentation_time (GdkFrameTimings *timings)
176 g_return_val_if_fail (timings != NULL, 0);
178 return timings->presentation_time;
182 gdk_frame_timings_set_presentation_time (GdkFrameTimings *timings,
183 gint64 presentation_time)
185 g_return_if_fail (timings != NULL);
187 timings->presentation_time = presentation_time;
191 gdk_frame_timings_get_refresh_interval (GdkFrameTimings *timings)
193 g_return_val_if_fail (timings != NULL, 0);
195 return timings->refresh_interval;
199 gdk_frame_timings_set_refresh_interval (GdkFrameTimings *timings,
200 gint64 refresh_interval)
202 g_return_if_fail (timings != NULL);
204 timings->refresh_interval = refresh_interval;
207 #ifdef G_ENABLE_DEBUG
209 _gdk_frame_timings_get_layout_start_time (GdkFrameTimings *timings)
211 g_return_val_if_fail (timings != NULL, 0);
213 return timings->layout_start_time;
217 _gdk_frame_timings_set_layout_start_time (GdkFrameTimings *timings,
218 gint64 layout_start_time)
220 g_return_if_fail (timings != NULL);
222 timings->layout_start_time = layout_start_time;
226 _gdk_frame_timings_get_paint_start_time (GdkFrameTimings *timings)
228 g_return_val_if_fail (timings != NULL, 0);
230 return timings->paint_start_time;
234 _gdk_frame_timings_set_paint_start_time (GdkFrameTimings *timings,
235 gint64 paint_start_time)
237 g_return_if_fail (timings != NULL);
239 timings->paint_start_time = paint_start_time;
243 _gdk_frame_timings_get_frame_end_time (GdkFrameTimings *timings)
245 g_return_val_if_fail (timings != NULL, 0);
247 return timings->frame_end_time;
251 _gdk_frame_timings_set_frame_end_time (GdkFrameTimings *timings,
252 gint64 frame_end_time)
254 g_return_if_fail (timings != NULL);
256 timings->frame_end_time = frame_end_time;
259 #endif /* G_ENABLE_DEBUG */