X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fwidgets%2Fdesktop-widget.cpp;h=be2caa5ee0a3723a0e162bd99bd97d38e8467775;hb=0dc33d4ce43e0bb49c63aa53b826ec4a1ff68e28;hp=57e58cd5e4d4795f98c8eb8c9bd3017b7b7353aa;hpb=b947b86feae33a7df233d6818a0b121611127cad;p=inkscape.git diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 57e58cd5e..be2caa5ee 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -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(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. */