diff options
author | Michael Meeks <michael@ximian.com> | 2002-05-22 11:41:54 +0000 |
---|---|---|
committer | Michael Meeks <michael@src.gnome.org> | 2002-05-22 11:41:54 +0000 |
commit | 9adec15ca22c2059d669763b6f229b94da3eca23 (patch) | |
tree | ce5dcc4ab58be332a4a790a446f349ffc27e9019 /src/file-manager/fm-directory-view.c | |
parent | 4a1ebc6bda4c094d5c72b187cdb6bc7f39a8639a (diff) | |
download | nautilus-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.c | 24 |
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; } |