summaryrefslogtreecommitdiff
path: root/src/file-manager/fm-directory-view.c
diff options
context:
space:
mode:
authorMichael Meeks <michael@ximian.com>2002-05-22 11:41:54 +0000
committerMichael Meeks <michael@src.gnome.org>2002-05-22 11:41:54 +0000
commit9adec15ca22c2059d669763b6f229b94da3eca23 (patch)
treece5dcc4ab58be332a4a790a446f349ffc27e9019 /src/file-manager/fm-directory-view.c
parent4a1ebc6bda4c094d5c72b187cdb6bc7f39a8639a (diff)
downloadnautilus-9adec15ca22c2059d669763b6f229b94da3eca23.tar.gz
hold a ref during the duration of the call, to guard against re-enterancy
2002-05-22 Michael Meeks <michael@ximian.com> * src/file-manager/fm-directory-view.c (display_selection_info_idle_callback): hold a ref during the duration of the call, to guard against re-enterancy related sudden death #72991 (display_pending_timeout_callback), (update_menus_timeout_callback), (display_pending_idle_callback): ditto for good measure.
Diffstat (limited to 'src/file-manager/fm-directory-view.c')
-rw-r--r--src/file-manager/fm-directory-view.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c
index 227f58a5e..a9dba407b 100644
--- a/src/file-manager/fm-directory-view.c
+++ b/src/file-manager/fm-directory-view.c
@@ -2139,12 +2139,16 @@ display_selection_info_idle_callback (gpointer data)
view = FM_DIRECTORY_VIEW (data);
+ g_object_ref (G_OBJECT (view));
+
view->details->display_selection_idle_id = 0;
fm_directory_view_display_selection_info (view);
if (view->details->send_selection_change_to_shell) {
fm_directory_view_send_selection_change (view);
}
+ g_object_unref (G_OBJECT (view));
+
return FALSE;
}
@@ -2175,25 +2179,37 @@ update_menus_timeout_callback (gpointer data)
view = FM_DIRECTORY_VIEW (data);
+ g_object_ref (G_OBJECT (view));
+
view->details->update_menus_timeout_id = 0;
fm_directory_view_update_menus (view);
+ g_object_unref (G_OBJECT (view));
+
return FALSE;
}
static gboolean
display_pending_idle_callback (gpointer data)
{
+ gboolean ret;
FMDirectoryView *view;
view = FM_DIRECTORY_VIEW (data);
+ g_object_ref (G_OBJECT (view));
+
if (display_pending_files (view)) {
- return TRUE;
+ ret = TRUE;
+ } else {
+ ret = FALSE;
}
view->details->display_pending_idle_id = 0;
- return FALSE;
+
+ g_object_unref (G_OBJECT (view));
+
+ return ret;
}
static gboolean
@@ -2203,6 +2219,8 @@ display_pending_timeout_callback (gpointer data)
view = FM_DIRECTORY_VIEW (data);
+ g_object_ref (G_OBJECT (view));
+
view->details->display_pending_timeout_id = 0;
/* If we have more files to do, use an idle, not another timeout. */
@@ -2210,6 +2228,8 @@ display_pending_timeout_callback (gpointer data)
schedule_idle_display_of_pending_files (view);
}
+ g_object_unref (G_OBJECT (view));
+
return FALSE;
}