From 8a7ab24a48a337a55b9054d2baf1d04f60df61b5 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sun, 24 Aug 2008 14:23:23 +0000 Subject: [PATCH] Remove the idle function for setting the document up when the window is 2008-08-24 Carlos Garcia Campos * shell/ev-window.c: (ev_window_setup_document), (ev_window_set_document), (ev_window_dispose): Remove the idle function for setting the document up when the window is destroyed. Fixes bug #549163. svn path=/trunk/; revision=3117 --- ChangeLog | 8 ++++++++ shell/ev-window.c | 12 +++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 12b07fe1..d5d63022 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-08-24 Carlos Garcia Campos + + * shell/ev-window.c: (ev_window_setup_document), + (ev_window_set_document), (ev_window_dispose): + + Remove the idle function for setting the document up when the + window is destroyed. Fixes bug #549163. + 2008-08-22 Carlos Garcia Campos * shell/ev-jobs.[ch]: (ev_job_attachments_init), diff --git a/shell/ev-window.c b/shell/ev-window.c index 02932295..7b5a7705 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -166,6 +166,7 @@ struct _EvWindowPrivate { gboolean unlink_temp_file; gboolean in_reload; EvFileMonitor *monitor; + guint setup_document_idle; EvDocument *document; EvHistory *history; @@ -1138,6 +1139,8 @@ ev_window_setup_document (EvWindow *ev_window) EvDocument *document = ev_window->priv->document; EvSidebar *sidebar = EV_SIDEBAR (ev_window->priv->sidebar); GtkAction *action; + + ev_window->priv->setup_document_idle = 0; if (EV_IS_DOCUMENT_FIND (document)) { g_signal_connect_object (G_OBJECT (document), @@ -1203,7 +1206,9 @@ ev_window_set_document (EvWindow *ev_window, EvDocument *document) _("The document contains no pages")); } - g_idle_add ((GSourceFunc)ev_window_setup_document, ev_window); + if (ev_window->priv->setup_document_idle > 0) + g_source_remove (ev_window->priv->setup_document_idle); + ev_window->priv->setup_document_idle = g_idle_add ((GSourceFunc)ev_window_setup_document, ev_window); } static void @@ -4168,6 +4173,11 @@ ev_window_dispose (GObject *object) } #endif /* ENABLE_DBUS */ + if (priv->setup_document_idle > 0) { + g_source_remove (priv->setup_document_idle); + priv->setup_document_idle = 0; + } + if (priv->monitor) { g_object_unref (priv->monitor); priv->monitor = NULL; -- 2.43.5