Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
gnome-main-menu
gnome-main-menu-bnc402256-leaks.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gnome-main-menu-bnc402256-leaks.diff of Package gnome-main-menu
bnc402256 - Fix memory leaks when refreshing the recent files list and bookmarks. diff --git a/libslab/bookmark-agent.c b/libslab/bookmark-agent.c index 47dc6bc..93efd23 100644 --- a/libslab/bookmark-agent.c +++ b/libslab/bookmark-agent.c @@ -1061,8 +1061,12 @@ create_app_item (BookmarkAgent *this, const gchar *uri) else if (! libslab_strcmp (name, "Shutdown")) g_bookmark_file_set_title (priv->store, uri, _("Shutdown")); + g_free (name); + if (libslab_strcmp (uri, uri_new)) g_bookmark_file_move_item (priv->store, uri, uri_new, NULL); + + g_free (uri_new); } static void @@ -1121,6 +1125,8 @@ create_doc_item (BookmarkAgent *this, const gchar *uri) if (libslab_strcmp (uri, uri_new)) g_bookmark_file_move_item (priv->store, uri, uri_new, NULL); + + g_free (uri_new); } static void @@ -1204,6 +1210,8 @@ create_dir_item (BookmarkAgent *this, const gchar *uri) if (uri_new && libslab_strcmp (uri, uri_new)) g_bookmark_file_move_item (priv->store, uri, uri_new, NULL); + + g_free (uri_new); } static void diff --git a/libslab/nameplate-tile.c b/libslab/nameplate-tile.c index 23362e4..fc2f661 100644 --- a/libslab/nameplate-tile.c +++ b/libslab/nameplate-tile.c @@ -36,7 +36,6 @@ typedef struct GtkContainer *image_ctnr; GtkContainer *header_ctnr; GtkContainer *subheader_ctnr; - GtkTooltips *tooltips; } NameplateTilePrivate; #define NAMEPLATE_TILE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NAMEPLATE_TILE_TYPE, NameplateTilePrivate)) @@ -100,7 +99,6 @@ nameplate_tile_class_init (NameplateTileClass * this_class) static void nameplate_tile_init (NameplateTile * this) { - NAMEPLATE_TILE_GET_PRIVATE (this)->tooltips = NULL; } static GObject * @@ -117,6 +115,12 @@ nameplate_tile_constructor (GType type, guint n_param, GObjectConstructParam * p static void nameplate_tile_finalize (GObject * g_object) { + NameplateTile *np_tile; + NameplateTilePrivate *priv; + + np_tile = NAMEPLATE_TILE (g_object); + priv = NAMEPLATE_TILE_GET_PRIVATE (np_tile); + (*G_OBJECT_CLASS (nameplate_tile_parent_class)->finalize) (g_object); } @@ -124,7 +128,7 @@ static void nameplate_tile_get_property (GObject * g_object, guint prop_id, GValue * value, GParamSpec * param_spec) { - GtkTooltipsData *tooltip; + char *tooltip; NameplateTile *np_tile = NAMEPLATE_TILE (g_object); switch (prop_id) @@ -141,8 +145,9 @@ nameplate_tile_get_property (GObject * g_object, guint prop_id, GValue * value, g_value_set_object (value, np_tile->subheader); break; case PROP_NAMEPLATE_TOOLTIP: - tooltip = gtk_tooltips_data_get (GTK_WIDGET (np_tile)); - g_value_set_string (value, tooltip ? tooltip->tip_text : NULL); + tooltip = gtk_widget_get_tooltip_text (GTK_WIDGET (np_tile)); + g_value_set_string (value, tooltip); + g_free (tooltip); break; default: @@ -229,17 +234,7 @@ nameplate_tile_set_property (GObject * g_object, guint prop_id, const GValue * v break; case PROP_NAMEPLATE_TOOLTIP: - if (tooltip) { - if (! priv->tooltips) - priv->tooltips = gtk_tooltips_new (); - - gtk_tooltips_set_tip (priv->tooltips, GTK_WIDGET(this), tooltip, tooltip); - gtk_tooltips_enable(priv->tooltips); - } - else - if (priv->tooltips) - gtk_tooltips_disable(priv->tooltips); - + gtk_widget_set_tooltip_text (GTK_WIDGET (this), tooltip); break; diff --git a/libslab/tile.c b/libslab/tile.c index 0505c36..870944d 100644 --- a/libslab/tile.c +++ b/libslab/tile.c @@ -209,7 +209,7 @@ tile_finalize (GObject * g_object) if (tile->uri) g_free (tile->uri); if (tile->context_menu) - gtk_object_sink (GTK_OBJECT (tile->context_menu)); + gtk_widget_destroy (GTK_WIDGET (tile->context_menu)); g_object_unref (priv->double_click_detector); @@ -240,17 +240,34 @@ tile_get_property (GObject * g_obj, guint prop_id, GValue * value, GParamSpec * static void tile_set_property (GObject * g_obj, guint prop_id, const GValue * value, GParamSpec * param_spec) { + Tile *tile; + GtkMenu *menu; + if (!IS_TILE (g_obj)) return; + tile = TILE (g_obj); + switch (prop_id) { case PROP_TILE_URI: - TILE (g_obj)->uri = g_strdup (g_value_get_string (value)); + tile->uri = g_strdup (g_value_get_string (value)); break; case PROP_TILE_CONTEXT_MENU: - TILE (g_obj)->context_menu = g_value_get_object (value); + menu = g_value_get_object (value); + + if (menu == tile->context_menu) + break; + + if (tile->context_menu) + gtk_menu_detach (tile->context_menu); + + tile->context_menu = menu; + + if (tile->context_menu) + gtk_menu_attach_to_widget (tile->context_menu, GTK_WIDGET (tile), NULL); + break; default: diff --git a/main-menu/src/main-menu-ui.c b/main-menu/src/main-menu-ui.c index d212eef..0b0248c 100644 --- a/main-menu/src/main-menu-ui.c +++ b/main-menu/src/main-menu-ui.c @@ -1001,6 +1001,7 @@ setup_recently_used_store_monitor (MainMenuUI *this, gboolean is_startup) path = get_recently_used_store_filename (); file = g_file_new_for_path (path); + g_free (path); monitor = g_file_monitor_file (file, 0, NULL, NULL); if (monitor) { @@ -1011,6 +1012,8 @@ setup_recently_used_store_monitor (MainMenuUI *this, gboolean is_startup) this); } + g_object_unref (file); + priv->recently_used_store_monitor = monitor; if (priv->recently_used_timeout_id != 0) diff --git a/main-menu/src/tile-table.c b/main-menu/src/tile-table.c index 5b368e6..cbb6bdd 100644 --- a/main-menu/src/tile-table.c +++ b/main-menu/src/tile-table.c @@ -30,6 +30,7 @@ typedef struct { BookmarkAgent *agent; GList *tiles; + GtkSizeGroup *icon_size_group; GtkBin **bins; gint n_bins; @@ -119,8 +120,6 @@ tile_table_reload (TileTable *this) GtkWidget *tile; gint n_tiles; - GtkSizeGroup *icon_size_group; - GList *node; gint i; @@ -144,7 +143,8 @@ tile_table_reload (TileTable *this) priv->tiles = NULL; - icon_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + if (!priv->icon_size_group) + priv->icon_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); for (node = tiles; node; node = node->next) { tile = GTK_WIDGET (node->data); @@ -161,7 +161,7 @@ tile_table_reload (TileTable *this) priv->tiles = g_list_append (priv->tiles, tile); if (IS_NAMEPLATE_TILE (tile)) - gtk_size_group_add_widget (icon_size_group, NAMEPLATE_TILE (tile)->image); + gtk_size_group_add_widget (priv->icon_size_group, NAMEPLATE_TILE (tile)->image); } g_list_free (tiles); @@ -343,6 +343,9 @@ finalize (GObject *g_obj) { TileTablePrivate *priv = PRIVATE (g_obj); + if (priv->icon_size_group) + g_object_unref (priv->icon_size_group); + g_free (priv->bins); G_OBJECT_CLASS (tile_table_parent_class)->finalize (g_obj);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor