[Goodies-commits] r3375 - ristretto/trunk/src
Stephan Arts
stephan at xfce.org
Sun Oct 14 09:45:00 CEST 2007
Author: stephan
Date: 2007-10-14 07:45:00 +0000 (Sun, 14 Oct 2007)
New Revision: 3375
Modified:
ristretto/trunk/src/main.c
ristretto/trunk/src/main_window.c
ristretto/trunk/src/navigator.c
ristretto/trunk/src/picture_viewer.c
Log:
Fix memory leaks and segfault
Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c 2007-10-13 23:27:28 UTC (rev 3374)
+++ ristretto/trunk/src/main.c 2007-10-14 07:45:00 UTC (rev 3375)
@@ -128,6 +128,7 @@
g_free(path_name);
filename = g_dir_read_name(dir);
}
+ g_dir_close(dir);
g_free(path_string);
}
else
@@ -155,6 +156,7 @@
filename = g_dir_read_name(dir);
}
rstto_navigator_jump_first(navigator);
+ g_dir_close(dir);
}
gchar *uri = thunar_vfs_path_dup_uri(info->path);
gtk_recent_manager_add_item(recent_manager, uri);
Modified: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c 2007-10-13 23:27:28 UTC (rev 3374)
+++ ristretto/trunk/src/main_window.c 2007-10-14 07:45:00 UTC (rev 3375)
@@ -190,6 +190,8 @@
rstto_main_window_init(RsttoMainWindow *);
static void
rstto_main_window_class_init(RsttoMainWindowClass *);
+static void
+rstto_main_window_dispose(GObject *object);
static GtkWidgetClass *parent_class = NULL;
@@ -554,9 +556,24 @@
static void
rstto_main_window_class_init(RsttoMainWindowClass *window_class)
{
+ GObjectClass *object_class = (GObjectClass*)window_class;
parent_class = g_type_class_peek_parent(window_class);
+
+ object_class->dispose = rstto_main_window_dispose;
}
+static void
+rstto_main_window_dispose(GObject *object)
+{
+ RsttoMainWindow *window = RSTTO_MAIN_WINDOW(object);
+ if (window->priv->navigator)
+ {
+ g_object_unref(window->priv->navigator);
+ window->priv->navigator = NULL;
+ }
+ G_OBJECT_CLASS (parent_class)->dispose(object);
+}
+
static gboolean
rstto_main_window_clear_recent(RsttoMainWindow *window)
{
@@ -966,9 +983,8 @@
gchar *uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
gtk_recent_manager_add_item(window->priv->manager, uri);
g_free(uri);
-
+ g_dir_close(dir);
}
-
}
gtk_widget_destroy(dialog);
}
Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c 2007-10-13 23:27:28 UTC (rev 3374)
+++ ristretto/trunk/src/navigator.c 2007-10-14 07:45:00 UTC (rev 3375)
@@ -575,11 +575,13 @@
{
if(nav_entry->thumb)
{
- g_object_unref(nav_entry->thumb);
+ gdk_pixbuf_unref(nav_entry->thumb);
+ nav_entry->thumb = NULL;
}
if(nav_entry->exif_data)
{
exif_data_free(nav_entry->exif_data);
+ nav_entry->exif_data = NULL;
}
thunar_vfs_info_unref(nav_entry->info);
g_free(nav_entry);
Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c 2007-10-13 23:27:28 UTC (rev 3374)
+++ ristretto/trunk/src/picture_viewer.c 2007-10-14 07:45:00 UTC (rev 3375)
@@ -512,6 +512,13 @@
gboolean vadjustment_changed = FALSE;
gboolean hadjustment_changed = FALSE;
+
+ if (viewer->priv->src_pixbuf != NULL && entry == NULL)
+ {
+ gdk_pixbuf_unref(viewer->priv->src_pixbuf);
+ viewer->priv->src_pixbuf = NULL;
+ }
+
if(viewer->priv->src_pixbuf)
{
gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->priv->src_pixbuf);
@@ -655,6 +662,12 @@
{
if(gdk_pixbuf_animation_iter_advance(viewer->priv->iter, NULL))
{
+ /* Cleanup old image */
+ if (viewer->priv->src_pixbuf)
+ {
+ gdk_pixbuf_unref(viewer->priv->src_pixbuf);
+ viewer->priv->src_pixbuf = NULL;
+ }
RsttoNavigatorEntry *entry = rstto_navigator_get_file(viewer->priv->navigator);
if (entry)
@@ -712,6 +725,10 @@
g_signal_handlers_disconnect_by_func(viewer->priv->loader , cb_rstto_picture_viewer_area_updated, viewer);
gdk_pixbuf_loader_close(viewer->priv->loader, NULL);
g_object_unref(viewer->priv->loader);
+ if (viewer->priv->iter)
+ {
+ viewer->priv->iter = NULL;
+ }
if(viewer->priv->animation)
{
g_object_unref(viewer->priv->animation);
@@ -722,10 +739,6 @@
gdk_pixbuf_unref(viewer->priv->src_pixbuf);
viewer->priv->src_pixbuf = NULL;
}
- if (viewer->priv->iter)
- {
- viewer->priv->iter = NULL;
- }
}
viewer->priv->loader = gdk_pixbuf_loader_new();
More information about the Goodies-commits
mailing list