G_BEGIN_DECLS
-typedef struct _GdkFrameClockIdlePrivate GdkFrameClockIdlePrivate;
-
struct _GdkFrameClock
{
GObject parent_instance;
{
GObjectClass parent_class;
- guint64 (* get_frame_time) (GdkFrameClock *clock);
+ gint64 (* get_frame_time) (GdkFrameClock *clock);
- void (* request_phase) (GdkFrameClock *clock,
- GdkFrameClockPhase phase);
- GdkFrameClockPhase (* get_requested) (GdkFrameClock *clock);
+ void (* request_phase) (GdkFrameClock *clock,
+ GdkFrameClockPhase phase);
+ void (* begin_updating) (GdkFrameClock *clock);
+ void (* end_updating) (GdkFrameClock *clock);
- void (* freeze) (GdkFrameClock *clock);
- void (* thaw) (GdkFrameClock *clock);
+ void (* freeze) (GdkFrameClock *clock);
+ void (* thaw) (GdkFrameClock *clock);
/* signals */
- /* void (* frame_requested) (GdkFrameClock *clock); */
/* void (* flush_events) (GdkFrameClock *clock); */
/* void (* before_paint) (GdkFrameClock *clock); */
/* void (* update) (GdkFrameClock *clock); */
/* void (* resume_events) (GdkFrameClock *clock); */
};
+struct _GdkFrameTimings
+{
+ guint ref_count;
+
+ gint64 frame_counter;
+ guint64 cookie;
+ gint64 frame_time;
+ gint64 drawn_time;
+ gint64 presentation_time;
+ gint64 refresh_interval;
+ gint64 predicted_presentation_time;
+
+#ifdef G_ENABLE_DEBUG
+ gint64 layout_start_time;
+ gint64 paint_start_time;
+ gint64 frame_end_time;
+#endif /* G_ENABLE_DEBUG */
+
+ guint complete : 1;
+ guint slept_before : 1;
+};
+
+void _gdk_frame_clock_freeze (GdkFrameClock *clock);
+void _gdk_frame_clock_thaw (GdkFrameClock *clock);
+
+void _gdk_frame_clock_begin_frame (GdkFrameClock *clock);
+void _gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
+ GdkFrameTimings *timings);
+
+GdkFrameTimings *_gdk_frame_timings_new (gint64 frame_counter);
+
G_END_DECLS
#endif /* __GDK_FRAME_CLOCK_PRIVATE_H__ */