summaryrefslogtreecommitdiff
path: root/gtk/inspector/window.c
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2021-08-07 11:58:46 +0200
committerTimm Bäder <mail@baedert.org>2021-09-18 08:29:18 +0200
commit2bc82da34deff52c3d9ad953903f62bac6a5075e (patch)
tree1030c9e609510bfa6a981b97836e11d2ac93cc3a /gtk/inspector/window.c
parent155e0f3dfb679731c8d5a2302ab47ca632ab0f55 (diff)
downloadgtk+-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.c13
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;