Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-06-19 13:10:20 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-06-19 13:10:20 (GMT)
commitbb5ea194600d5ae09b18a147420f4fc42c0808df (patch)
tree7f0390be29773a1159e75b4456a79ecb361281ac /shell
parentc7c3efc21f970868c633bc87b03259b9a7178eff (diff)
Fix memory leak
* cut-n-paste/recent-files/egg-recent-view-gtk.c: (egg_recent_view_gtk_finalize): Fix memory leak * cut-n-paste/toolbar-editor/Makefile.am: Fix location of cursor icon. * pdf/ev-poppler.cc: * shell/ev-page-action.c: (build_new_tree_cb), (match_selected_cb), (display_completion_text), (match_completion): * shell/ev-sidebar-links.c: (ev_sidebar_links_dispose), (selection_changed_callback), (create_loading_model), (print_section_cb), (links_page_num_func), (update_page_callback_foreach): * shell/ev-window.c: (ev_window_dispose): Small memory fixes. Links model now store objects instead of pointers to improve memory management.
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-page-action.c10
-rw-r--r--shell/ev-sidebar-links.c24
-rw-r--r--shell/ev-window.c6
3 files changed, 38 insertions, 2 deletions
diff --git a/shell/ev-page-action.c b/shell/ev-page-action.c
index ee4802a..7975c8a 100644
--- a/shell/ev-page-action.c
+++ b/shell/ev-page-action.c
@@ -306,6 +306,9 @@ build_new_tree_cb (GtkTreeModel *model,
-1);
}
+ if (link)
+ g_object_unref (link);
+
return FALSE;
}
@@ -346,6 +349,9 @@ match_selected_cb (GtkEntryCompletion *completion,
g_signal_emit (proxy, widget_signals[WIDGET_ACTIVATE_LINK], 0, link);
+ if (link)
+ g_object_unref (link);
+
gtk_tree_iter_free (iter);
return TRUE;
@@ -370,6 +376,9 @@ display_completion_text (GtkCellLayout *cell_layout,
-1);
g_object_set (renderer, "text", ev_link_get_title (link), NULL);
+
+ if (link)
+ g_object_unref (link);
gtk_tree_iter_free (iter);
}
@@ -395,6 +404,7 @@ match_completion (GtkEntryCompletion *completion,
if (link) {
text = ev_link_get_title (link);
+ g_object_unref (link);
}
gtk_tree_iter_free (iter);
diff --git a/shell/ev-sidebar-links.c b/shell/ev-sidebar-links.c
index 6573f80..55f2ddb 100644
--- a/shell/ev-sidebar-links.c
+++ b/shell/ev-sidebar-links.c
@@ -151,6 +151,11 @@ ev_sidebar_links_dispose (GObject *object)
sidebar->priv->job = NULL;
}
+ if (sidebar->priv->model) {
+ g_object_unref (sidebar->priv->model);
+ sidebar->priv->model = NULL;
+ }
+
if (sidebar->priv->document) {
g_object_unref (sidebar->priv->document);
sidebar->priv->document = NULL;
@@ -215,6 +220,8 @@ selection_changed_callback (GtkTreeSelection *selection,
ev_page_cache_set_link (ev_sidebar_links->priv->page_cache, link);
g_signal_handler_unblock (ev_sidebar_links->priv->page_cache,
ev_sidebar_links->priv->page_changed_id);
+
+ g_object_unref (link);
}
}
@@ -228,7 +235,7 @@ create_loading_model (void)
/* Creates a fake model to indicate that we're loading */
retval = (GtkTreeModel *)gtk_list_store_new (EV_DOCUMENT_LINKS_COLUMN_NUM_COLUMNS,
G_TYPE_STRING,
- G_TYPE_POINTER,
+ G_TYPE_OBJECT,
G_TYPE_BOOLEAN);
gtk_list_store_append (GTK_LIST_STORE (retval), &iter);
@@ -263,11 +270,17 @@ print_section_cb (GtkWidget *menuitem, EvSidebarLinks *sidebar)
-1);
first_page = ev_link_get_page (link) + 1;
+ if (link)
+ g_object_unref (link);
+
if (gtk_tree_model_iter_next (model, &iter)) {
gtk_tree_model_get (model, &iter,
EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
-1);
last_page = ev_link_get_page (link);
+
+ if (link)
+ g_object_unref (link);
} else {
last_page = -1;
}
@@ -440,6 +453,9 @@ links_page_num_func (GtkTreeViewColumn *tree_column,
"visible", FALSE,
NULL);
}
+
+ if (link)
+ g_object_unref (link);
}
/* Public Functions */
@@ -477,10 +493,14 @@ update_page_callback_foreach (GtkTreeModel *model,
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sidebar_links->priv->tree_view));
gtk_tree_selection_select_path (selection, path);
-
+
+ g_object_unref (link);
return TRUE;
}
}
+
+ if (link)
+ g_object_unref (link);
return FALSE;
}
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 693e069..81e4f31 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -2417,6 +2417,12 @@ ev_window_dispose (GObject *object)
priv->recent_model = NULL;
}
+ if (priv->recent_view) {
+ g_object_unref (priv->recent_view);
+ priv->recent_view = NULL;
+ }
+
+
if (priv->ui_manager) {
g_object_unref (priv->ui_manager);
priv->ui_manager = NULL;