[clutter/clutter-1.18] clutter-main: start mainloop timer on clutter_init()



commit d7b183a4e3927a571e6605a5740d555e168007b7
Author: Gustavo Noronha Silva <gustavo noronha collabora com>
Date:   Fri Apr 18 15:10:42 2014 -0300

    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

 clutter/clutter-main.c |   21 ++++++++++-----------
 1 files changed, 10 insertions(+), 11 deletions(-)
---
diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index 04834d3..444ceba 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]