[gtk+] application: Convert to g_object_notify_by_pspec
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] application: Convert to g_object_notify_by_pspec
- Date: Sun, 6 Sep 2015 21:15:16 +0000 (UTC)
commit 0585780de1d4321409243478f02f265d34194931
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Sep 5 10:44:27 2015 -0400
application: Convert to g_object_notify_by_pspec
This avoid pspec lookup overhead in g_object_notify.
gtk/gtkapplication.c | 34 ++++++++++++++++++++--------------
1 files changed, 20 insertions(+), 14 deletions(-)
---
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index f863533..e1a574c 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -130,9 +130,12 @@ enum {
PROP_REGISTER_SESSION,
PROP_APP_MENU,
PROP_MENUBAR,
- PROP_ACTIVE_WINDOW
+ PROP_ACTIVE_WINDOW,
+ NUM_PROPERTIES
};
+static GParamSpec *gtk_application_props[NUM_PROPERTIES];
+
/* Accel handling */
typedef struct
{
@@ -508,7 +511,7 @@ gtk_application_focus_in_event_cb (GtkWindow *window,
if (application->priv->impl)
gtk_application_impl_active_window_changed (application->priv->impl, window);
- g_object_notify (G_OBJECT (application), "active-window");
+ g_object_notify_by_pspec (G_OBJECT (application), gtk_application_props[PROP_ACTIVE_WINDOW]);
return FALSE;
}
@@ -708,7 +711,7 @@ gtk_application_window_added (GtkApplication *application,
gtk_application_impl_window_added (application->priv->impl, window);
gtk_application_impl_active_window_changed (application->priv->impl, window);
- g_object_notify (G_OBJECT (application), "active-window");
+ g_object_notify_by_pspec (G_OBJECT (application), gtk_application_props[PROP_ACTIVE_WINDOW]);
}
static void
@@ -733,7 +736,7 @@ gtk_application_window_removed (GtkApplication *application,
if (priv->windows != old_active)
{
gtk_application_impl_active_window_changed (application->priv->impl, priv->windows ?
priv->windows->data : NULL);
- g_object_notify (G_OBJECT (application), "active-window");
+ g_object_notify_by_pspec (G_OBJECT (application), gtk_application_props[PROP_ACTIVE_WINDOW]);
}
}
@@ -932,32 +935,35 @@ gtk_application_class_init (GtkApplicationClass *class)
*
* Since: 3.4
*/
- g_object_class_install_property (object_class, PROP_REGISTER_SESSION,
+ gtk_application_props[PROP_REGISTER_SESSION] =
g_param_spec_boolean ("register-session",
P_("Register session"),
P_("Register with the session manager"),
- FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ FALSE,
+ G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_APP_MENU,
+ gtk_application_props[PROP_APP_MENU] =
g_param_spec_object ("app-menu",
P_("Application menu"),
P_("The GMenuModel for the application menu"),
G_TYPE_MENU_MODEL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_MENUBAR,
+ gtk_application_props[PROP_MENUBAR] =
g_param_spec_object ("menubar",
P_("Menubar"),
P_("The GMenuModel for the menubar"),
G_TYPE_MENU_MODEL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_ACTIVE_WINDOW,
+ gtk_application_props[PROP_ACTIVE_WINDOW] =
g_param_spec_object ("active-window",
P_("Active window"),
P_("The window which most recently had focus"),
GTK_TYPE_WINDOW,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+ G_PARAM_READABLE|G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties (object_class, NUM_PROPERTIES, gtk_application_props);
}
/**
@@ -1330,7 +1336,7 @@ gtk_application_set_app_menu (GtkApplication *application,
gtk_application_impl_set_app_menu (application->priv->impl, app_menu);
- g_object_notify (G_OBJECT (application), "app-menu");
+ g_object_notify_by_pspec (G_OBJECT (application), gtk_application_props[PROP_APP_MENU]);
}
}
@@ -1402,7 +1408,7 @@ gtk_application_set_menubar (GtkApplication *application,
gtk_application_impl_set_menubar (application->priv->impl, menubar);
- g_object_notify (G_OBJECT (application), "menubar");
+ g_object_notify_by_pspec (G_OBJECT (application), gtk_application_props[PROP_MENUBAR]);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]