From 11d0b1ecfdd84c1711e11ed3384536a3aa0c9edf Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Mon, 14 Sep 2009 16:58:26 +0200 Subject: [PATCH] Sync headers in ModestHeaderWindow dispose instead of finalize. * src/hildon2/modest-header-window.c: sync header changes on dispose of header window instead of finalize, as now, the folder in header view is unreferenced in dispose stage, and then sync was not working (fixes NB#138247). --- src/hildon2/modest-header-window.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/hildon2/modest-header-window.c b/src/hildon2/modest-header-window.c index 9abe2b0..6490842 100644 --- a/src/hildon2/modest-header-window.c +++ b/src/hildon2/modest-header-window.c @@ -113,6 +113,7 @@ struct _ModestHeaderWindowPrivate { static void modest_header_window_class_init (ModestHeaderWindowClass *klass); static void modest_header_window_init (ModestHeaderWindow *obj); static void modest_header_window_finalize (GObject *obj); +static void modest_header_window_dispose (GObject *obj); static void connect_signals (ModestHeaderWindow *self); static void modest_header_window_disconnect_signals (ModestWindow *self); @@ -225,6 +226,7 @@ modest_header_window_class_init (ModestHeaderWindowClass *klass) parent_class = g_type_class_peek_parent (klass); gobject_class->finalize = modest_header_window_finalize; + gobject_class->dispose = modest_header_window_dispose; g_type_class_add_private (gobject_class, sizeof(ModestHeaderWindowPrivate)); @@ -266,13 +268,29 @@ modest_header_window_init (ModestHeaderWindow *obj) } static void -modest_header_window_finalize (GObject *obj) +modest_header_window_dispose (GObject *obj) { ModestHeaderWindowPrivate *priv; TnyFolder *folder; priv = MODEST_HEADER_WINDOW_GET_PRIVATE(obj); + folder = modest_header_view_get_folder ((ModestHeaderView *) priv->header_view); + if (folder) { + tny_folder_sync_async (folder, FALSE, NULL, NULL, NULL); + g_object_unref (folder); + } + + G_OBJECT_CLASS(parent_class)->dispose (obj); +} + +static void +modest_header_window_finalize (GObject *obj) +{ + ModestHeaderWindowPrivate *priv; + + priv = MODEST_HEADER_WINDOW_GET_PRIVATE(obj); + if (priv->model_weak_ref) { g_object_weak_unref ((GObject *) priv->model_weak_ref, on_header_view_model_destroyed, @@ -285,12 +303,6 @@ modest_header_window_finalize (GObject *obj) on_header_view_model_destroyed (obj, (GObject *) priv->model_weak_ref); } - folder = modest_header_view_get_folder ((ModestHeaderView *) priv->header_view); - if (folder) { - tny_folder_sync_async (folder, FALSE, NULL, NULL, NULL); - g_object_unref (folder); - } - modest_header_window_disconnect_signals (MODEST_WINDOW (obj)); g_object_unref (priv->header_view); -- 1.7.9.5