Code

Merge from trunk.
[inkscape.git] / src / widgets / desktop-widget.cpp
index 57e58cd5e4d4795f98c8eb8c9bd3017b7b7353aa..4620b15328e0137603f11dcf50078cf0426513a5 100644 (file)
@@ -56,6 +56,7 @@
 #include "ui/widget/layer-selector.h"
 #include "ui/widget/selected-style.h"
 #include "ui/uxmanager.h"
+#include "util/ege-appear-time-tracker.h"
 
 // We're in the "widgets" directory, so no need to explicitly prefix these:
 #include "button.h"
@@ -73,6 +74,7 @@ using Inkscape::round;
 using Inkscape::UnitTracker;
 using Inkscape::UI::UXManager;
 using Inkscape::UI::ToolboxFactory;
+using ege::AppearTimeTracker;
 
 #ifdef WITH_INKBOARD
 #endif
@@ -267,6 +269,8 @@ SPDesktopWidget::window_get_pointer()
     return Geom::Point(x,y);
 }
 
+static GTimer *overallTimer = 0;
+
 /**
  * Registers SPDesktopWidget class and returns its type number.
  */
@@ -288,6 +292,8 @@ GType SPDesktopWidget::getType(void)
             0 // value_table
         };
         type = g_type_register_static(SP_TYPE_VIEW_WIDGET, "SPDesktopWidget", &info, static_cast<GTypeFlags>(0));
+        // Begin a timer to watch for the first desktop to appear on-screen
+        overallTimer = g_timer_new();
     }
     return type;
 }
@@ -592,29 +598,19 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
 
     gtk_widget_grab_focus (GTK_WIDGET(dtw->canvas));
 
-    {
-        g_message("FIRE UP");
-
-        gtk_widget_add_events( eventbox, GDK_STRUCTURE_MASK );
-
-        gboolean fooMap(GtkWidget *widget, GdkEvent *event, gpointer userData);
-        g_signal_connect( G_OBJECT(eventbox), "map-event", G_CALLBACK(fooMap), dtw );
-
-        void fooReal(GtkWidget *widget, gpointer userData);
-        g_signal_connect( G_OBJECT(eventbox), "map-event", G_CALLBACK(fooReal), dtw );
+    // If this is the first desktop created, report the time it takes to show up
+    if ( overallTimer ) {
+        if ( prefs->getBool("/dialogs/debug/trackAppear", false) ) {
+            // Time tracker takes ownership of the timer.
+            AppearTimeTracker *tracker = new AppearTimeTracker(overallTimer, GTK_WIDGET(dtw), "first SPDesktopWidget");
+            tracker->setAutodelete(true);
+        } else {
+            g_timer_destroy(overallTimer);
+        }
+        overallTimer = 0;
     }
 }
 
-gboolean fooMap(GtkWidget *widget, GdkEvent *event, gpointer userData) {
-    checkTime( "MAP");
-    return FALSE;
-}
-
-void fooReal(GtkWidget *widget, gpointer userData)
-{
-    checkTime("REALIZE");
-}
-
 /**
  * Called before SPDesktopWidget destruction.
  */