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:
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
|
||||
Reference in New Issue
Block a user