Add events before and after stage paint

Add performance events:

 clutter.stagePageStart
 clutter.stagePageDone

to track frame repaints.

https://bugzilla.gnome.org/show_bug.cgi?id=618189
This commit is contained in:
Owen W. Taylor 2010-05-09 13:24:13 -04:00
parent 1dd2f2c6bc
commit a97b8c1947

View File

@ -3,6 +3,7 @@
#include "config.h" #include "config.h"
#include "shell-global-private.h" #include "shell-global-private.h"
#include "shell-perf-log.h"
#include "shell-wm.h" #include "shell-wm.h"
#include "display.h" #include "display.h"
@ -501,6 +502,22 @@ global_stage_notify_height (GObject *gobject,
NULL); NULL);
} }
static void
global_stage_before_paint (ClutterStage *stage,
ShellGlobal *global)
{
shell_perf_log_event (shell_perf_log_get_default (),
"clutter.stagePaintStart");
}
static void
global_stage_after_paint (ClutterStage *stage,
ShellGlobal *global)
{
shell_perf_log_event (shell_perf_log_get_default (),
"clutter.stagePaintDone");
}
void void
_shell_global_set_plugin (ShellGlobal *global, _shell_global_set_plugin (ShellGlobal *global,
MutterPlugin *plugin) MutterPlugin *plugin)
@ -520,6 +537,20 @@ _shell_global_set_plugin (ShellGlobal *global,
g_signal_connect (stage, "notify::height", g_signal_connect (stage, "notify::height",
G_CALLBACK (global_stage_notify_height), global); G_CALLBACK (global_stage_notify_height), global);
update_screen_size (global); update_screen_size (global);
g_signal_connect (stage, "paint",
G_CALLBACK (global_stage_before_paint), global);
g_signal_connect_after (stage, "paint",
G_CALLBACK (global_stage_after_paint), global);
shell_perf_log_define_event (shell_perf_log_get_default(),
"clutter.stagePaintStart",
"Start of stage page repaint",
"");
shell_perf_log_define_event (shell_perf_log_get_default(),
"clutter.stagePaintDone",
"End of stage page repaint",
"");
} }
void void