From: Jose Dapena Paz Date: Mon, 14 Sep 2009 14:58:26 +0000 (+0200) Subject: Sync headers in ModestHeaderWindow dispose instead of finalize. X-Git-Tag: 3.0.17-rc55~3 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=11d0b1ecfdd84c1711e11ed3384536a3aa0c9edf 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). --- 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);