summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Noronha Silva <gustavo.noronha@collabora.com>2014-04-18 15:10:42 -0300
committerGustavo Noronha Silva <gustavo@noronha.eti.br>2014-04-18 19:05:37 -0300
commitd7b183a4e3927a571e6605a5740d555e168007b7 (patch)
treede95ce1240a16f1d55cd1b9b2d4d3dade3612821
parent20e619f8a68b29421463a76c87b767bdf4fd0414 (diff)
downloadclutter-d7b183a4e3927a571e6605a5740d555e168007b7.tar.gz
clutter-main: start mainloop timer on clutter_init()
By creating and starting the timer on clutter_main() an assumption is made that that is how the main loop will be run for all clutter applications. With more and more applications moving to GApplication, this assumption no longer holds true. Moving to clutter_init() means we are starting the timer earlier than we should, and by not stopping it when the main loop quits we are taking a measure that is later than we should. I believe it is safe to consider those are close enough to the actual beginning and quitting of the main loop in practice. https://bugzilla.gnome.org/show_bug.cgi?id=728521
-rw-r--r--clutter/clutter-main.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index 04834d36f..444ceba69 100644
--- a/clutter/clutter-main.c
+++ b/clutter/clutter-main.c
@@ -901,14 +901,6 @@ void
clutter_main (void)
{
GMainLoop *loop;
- CLUTTER_STATIC_TIMER (mainloop_timer,
- NULL, /* no parent */
- "Mainloop",
- "The time spent in the clutter mainloop",
- 0 /* no application private data */);
-
- if (clutter_main_loop_level == 0)
- CLUTTER_TIMER_START (uprof_get_mainloop_context (), mainloop_timer);
if (!_clutter_context_is_initialized ())
{
@@ -942,9 +934,6 @@ clutter_main (void)
g_main_loop_unref (loop);
clutter_main_loop_level--;
-
- if (clutter_main_loop_level == 0)
- CLUTTER_TIMER_STOP (uprof_get_mainloop_context (), mainloop_timer);
}
/**
@@ -1493,6 +1482,14 @@ clutter_init_real (GError **error)
ClutterMainContext *ctx;
ClutterBackend *backend;
+#ifdef CLUTTER_ENABLE_PROFILE
+ CLUTTER_STATIC_TIMER (mainloop_timer,
+ NULL, /* no parent */
+ "Mainloop",
+ "The time spent in the clutter mainloop",
+ 0 /* no application private data */);
+#endif
+
/* Note, creates backend if not already existing, though parse args will
* have likely created it
*/
@@ -1554,6 +1551,8 @@ clutter_init_real (GError **error)
uprof_init (NULL, NULL);
_clutter_uprof_init ();
+ CLUTTER_TIMER_START (uprof_get_mainloop_context (), mainloop_timer);
+
if (clutter_profile_flags & CLUTTER_PROFILE_PICKING_ONLY)
_clutter_profile_suspend ();
#endif