index 57e58cd5e4d4795f98c8eb8c9bd3017b7b7353aa..be2caa5ee0a3723a0e162bd99bd97d38e8467775 100644 (file)
#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"
#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"
using Inkscape::UnitTracker;
using Inkscape::UI::UXManager;
using Inkscape::UI::ToolboxFactory;
+using ege::AppearTimeTracker;
#ifdef WITH_INKBOARD
#endif
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() :
return Geom::Point(x,y);
}
+static GTimer *overallTimer = 0;
+
/**
* Registers SPDesktopWidget class and returns its type number.
*/
{
static GtkType type = 0;
if (!type) {
- timeGoing("SPDesktopWidget::getType");
GTypeInfo info = {
sizeof(SPDesktopWidgetClass),
0, // base_init
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;
}
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;
*/
void SPDesktopWidget::init( SPDesktopWidget *dtw )
{
- timeGoing("SPDesktopWidget::init");
GtkWidget *widget;
GtkWidget *tbl;
GtkWidget *canvas_tbl;
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.
*/