1/* GDK - The GIMP Drawing Kit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
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/*
19 * Modified by the GTK+ Team and others 1997-2010. See the AUTHORS
20 * file for a list of people on the GTK+ Team. See the ChangeLog
21 * files for a list of changes. These files are distributed with
22 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
23 */
24
25/* Uninstalled header, internal to GDK */
26
27#ifndef __GDK_FRAME_CLOCK_PRIVATE_H__
28#define __GDK_FRAME_CLOCK_PRIVATE_H__
29
30#include <gdk/gdkframeclock.h>
31#include <gdk/gdkprofilerprivate.h>
32
33G_BEGIN_DECLS
34
35/**
36 * GdkFrameClock:
37 * @parent_instance: The parent instance.
38 */
39struct _GdkFrameClock
40{
41 GObject parent_instance;
42
43 /*< private >*/
44 GdkFrameClockPrivate *priv;
45};
46
47/**
48 * GdkFrameClockClass:
49 * @parent_class: The parent class.
50
51 * @get_frame_time: Gets the time that should currently be used for
52 * animations.
53 * @request_phase: Asks the frame clock to run a particular phase.
54 * @begin_updating: Starts updates for an animation.
55 * @end_updating: Stops updates for an animation.
56 * @freeze:
57 * @thaw:
58 */
59struct _GdkFrameClockClass
60{
61 GObjectClass parent_class;
62
63 /*< public >*/
64
65 gint64 (* get_frame_time) (GdkFrameClock *clock);
66
67 void (* request_phase) (GdkFrameClock *clock,
68 GdkFrameClockPhase phase);
69 void (* begin_updating) (GdkFrameClock *clock);
70 void (* end_updating) (GdkFrameClock *clock);
71
72 void (* freeze) (GdkFrameClock *clock);
73 void (* thaw) (GdkFrameClock *clock);
74
75 /* signals */
76 /* void (* flush_events) (GdkFrameClock *clock); */
77 /* void (* before_paint) (GdkFrameClock *clock); */
78 /* void (* update) (GdkFrameClock *clock); */
79 /* void (* layout) (GdkFrameClock *clock); */
80 /* void (* paint) (GdkFrameClock *clock); */
81 /* void (* after_paint) (GdkFrameClock *clock); */
82 /* void (* resume_events) (GdkFrameClock *clock); */
83};
84
85struct _GdkFrameTimings
86{
87 /*< private >*/
88 guint ref_count;
89
90 gint64 frame_counter;
91 guint64 cookie;
92 gint64 frame_time;
93 gint64 smoothed_frame_time;
94 gint64 drawn_time;
95 gint64 presentation_time;
96 gint64 refresh_interval;
97 gint64 predicted_presentation_time;
98
99#ifdef G_ENABLE_DEBUG
100 gint64 layout_start_time;
101 gint64 paint_start_time;
102 gint64 frame_end_time;
103#endif /* G_ENABLE_DEBUG */
104
105 guint complete : 1;
106 guint slept_before : 1;
107};
108
109void _gdk_frame_clock_inhibit_freeze (GdkFrameClock *clock);
110void _gdk_frame_clock_uninhibit_freeze (GdkFrameClock *clock);
111
112void _gdk_frame_clock_begin_frame (GdkFrameClock *clock);
113void _gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
114 GdkFrameTimings *timings);
115void _gdk_frame_clock_add_timings_to_profiler (GdkFrameClock *frame_clock,
116 GdkFrameTimings *timings);
117
118GdkFrameTimings *_gdk_frame_timings_new (gint64 frame_counter);
119gboolean _gdk_frame_timings_steal (GdkFrameTimings *timings,
120 gint64 frame_counter);
121
122void _gdk_frame_clock_emit_flush_events (GdkFrameClock *frame_clock);
123void _gdk_frame_clock_emit_before_paint (GdkFrameClock *frame_clock);
124void _gdk_frame_clock_emit_update (GdkFrameClock *frame_clock);
125void _gdk_frame_clock_emit_layout (GdkFrameClock *frame_clock);
126void _gdk_frame_clock_emit_paint (GdkFrameClock *frame_clock);
127void _gdk_frame_clock_emit_after_paint (GdkFrameClock *frame_clock);
128void _gdk_frame_clock_emit_resume_events (GdkFrameClock *frame_clock);
129
130G_END_DECLS
131
132#endif /* __GDK_FRAME_CLOCK_PRIVATE_H__ */
133

source code of gtk/gdk/gdkframeclockprivate.h