summaryrefslogtreecommitdiff
path: root/gdk/gdkframeclockidle.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-05-16 19:08:34 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-05-16 19:08:34 +0000
commit33ffd54d5f5f2db1c7c6d829352f304589c92c94 (patch)
treead9228f023b2e988c345ca1533df5a0eec9a513d /gdk/gdkframeclockidle.c
parent96a806e0963efe8afd3b3f3025d8b9be308b0b5d (diff)
downloadgtk+-33ffd54d5f5f2db1c7c6d829352f304589c92c94.tar.gz
Redo frame profiling
We were adding incomplete frame timings to the profile, which lead to occasional nonsense numbers. Instead, only add timings to the profile once we marked them as complete. This also gives us an opportunity to add the presentation time as a marker.
Diffstat (limited to 'gdk/gdkframeclockidle.c')
-rw-r--r--gdk/gdkframeclockidle.c112
1 files changed, 0 insertions, 112 deletions
diff --git a/gdk/gdkframeclockidle.c b/gdk/gdkframeclockidle.c
index 8bbdffb68b..a917176993 100644
--- a/gdk/gdkframeclockidle.c
+++ b/gdk/gdkframeclockidle.c
@@ -114,96 +114,6 @@ get_sleep_serial (void)
return sleep_serial;
}
-static guint fps_counter = 0;
-
-static void
-add_timings_to_profiler (GdkFrameTimings *timings)
-{
- gdk_profiler_add_mark (timings->frame_time * 1000,
- (timings->frame_end_time - timings->frame_time) * 1000,
- "frame", "");
- if (timings->layout_start_time != 0)
- gdk_profiler_add_mark (timings->layout_start_time * 1000,
- (timings->paint_start_time - timings->layout_start_time) * 1000,
- "layout", "");
-
- if (timings->paint_start_time != 0)
- gdk_profiler_add_mark (timings->paint_start_time * 1000,
- (timings->frame_end_time - timings->paint_start_time) * 1000,
- "paint", "");
-}
-
-static gint64
-guess_refresh_interval (GdkFrameClock *frame_clock)
-{
- gint64 interval;
- gint64 i;
-
- interval = G_MAXINT64;
-
- for (i = gdk_frame_clock_get_history_start (frame_clock);
- i < gdk_frame_clock_get_frame_counter (frame_clock);
- i++)
- {
- GdkFrameTimings *t, *before;
- gint64 ts, before_ts;
-
- t = gdk_frame_clock_get_timings (frame_clock, i);
- before = gdk_frame_clock_get_timings (frame_clock, i - 1);
- if (t == NULL || before == NULL)
- continue;
-
- ts = gdk_frame_timings_get_frame_time (t);
- before_ts = gdk_frame_timings_get_frame_time (before);
- if (ts == 0 || before_ts == 0)
- continue;
-
- interval = MIN (interval, ts - before_ts);
- }
-
- if (interval == G_MAXINT64)
- return 0;
-
- return interval;
-}
-
-static double
-frame_clock_get_fps (GdkFrameClock *frame_clock)
-{
- GdkFrameTimings *start, *end;
- gint64 start_counter, end_counter;
- gint64 start_timestamp, end_timestamp;
- gint64 interval;
-
- start_counter = gdk_frame_clock_get_history_start (frame_clock);
- end_counter = gdk_frame_clock_get_frame_counter (frame_clock);
- start = gdk_frame_clock_get_timings (frame_clock, start_counter);
- for (end = gdk_frame_clock_get_timings (frame_clock, end_counter);
- end_counter > start_counter && end != NULL && !gdk_frame_timings_get_complete (end);
- end = gdk_frame_clock_get_timings (frame_clock, end_counter))
- end_counter--;
- if (end_counter - start_counter < 4)
- return 0.0;
-
- start_timestamp = gdk_frame_timings_get_presentation_time (start);
- end_timestamp = gdk_frame_timings_get_presentation_time (end);
- if (start_timestamp == 0 || end_timestamp == 0)
- {
- start_timestamp = gdk_frame_timings_get_frame_time (start);
- end_timestamp = gdk_frame_timings_get_frame_time (end);
- }
-
- interval = gdk_frame_timings_get_refresh_interval (end);
- if (interval == 0)
- {
- interval = guess_refresh_interval (frame_clock);
- if (interval == 0)
- return 0.0;
- }
-
- return ((double) end_counter - start_counter) * G_USEC_PER_SEC / (end_timestamp - start_timestamp);
-}
-
static void
gdk_frame_clock_idle_init (GdkFrameClockIdle *frame_clock_idle)
{
@@ -214,11 +124,6 @@ gdk_frame_clock_idle_init (GdkFrameClockIdle *frame_clock_idle)
priv->frame_time = g_get_monotonic_time (); /* more sane than zero */
priv->freeze_count = 0;
-
-#ifdef G_ENABLE_DEBUG
- if (fps_counter == 0)
- fps_counter = gdk_profiler_define_counter ("fps", "Frames per Second");
-#endif
}
static void
@@ -570,23 +475,6 @@ gdk_frame_clock_paint_idle (void *data)
}
}
-#ifdef G_ENABLE_DEBUG
- if (gdk_profiler_is_running ())
- {
- if (timings)
- {
- add_timings_to_profiler (timings);
- gdk_profiler_set_counter (fps_counter, timings->frame_end_time * 1000, frame_clock_get_fps (clock));
- }
- }
-
- if (GDK_DEBUG_CHECK (FRAMES))
- {
- if (timings && timings->complete)
- _gdk_frame_clock_debug_print_timings (clock, timings);
- }
-#endif /* G_ENABLE_DEBUG */
-
if (priv->requested & GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS)
{
priv->requested &= ~GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS;