summaryrefslogtreecommitdiff
path: root/gtk/gtkaction.c
diff options
context:
space:
mode:
authorChristian Persch <chpe@gnome.org>2007-07-10 22:18:08 +0000
committerChristian Persch <chpe@src.gnome.org>2007-07-10 22:18:08 +0000
commitbd48f263ceb208d8bc2a7582a713aa4014791d61 (patch)
tree55688893c07a4b04055602b59798006bc0da6130 /gtk/gtkaction.c
parent2048ec5925a4f94b8485ac0db1582e200e3799a9 (diff)
downloadgtk+-bd48f263ceb208d8bc2a7582a713aa4014791d61.tar.gz
Intern the action's name. Saves two string duplicates of it per action;
2007-07-11 Christian Persch <chpe@gnome.org> * gtk/gtkaction.c: (gtk_action_buildable_set_name), (gtk_action_finalize), (gtk_action_set_property), (gtk_action_get_property): * gtk/gtkactiongroup.c: (gtk_action_group_init), (gtk_action_group_add_action), (gtk_action_group_add_action_with_accel), (gtk_action_group_remove_action): Intern the action's name. Saves two string duplicates of it per action; bug #455645. svn path=/trunk/; revision=18441
Diffstat (limited to 'gtk/gtkaction.c')
-rw-r--r--gtk/gtkaction.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/gtk/gtkaction.c b/gtk/gtkaction.c
index 49d40c36a5..c4ef50dcb9 100644
--- a/gtk/gtkaction.c
+++ b/gtk/gtkaction.c
@@ -54,7 +54,7 @@
struct _GtkActionPrivate
{
- gchar *name;
+ const gchar *name; /* interned */
gchar *label;
gchar *short_label;
gchar *tooltip;
@@ -398,12 +398,9 @@ static void
gtk_action_buildable_set_name (GtkBuildable *buildable,
const gchar *name)
{
- gchar *tmp;
GtkAction *action = GTK_ACTION (buildable);
- tmp = action->private_data->name;
- action->private_data->name = g_strdup (name);
- g_free (tmp);
+ action->private_data->name = g_intern_string (name);
}
static const gchar *
@@ -455,7 +452,6 @@ gtk_action_finalize (GObject *object)
GtkAction *action;
action = GTK_ACTION (object);
- g_free (action->private_data->name);
g_free (action->private_data->label);
g_free (action->private_data->short_label);
g_free (action->private_data->tooltip);
@@ -476,16 +472,13 @@ gtk_action_set_property (GObject *object,
GParamSpec *pspec)
{
GtkAction *action;
- gchar *tmp;
action = GTK_ACTION (object);
switch (prop_id)
{
case PROP_NAME:
- tmp = action->private_data->name;
- action->private_data->name = g_value_dup_string (value);
- g_free (tmp);
+ action->private_data->name = g_intern_string (g_value_get_string (value));
break;
case PROP_LABEL:
gtk_action_set_label (action, g_value_get_string (value));
@@ -545,7 +538,7 @@ gtk_action_get_property (GObject *object,
switch (prop_id)
{
case PROP_NAME:
- g_value_set_string (value, action->private_data->name);
+ g_value_set_static_string (value, action->private_data->name);
break;
case PROP_LABEL:
g_value_set_string (value, action->private_data->label);