diff options
author | Timm Bäder <mail@baedert.org> | 2021-08-07 11:58:46 +0200 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2021-09-18 08:29:18 +0200 |
commit | 2bc82da34deff52c3d9ad953903f62bac6a5075e (patch) | |
tree | 1030c9e609510bfa6a981b97836e11d2ac93cc3a /gtk/inspector/window.c | |
parent | 155e0f3dfb679731c8d5a2302ab47ca632ab0f55 (diff) | |
download | gtk+-2bc82da34deff52c3d9ad953903f62bac6a5075e.tar.gz |
inspector: Cache if we have ever constructed a window
Silly optimization to get rid of
gtk_main_do_event
gtk_inspector_handle_event
gtk_inspector_window_get_for_display
g_object_get_data
showing up in profiles even though it's useless since we've never even
created any inspector window in the first place.
Diffstat (limited to 'gtk/inspector/window.c')
-rw-r--r-- | gtk/inspector/window.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gtk/inspector/window.c b/gtk/inspector/window.c index 02b108d882..6bc0df080a 100644 --- a/gtk/inspector/window.c +++ b/gtk/inspector/window.c @@ -84,6 +84,12 @@ static guint signals[LAST_SIGNAL]; G_DEFINE_TYPE (GtkInspectorWindow, gtk_inspector_window, GTK_TYPE_WINDOW) + +/* Fast way of knowing that further checks are necessary because at least + * one inspector window has been constructed. */ +static gboolean any_inspector_window_constructed = FALSE; + + static gboolean set_selected_object (GtkInspectorWindow *iw, GObject *selected) @@ -286,6 +292,7 @@ gtk_inspector_window_constructed (GObject *object) G_OBJECT_CLASS (gtk_inspector_window_parent_class)->constructed (object); g_object_set_data (G_OBJECT (iw->inspected_display), "-gtk-inspector", iw); + any_inspector_window_constructed = TRUE; gtk_inspector_object_tree_set_display (GTK_INSPECTOR_OBJECT_TREE (iw->object_tree), iw->inspected_display); gtk_inspector_css_editor_set_display (GTK_INSPECTOR_CSS_EDITOR (iw->css_editor), iw->inspected_display); @@ -836,6 +843,9 @@ gtk_inspector_is_recording (GtkWidget *widget) { GtkInspectorWindow *iw; + if (!any_inspector_window_constructed) + return FALSE; + iw = gtk_inspector_window_get_for_display (gtk_widget_get_display (widget)); if (iw == NULL) return FALSE; @@ -853,6 +863,9 @@ gtk_inspector_handle_event (GdkEvent *event) GtkInspectorWindow *iw; gboolean handled = FALSE; + if (!any_inspector_window_constructed) + return FALSE; + iw = gtk_inspector_window_get_for_display (gdk_event_get_display (event)); if (iw == NULL) return FALSE; |