Commit bb11195e authored by Owen W. Taylor's avatar Owen W. Taylor

GdkFrameClock: Clean up the public API

* remove gdk_frame_clock_get_frame_time_val(); a convenience
  function that would rarely be used.
* remove gdk_frame_clock_get_requested() and
  ::frame-requested signal; while we might want to eventually
   be able to track the requested phases for a clock, we don't
  have a current use case.
* Make gdk_frame_clock_freeze/thaw() private: they are only
  used within GTK+ and have complex semantics.
* Remove gdk_frame_clock_get_last_complete(). Another convenience
  function that I don't have a current use case for.
* Rename:
  gdk_frame_clock_get_start() => gdk_frame_clock_get_history_start()
  gdk_frame_clocK_get_current_frame_timings() => gdk_frame_clock_get_timings()
parent d5edf9c0
......@@ -78,7 +78,6 @@
G_DEFINE_ABSTRACT_TYPE (GdkFrameClock, gdk_frame_clock, G_TYPE_OBJECT)
enum {
FRAME_REQUESTED,
FLUSH_EVENTS,
BEFORE_PAINT,
UPDATE,
......@@ -121,22 +120,6 @@ gdk_frame_clock_class_init (GdkFrameClockClass *klass)
gobject_class->finalize = gdk_frame_clock_finalize;
/**
* GdkFrameClock::frame-requested:
* @clock: the frame clock emitting the signal
*
* This signal is emitted when a frame is not pending, and
* gdk_frame_clock_request_frame() is called to request a frame.
*/
signals[FRAME_REQUESTED] =
g_signal_new (g_intern_static_string ("frame-requested"),
GDK_TYPE_FRAME_CLOCK,
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
/**
* GdkFrameClock::flush-events:
* @clock: the frame clock emitting the signal
......@@ -319,7 +302,7 @@ gdk_frame_clock_request_phase (GdkFrameClock *clock,
void
gdk_frame_clock_freeze (GdkFrameClock *clock)
_gdk_frame_clock_freeze (GdkFrameClock *clock)
{
g_return_if_fail (GDK_IS_FRAME_CLOCK (clock));
......@@ -328,55 +311,13 @@ gdk_frame_clock_freeze (GdkFrameClock *clock)
void
gdk_frame_clock_thaw (GdkFrameClock *clock)
_gdk_frame_clock_thaw (GdkFrameClock *clock)
{
g_return_if_fail (GDK_IS_FRAME_CLOCK (clock));
GDK_FRAME_CLOCK_GET_CLASS (clock)->thaw (clock);
}
/**
* gdk_frame_clock_get_requested:
* @clock: the clock
*
* Gets whether a frame paint has been requested but has not been
* performed.
*
*
* Since: 3.0
* Return value: TRUE if a frame paint is pending
*/
GdkFrameClockPhase
gdk_frame_clock_get_requested (GdkFrameClock *clock)
{
g_return_val_if_fail (GDK_IS_FRAME_CLOCK (clock), FALSE);
return GDK_FRAME_CLOCK_GET_CLASS (clock)->get_requested (clock);
}
/**
* gdk_frame_clock_get_frame_time_val:
* @clock: the clock
* @timeval: #GTimeVal to fill in with frame time
*
* Like gdk_frame_clock_get_frame_time() but returns the time as a
* #GTimeVal which may be handy with some APIs (such as
* #GdkPixbufAnimation).
*/
void
gdk_frame_clock_get_frame_time_val (GdkFrameClock *clock,
GTimeVal *timeval)
{
guint64 time_ms;
g_return_if_fail (GDK_IS_FRAME_CLOCK (clock));
time_ms = gdk_frame_clock_get_frame_time (clock);
timeval->tv_sec = time_ms / 1000;
timeval->tv_usec = (time_ms % 1000) * 1000;
}
gint64
gdk_frame_clock_get_frame_counter (GdkFrameClock *clock)
{
......@@ -390,7 +331,7 @@ gdk_frame_clock_get_frame_counter (GdkFrameClock *clock)
}
gint64
gdk_frame_clock_get_start (GdkFrameClock *clock)
gdk_frame_clock_get_history_start (GdkFrameClock *clock)
{
GdkFrameClockPrivate *priv;
......@@ -446,7 +387,7 @@ gdk_frame_clock_get_timings (GdkFrameClock *clock,
}
GdkFrameTimings *
gdk_frame_clock_get_current_frame_timings (GdkFrameClock *clock)
gdk_frame_clock_get_frame_timings (GdkFrameClock *clock)
{
GdkFrameClockPrivate *priv;
......@@ -458,26 +399,6 @@ gdk_frame_clock_get_current_frame_timings (GdkFrameClock *clock)
}
GdkFrameTimings *
gdk_frame_clock_get_last_complete (GdkFrameClock *clock)
{
GdkFrameClockPrivate *priv;
gint i;
g_return_val_if_fail (GDK_IS_FRAME_CLOCK (clock), NULL);
priv = clock->priv;
for (i = 0; i < priv->n_timings; i++)
{
gint pos = ((priv->current - i) + FRAME_HISTORY_MAX_LENGTH) % FRAME_HISTORY_MAX_LENGTH;
if (priv->timings[pos]->complete)
return priv->timings[pos];
}
return NULL;
}
#ifdef G_ENABLE_DEBUG
void
_gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
......
......@@ -63,29 +63,20 @@ guint64 gdk_frame_clock_get_frame_time (GdkFrameClock *clock);
void gdk_frame_clock_request_phase (GdkFrameClock *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);
/* Frame history */
gint64 gdk_frame_clock_get_frame_counter (GdkFrameClock *clock);
gint64 gdk_frame_clock_get_start (GdkFrameClock *clock);
gint64 gdk_frame_clock_get_history_start (GdkFrameClock *clock);
GdkFrameTimings *gdk_frame_clock_get_timings (GdkFrameClock *clock,
gint64 frame_counter);
GdkFrameTimings *gdk_frame_clock_get_last_complete (GdkFrameClock *clock);
/* Convenience API */
void gdk_frame_clock_get_frame_time_val (GdkFrameClock *clock,
GTimeVal *timeval);
GdkFrameTimings *gdk_frame_clock_get_current_timings (GdkFrameClock *clock);
void gdk_frame_clock_get_refresh_info (GdkFrameClock *clock,
gint64 base_time,
gint64 *refresh_interval_return,
gint64 *presentation_time_return);
GdkFrameTimings *gdk_frame_clock_get_current_frame_timings (GdkFrameClock *clock);
G_END_DECLS
#endif /* __GDK_FRAME_CLOCK_H__ */
......@@ -220,8 +220,6 @@ maybe_start_idle (GdkFrameClockIdle *clock_idle)
gdk_frame_clock_paint_idle,
g_object_ref (clock_idle),
(GDestroyNotify) g_object_unref);
g_signal_emit_by_name (clock_idle, "frame-requested");
}
}
}
......@@ -286,7 +284,7 @@ gdk_frame_clock_paint_idle (void *data)
if (priv->phase > GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT)
{
timings = gdk_frame_clock_get_current_frame_timings (clock);
timings = gdk_frame_clock_get_current_timings (clock);
}
if (!skip_to_resume_events)
......@@ -302,7 +300,7 @@ gdk_frame_clock_paint_idle (void *data)
priv->frame_time = compute_frame_time (clock_idle);
_gdk_frame_clock_begin_frame (clock);
timings = gdk_frame_clock_get_current_frame_timings (clock);
timings = gdk_frame_clock_get_current_timings (clock);
timings->frame_time = priv->frame_time;
timings->slept_before = priv->sleep_serial != get_sleep_serial ();
......@@ -430,14 +428,6 @@ gdk_frame_clock_idle_request_phase (GdkFrameClock *clock,
maybe_start_idle (clock_idle);
}
static GdkFrameClockPhase
gdk_frame_clock_idle_get_requested (GdkFrameClock *clock)
{
GdkFrameClockIdlePrivate *priv = GDK_FRAME_CLOCK_IDLE (clock)->priv;
return priv->requested;
}
static void
gdk_frame_clock_idle_freeze (GdkFrameClock *clock)
{
......@@ -492,7 +482,6 @@ gdk_frame_clock_idle_class_init (GdkFrameClockIdleClass *klass)
frame_clock_class->get_frame_time = gdk_frame_clock_idle_get_frame_time;
frame_clock_class->request_phase = gdk_frame_clock_idle_request_phase;
frame_clock_class->get_requested = gdk_frame_clock_idle_get_requested;
frame_clock_class->freeze = gdk_frame_clock_idle_freeze;
frame_clock_class->thaw = gdk_frame_clock_idle_thaw;
......
......@@ -47,17 +47,15 @@ struct _GdkFrameClockClass
{
GObjectClass parent_class;
guint64 (* get_frame_time) (GdkFrameClock *clock);
guint64 (* 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 (* 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); */
......@@ -89,6 +87,9 @@ struct _GdkFrameTimings
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);
......
......@@ -4903,7 +4903,7 @@ gdk_window_freeze_toplevel_updates_libgtk_only (GdkWindow *window)
g_return_if_fail (window->window_type != GDK_WINDOW_CHILD);
window->update_and_descendants_freeze_count++;
gdk_frame_clock_freeze (gdk_window_get_frame_clock (window));
_gdk_frame_clock_freeze (gdk_window_get_frame_clock (window));
}
/**
......@@ -4924,7 +4924,7 @@ gdk_window_thaw_toplevel_updates_libgtk_only (GdkWindow *window)
g_return_if_fail (window->update_and_descendants_freeze_count > 0);
window->update_and_descendants_freeze_count--;
gdk_frame_clock_thaw (gdk_window_get_frame_clock (window));
_gdk_frame_clock_thaw (gdk_window_get_frame_clock (window));
gdk_window_schedule_update (window);
}
......
......@@ -686,7 +686,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
window_impl->toplevel->frame_pending)
{
window_impl->toplevel->frame_pending = FALSE;
gdk_frame_clock_thaw (gdk_window_get_frame_clock (event->any.window));
_gdk_frame_clock_thaw (gdk_window_get_frame_clock (event->any.window));
}
if (toplevel)
......@@ -1064,7 +1064,7 @@ find_frame_timings (GdkFrameClock *clock,
{
gint64 start_frame, end_frame, i;
start_frame = gdk_frame_clock_get_start (clock);
start_frame = gdk_frame_clock_get_history_start (clock);
end_frame = gdk_frame_clock_get_frame_counter (clock);
for (i = end_frame; i >= start_frame; i--)
{
......@@ -1121,7 +1121,7 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
if (window_impl->toplevel->frame_pending)
{
window_impl->toplevel->frame_pending = FALSE;
gdk_frame_clock_thaw (clock);
_gdk_frame_clock_thaw (clock);
}
gdk_frame_clock_get_refresh_info (clock,
......
......@@ -291,7 +291,7 @@ gdk_x11_window_predict_presentation_time (GdkWindow *window)
clock = gdk_window_get_frame_clock (window);
timings = gdk_frame_clock_get_current_frame_timings (clock);
timings = gdk_frame_clock_get_current_timings (clock);
gdk_frame_clock_get_refresh_info (clock,
timings->frame_time,
......@@ -372,7 +372,7 @@ gdk_x11_window_end_frame (GdkWindow *window)
return;
clock = gdk_window_get_frame_clock (window);
timings = gdk_frame_clock_get_current_frame_timings (clock);
timings = gdk_frame_clock_get_current_timings (clock);
impl->toplevel->in_frame = FALSE;
......@@ -407,7 +407,7 @@ gdk_x11_window_end_frame (GdkWindow *window)
gdk_atom_intern_static_string ("_NET_WM_FRAME_DRAWN")))
{
impl->toplevel->frame_pending = TRUE;
gdk_frame_clock_freeze (gdk_window_get_frame_clock (window));
_gdk_frame_clock_freeze (gdk_window_get_frame_clock (window));
timings->cookie = impl->toplevel->current_counter_value;
}
}
......
......@@ -221,7 +221,7 @@ on_window_draw (GtkWidget *widget,
if (displayed_frame->frame_counter == 0)
{
GdkFrameClock *frame_clock = gtk_widget_get_frame_clock (window);
displayed_frame->frame_counter = gdk_frame_clock_get_frame_counter (clock);
displayed_frame->frame_counter = gdk_frame_clock_get_frame_counter (frame_clock);
}
}
}
......@@ -238,7 +238,7 @@ collect_old_frames (void)
gboolean remove = FALSE;
l_next = l->next;
GdkFrameTimings *timings = gdk_frame_clock_get_timings (clock,
GdkFrameTimings *timings = gdk_frame_clock_get_timings (frame_clock,
frame_data->frame_counter);
if (timings == NULL)
{
......@@ -303,7 +303,7 @@ static void
on_update (GdkFrameClock *frame_clock,
gpointer data)
{
GdkFrameTimings *timings = gdk_frame_clock_get_current_frame_timings (frame_clock);
GdkFrameTimings *timings = gdk_frame_clock_get_current_timings (frame_clock);
gint64 frame_time = gdk_frame_timings_get_frame_time (timings);
gint64 predicted_presentation_time = gdk_frame_timings_get_predicted_presentation_time (timings);
gint64 refresh_interval;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment