GdkFrameTimings: strip down to a minimal public API

Since we're not exporting the ability to create your own frame
clock for now, remove the setters for GdkFrameTimings fields.
Also remove all setters and getters for fields that are more
about implementation than about quantities that are meaningful
to the applcation and just access the fields directly within
GDK.
This commit is contained in:
Owen W. Taylor
2013-02-12 16:14:24 -05:00
parent 515e5f74aa
commit d5edf9c072
8 changed files with 70 additions and 280 deletions

View File

@ -1070,7 +1070,7 @@ find_frame_timings (GdkFrameClock *clock,
{
GdkFrameTimings *timings = gdk_frame_clock_get_timings (clock, i);
if (gdk_frame_timings_get_cookie (timings) == serial)
if (timings->cookie == serial)
return timings;
}
@ -1116,7 +1116,7 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
GdkFrameTimings *timings = find_frame_timings (clock, serial);
if (timings)
gdk_frame_timings_set_drawn_time (timings, frame_drawn_time);
timings->drawn_time = frame_drawn_time;
if (window_impl->toplevel->frame_pending)
{
@ -1153,18 +1153,16 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
if (timings)
{
gint64 drawn_time = gdk_frame_timings_get_drawn_time (timings);
gint32 presentation_time_offset = (gint32)d2;
gint32 refresh_interval = d3;
if (drawn_time && presentation_time_offset)
gdk_frame_timings_set_presentation_time (timings,
drawn_time + presentation_time_offset);
if (timings->drawn_time && presentation_time_offset)
timings->presentation_time = timings->drawn_time + presentation_time_offset;
if (refresh_interval)
gdk_frame_timings_set_refresh_interval (timings, refresh_interval);
timings->refresh_interval = refresh_interval;
gdk_frame_timings_set_complete (timings, TRUE);
timings->complete = TRUE;
#ifdef G_ENABLE_DEBUG
if ((_gdk_debug_flags & GDK_DEBUG_FRAMES) != 0)
_gdk_frame_clock_debug_print_timings (clock, timings);

View File

@ -32,6 +32,7 @@
#include "gdkvisualprivate.h"
#include "gdkinternals.h"
#include "gdkdeviceprivate.h"
#include "gdkframeclockprivate.h"
#include "gdkasync.h"
#include "gdkeventsource.h"
#include "gdkdisplay-x11.h"
@ -282,10 +283,8 @@ gdk_x11_window_predict_presentation_time (GdkWindow *window)
GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (window->impl);
GdkFrameClock *clock;
GdkFrameTimings *timings;
gint64 frame_time;
gint64 presentation_time;
gint64 refresh_interval;
gboolean slept_before;
if (!WINDOW_IS_TOPLEVEL (window))
return;
@ -293,39 +292,35 @@ gdk_x11_window_predict_presentation_time (GdkWindow *window)
clock = gdk_window_get_frame_clock (window);
timings = gdk_frame_clock_get_current_frame_timings (clock);
frame_time = gdk_frame_timings_get_frame_time (timings);
slept_before = gdk_frame_timings_get_slept_before (timings);
gdk_frame_clock_get_refresh_info (clock,
frame_time,
timings->frame_time,
&refresh_interval, &presentation_time);
if (presentation_time != 0)
{
if (slept_before)
if (timings->slept_before)
{
presentation_time += refresh_interval;
}
else
{
if (presentation_time < frame_time + refresh_interval / 2)
if (presentation_time < timings->frame_time + refresh_interval / 2)
presentation_time += refresh_interval;
}
}
else
{
if (slept_before)
presentation_time = frame_time + refresh_interval + refresh_interval / 2;
if (timings->slept_before)
presentation_time = timings->frame_time + refresh_interval + refresh_interval / 2;
else
presentation_time = frame_time + refresh_interval;
presentation_time = timings->frame_time + refresh_interval;
}
if (presentation_time < impl->toplevel->throttled_presentation_time)
presentation_time = impl->toplevel->throttled_presentation_time;
gdk_frame_timings_set_predicted_presentation_time (timings,
presentation_time);
timings->predicted_presentation_time = presentation_time;
}
static void
@ -399,7 +394,7 @@ gdk_x11_window_end_frame (GdkWindow *window)
* but rather at a particular time. This can trigger different handling from
* the compositor.
*/
if (gdk_frame_timings_get_slept_before (timings))
if (timings->slept_before)
impl->toplevel->current_counter_value += 3;
else
impl->toplevel->current_counter_value += 1;
@ -413,8 +408,7 @@ gdk_x11_window_end_frame (GdkWindow *window)
{
impl->toplevel->frame_pending = TRUE;
gdk_frame_clock_freeze (gdk_window_get_frame_clock (window));
gdk_frame_timings_set_cookie (timings,
impl->toplevel->current_counter_value);
timings->cookie = impl->toplevel->current_counter_value;
}
}
@ -431,7 +425,7 @@ gdk_x11_window_end_frame (GdkWindow *window)
}
if (!impl->toplevel->frame_pending)
gdk_frame_timings_set_complete (timings, TRUE);
timings->complete = TRUE;
}
/*****************************************************