Code

Split SPCanvasItem and SPCanvasGroup to individual .h files. Removed forward header.
[inkscape.git] / src / widgets / desktop-widget.cpp
index 57e58cd5e4d4795f98c8eb8c9bd3017b7b7353aa..be2caa5ee0a3723a0e162bd99bd97d38e8467775 100644 (file)
@@ -33,6 +33,7 @@
 #include "desktop-events.h"
 #include "desktop-handles.h"
 #include "desktop-widget.h"
+#include "display/sp-canvas.h"
 #include "display/canvas-arena.h"
 #include "display/nr-arena.h"
 #include "document.h"
@@ -56,6 +57,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 +75,7 @@ using Inkscape::round;
 using Inkscape::UnitTracker;
 using Inkscape::UI::UXManager;
 using Inkscape::UI::ToolboxFactory;
+using ege::AppearTimeTracker;
 
 #ifdef WITH_INKBOARD
 #endif
@@ -121,30 +124,6 @@ static void sp_dtw_sticky_zoom_toggled (GtkMenuItem *item, gpointer data);
 
 SPViewWidgetClass *dtw_parent_class;
 
-static GTimer *baseTimer = 0;
-static bool timeReported = false;
-
-static void timeGoing(gchar const* id)
-{
-    if ( !baseTimer ) {
-        g_message("Starting time at point [%s]", id);
-        baseTimer = g_timer_new();
-    }
-}
-
-static void checkTime(gchar const* msg)
-{
-    if ( baseTimer && !timeReported ) {
-        timeReported = true;
-        g_timer_stop(baseTimer);
-        gulong msCount = 0;
-        gdouble secs = g_timer_elapsed( baseTimer, &msCount );
-        g_message("Time ended at %2.3f with [%s]", secs, msg);
-    }
-}
-
-
-
 class CMSPrefWatcher {
 public:
     CMSPrefWatcher() :
@@ -267,6 +246,8 @@ SPDesktopWidget::window_get_pointer()
     return Geom::Point(x,y);
 }
 
+static GTimer *overallTimer = 0;
+
 /**
  * Registers SPDesktopWidget class and returns its type number.
  */
@@ -274,7 +255,6 @@ GType SPDesktopWidget::getType(void)
 {
     static GtkType type = 0;
     if (!type) {
-        timeGoing("SPDesktopWidget::getType");
         GTypeInfo info = {
             sizeof(SPDesktopWidgetClass),
             0, // base_init
@@ -288,6 +268,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;
 }
@@ -298,7 +280,6 @@ GType SPDesktopWidget::getType(void)
 static void
 sp_desktop_widget_class_init (SPDesktopWidgetClass *klass)
 {
-    timeGoing("sp_desktop_widget_class_init");
     dtw_parent_class = (SPViewWidgetClass*)gtk_type_class (SP_TYPE_VIEW_WIDGET);
 
     GtkObjectClass *object_class = (GtkObjectClass *) klass;
@@ -315,7 +296,6 @@ sp_desktop_widget_class_init (SPDesktopWidgetClass *klass)
  */
 void SPDesktopWidget::init( SPDesktopWidget *dtw )
 {
-    timeGoing("SPDesktopWidget::init");
     GtkWidget *widget;
     GtkWidget *tbl;
     GtkWidget *canvas_tbl;
@@ -592,29 +572,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.
  */