X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gdk%2Fgdkframeclock.h;h=ea5fdb4bbbb7a72c9ee84c9f26015fdf6423a504;hb=HEAD;hp=d75fce984a2c43ffc07c8ded9d5d44d5c50a12a4;hpb=3cef97f10d3125888ec7707944ecda02cd8abc20;p=~andy%2Fgtk diff --git a/gdk/gdkframeclock.h b/gdk/gdkframeclock.h index d75fce984..ea5fdb4bb 100644 --- a/gdk/gdkframeclock.h +++ b/gdk/gdkframeclock.h @@ -31,38 +31,38 @@ #ifndef __GDK_FRAME_CLOCK_H__ #define __GDK_FRAME_CLOCK_H__ -#include +#include G_BEGIN_DECLS -typedef struct _GdkFrameClock GdkFrameClock; -typedef struct _GdkFrameClockInterface GdkFrameClockInterface; -typedef struct _GdkFrameClockTarget GdkFrameClockTarget; -typedef struct _GdkFrameClockTargetInterface GdkFrameClockTargetInterface; - -#define GDK_TYPE_FRAME_CLOCK_TARGET (gdk_frame_clock_target_get_type ()) -#define GDK_FRAME_CLOCK_TARGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_FRAME_CLOCK_TARGET, GdkFrameClockTarget)) -#define GDK_IS_FRAME_CLOCK_TARGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_FRAME_CLOCK_TARGET)) -#define GDK_FRAME_CLOCK_TARGET_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GDK_TYPE_FRAME_CLOCK_TARGET, GdkFrameClockTargetInterface)) - -struct _GdkFrameClockTargetInterface -{ - GTypeInterface base_iface; - - void (*set_clock) (GdkFrameClockTarget *target, - GdkFrameClock *clock); -}; - -GType gdk_frame_clock_target_get_type (void) G_GNUC_CONST; - -void gdk_frame_clock_target_set_clock (GdkFrameClockTarget *target, - GdkFrameClock *clock); - -#define GDK_TYPE_FRAME_CLOCK (gdk_frame_clock_get_type ()) -#define GDK_FRAME_CLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_FRAME_CLOCK, GdkFrameClock)) -#define GDK_IS_FRAME_CLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_FRAME_CLOCK)) -#define GDK_FRAME_CLOCK_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GDK_TYPE_FRAME_CLOCK, GdkFrameClockInterface)) - +#define GDK_TYPE_FRAME_CLOCK (gdk_frame_clock_get_type ()) +#define GDK_FRAME_CLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_FRAME_CLOCK, GdkFrameClock)) +#define GDK_FRAME_CLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_FRAME_CLOCK, GdkFrameClockClass)) +#define GDK_IS_FRAME_CLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_FRAME_CLOCK)) +#define GDK_IS_FRAME_CLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_FRAME_CLOCK)) +#define GDK_FRAME_CLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_FRAME_CLOCK, GdkFrameClockClass)) + +typedef struct _GdkFrameClock GdkFrameClock; +typedef struct _GdkFrameClockPrivate GdkFrameClockPrivate; +typedef struct _GdkFrameClockClass GdkFrameClockClass; + +/** + * GdkFrameClockPhase: + * @GDK_FRAME_CLOCK_PHASE_NONE: no phase + * @GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS: corresponds to GdkFrameClock::flush-events. Should not be handled by applications. + * @GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT: corresponds to GdkFrameClock::before-paint. Should not be handled by applications. + * @GDK_FRAME_CLOCK_PHASE_UPDATE: corresponds to GdkFrameClock::update. + * @GDK_FRAME_CLOCK_PHASE_LAYOUT: corresponds to GdkFrameClock::layout. + * @GDK_FRAME_CLOCK_PHASE_PAINT: corresponds to GdkFrameClock::paint. + * @GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS: corresponds to GdkFrameClock::resume-events. Should not be handled by applications. + * @GDK_FRAME_CLOCK_PHASE_AFTER_PAINT: corresponds to GdkFrameClock::after-paint. Should not be handled by applications. + * + * #GdkFrameClockPhase is used to represent the different paint clock + * phases that can be requested. The elements of the enumeration + * correspond to the signals of #GdkPaintClock. + * + * Since: 3.8 + **/ typedef enum { GDK_FRAME_CLOCK_PHASE_NONE = 0, GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS = 1 << 0, @@ -74,47 +74,37 @@ typedef enum { GDK_FRAME_CLOCK_PHASE_AFTER_PAINT = 1 << 6 } GdkFrameClockPhase; -struct _GdkFrameClockInterface -{ - GTypeInterface base_iface; - - guint64 (* get_frame_time) (GdkFrameClock *clock); - - void (* request_phase) (GdkFrameClock *clock, - GdkFrameClockPhase phase); - GdkFrameClockPhase (* get_requested) (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 (* layout) (GdkFrameClock *clock); */ - /* void (* paint) (GdkFrameClock *clock); */ - /* void (* after_paint) (GdkFrameClock *clock); */ - /* void (* resume_events) (GdkFrameClock *clock); */ -}; - GType gdk_frame_clock_get_type (void) G_GNUC_CONST; -guint64 gdk_frame_clock_get_frame_time (GdkFrameClock *clock); +GDK_AVAILABLE_IN_3_8 +gint64 gdk_frame_clock_get_frame_time (GdkFrameClock *frame_clock); -void gdk_frame_clock_request_phase (GdkFrameClock *clock, +GDK_AVAILABLE_IN_3_8 +void gdk_frame_clock_request_phase (GdkFrameClock *frame_clock, GdkFrameClockPhase phase); -GdkFrameClockPhase gdk_frame_clock_get_requested (GdkFrameClock *clock); - -void gdk_frame_clock_freeze (GdkFrameClock *clock); -void gdk_frame_clock_thaw (GdkFrameClock *clock); - -/* Convenience API */ -void gdk_frame_clock_get_frame_time_val (GdkFrameClock *clock, - GTimeVal *timeval); -/* Signal emitters (used in frame clock implementations) */ -void gdk_frame_clock_frame_requested (GdkFrameClock *clock); +GDK_AVAILABLE_IN_3_8 +void gdk_frame_clock_begin_updating (GdkFrameClock *frame_clock); +GDK_AVAILABLE_IN_3_8 +void gdk_frame_clock_end_updating (GdkFrameClock *frame_clock); + +/* Frame history */ +GDK_AVAILABLE_IN_3_8 +gint64 gdk_frame_clock_get_frame_counter (GdkFrameClock *frame_clock); +GDK_AVAILABLE_IN_3_8 +gint64 gdk_frame_clock_get_history_start (GdkFrameClock *frame_clock); +GDK_AVAILABLE_IN_3_8 +GdkFrameTimings *gdk_frame_clock_get_timings (GdkFrameClock *frame_clock, + gint64 frame_counter); + +GDK_AVAILABLE_IN_3_8 +GdkFrameTimings *gdk_frame_clock_get_current_timings (GdkFrameClock *frame_clock); + +GDK_AVAILABLE_IN_3_8 +void gdk_frame_clock_get_refresh_info (GdkFrameClock *frame_clock, + gint64 base_time, + gint64 *refresh_interval_return, + gint64 *presentation_time_return); G_END_DECLS