Add GDK_DEBUG=frames

Add a debug option to print out detailed statistics about each frame drawn.

https://bugzilla.gnome.org/show_bug.cgi?id=685460
This commit is contained in:
Owen W. Taylor
2012-11-14 19:21:33 -05:00
parent 9690567d50
commit 8855bf052d
7 changed files with 184 additions and 5 deletions

View File

@ -30,6 +30,12 @@ struct _GdkFrameTimings
gint64 presentation_time;
gint64 refresh_interval;
#ifdef G_ENABLE_DEBUG
gint64 layout_start_time;
gint64 paint_start_time;
gint64 frame_end_time;
#endif /* G_ENABLE_DEBUG */
guint complete : 1;
guint slept_before : 1;
};
@ -197,3 +203,57 @@ gdk_frame_timings_set_refresh_interval (GdkFrameTimings *timings,
timings->refresh_interval = refresh_interval;
}
#ifdef G_ENABLE_DEBUG
gint64
_gdk_frame_timings_get_layout_start_time (GdkFrameTimings *timings)
{
g_return_val_if_fail (timings != NULL, 0);
return timings->layout_start_time;
}
void
_gdk_frame_timings_set_layout_start_time (GdkFrameTimings *timings,
gint64 layout_start_time)
{
g_return_if_fail (timings != NULL);
timings->layout_start_time = layout_start_time;
}
gint64
_gdk_frame_timings_get_paint_start_time (GdkFrameTimings *timings)
{
g_return_val_if_fail (timings != NULL, 0);
return timings->paint_start_time;
}
void
_gdk_frame_timings_set_paint_start_time (GdkFrameTimings *timings,
gint64 paint_start_time)
{
g_return_if_fail (timings != NULL);
timings->paint_start_time = paint_start_time;
}
gint64
_gdk_frame_timings_get_frame_end_time (GdkFrameTimings *timings)
{
g_return_val_if_fail (timings != NULL, 0);
return timings->frame_end_time;
}
void
_gdk_frame_timings_set_frame_end_time (GdkFrameTimings *timings,
gint64 frame_end_time)
{
g_return_if_fail (timings != NULL);
timings->frame_end_time = frame_end_time;
}
#endif /* G_ENABLE_DEBUG */