]> Pileus Git - ~andy/gtk/blob - gdk/gdkframeclockprivate.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gdk / gdkframeclockprivate.h
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, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 /*
21  * Modified by the GTK+ Team and others 1997-2010.  See the AUTHORS
22  * file for a list of people on the GTK+ Team.  See the ChangeLog
23  * files for a list of changes.  These files are distributed with
24  * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
25  */
26
27 /* Uninstalled header, internal to GDK */
28
29 #ifndef __GDK_FRAME_CLOCK_PRIVATE_H__
30 #define __GDK_FRAME_CLOCK_PRIVATE_H__
31
32 #include <gdk/gdkframeclock.h>
33
34 G_BEGIN_DECLS
35
36 struct _GdkFrameClock
37 {
38   GObject parent_instance;
39
40   /*< private >*/
41   GdkFrameClockPrivate *priv;
42 };
43
44 struct _GdkFrameClockClass
45 {
46   GObjectClass parent_class;
47
48   gint64   (* get_frame_time) (GdkFrameClock *clock);
49
50   void     (* request_phase)  (GdkFrameClock      *clock,
51                                GdkFrameClockPhase  phase);
52   void     (* begin_updating) (GdkFrameClock      *clock);
53   void     (* end_updating)   (GdkFrameClock      *clock);
54
55   void     (* freeze)         (GdkFrameClock *clock);
56   void     (* thaw)           (GdkFrameClock *clock);
57
58   /* signals */
59   /* void (* flush_events)       (GdkFrameClock *clock); */
60   /* void (* before_paint)       (GdkFrameClock *clock); */
61   /* void (* update)             (GdkFrameClock *clock); */
62   /* void (* layout)             (GdkFrameClock *clock); */
63   /* void (* paint)              (GdkFrameClock *clock); */
64   /* void (* after_paint)        (GdkFrameClock *clock); */
65   /* void (* resume_events)      (GdkFrameClock *clock); */
66 };
67
68 struct _GdkFrameTimings
69 {
70   guint ref_count;
71
72   gint64 frame_counter;
73   guint64 cookie;
74   gint64 frame_time;
75   gint64 drawn_time;
76   gint64 presentation_time;
77   gint64 refresh_interval;
78   gint64 predicted_presentation_time;
79
80 #ifdef G_ENABLE_DEBUG
81   gint64 layout_start_time;
82   gint64 paint_start_time;
83   gint64 frame_end_time;
84 #endif /* G_ENABLE_DEBUG */
85
86   guint complete : 1;
87   guint slept_before : 1;
88 };
89
90 void _gdk_frame_clock_freeze (GdkFrameClock *clock);
91 void _gdk_frame_clock_thaw   (GdkFrameClock *clock);
92
93 void _gdk_frame_clock_begin_frame         (GdkFrameClock   *clock);
94 void _gdk_frame_clock_debug_print_timings (GdkFrameClock   *clock,
95                                            GdkFrameTimings *timings);
96
97 GdkFrameTimings *_gdk_frame_timings_new (gint64 frame_counter);
98
99 G_END_DECLS
100
101 #endif /* __GDK_FRAME_CLOCK_PRIVATE_H__ */