Crash after folder update
- From: Florian Boor <florian boor kernelconcepts de>
- To: tinymail-devel-list gnome org
- Subject: Crash after folder update
- Date: Wed, 14 Jun 2006 16:56:52 +0200
Hi,
i tried to write some code to update all subscribed folders. It turned out that
the application crashes after calling tny_store_account_iface_get_folders()
whenever you change the currently displayed folder.
The attached patch against #525 can be used to reproduce this behaviour. Maybe
i'm just doing something wrong, but it looks pretty easy...
Greetings
Florian
--
The dream of yesterday Florian Boor
is the hope of today Tel: +49 271-771091-14
and the reality of tomorrow. Fax: +49 271-771091-19
[Robert Hutchings Goddard, 1904] florian boor kernelconcepts de
1D78 2D4D 6C53 1CA4 5588 D07B A8E7 940C 25B7 9A76
Index: tinymail/tny-summary-window.c
===================================================================
--- tinymail/tny-summary-window.c (Revision 525)
+++ tinymail/tny-summary-window.c (Arbeitskopie)
@@ -532,6 +532,46 @@
return self;
}
+void
+update_folders (GtkWidget *btn, gpointer udata)
+{
+ TnySummaryWindow *win = udata;
+ const TnyListIface* folders;
+ TnyIteratorIface* ifolders;
+ const TnyMsgFolderIface *cur_folder;
+ TnySummaryWindowPriv *priv = TNY_SUMMARY_WINDOW_GET_PRIVATE (win);
+ const GList *store_accounts;
+ const GList *iter;
+
+
+ store_accounts =
+ tny_account_store_iface_get_store_accounts (priv->account_store);
+
+ for (iter = store_accounts; iter; iter = iter->next) {
+ TnyStoreAccountIface *storage_account = iter->data;
+ const TnyListIface* l_folders;
+ TnyIteratorIface* ifolders;
+ const TnyMsgFolderIface *cur_folder;
+ l_folders = tny_store_account_iface_get_folders (storage_account,
+ TNY_STORE_ACCOUNT_FOLDER_TYPE_SUBSCRIBED);
+
+/* ifolders = tny_list_iface_create_iterator (l_folders);
+
+ for (cur_folder = TNY_MSG_FOLDER_IFACE(tny_iterator_iface_first (ifolders));
+ tny_iterator_iface_has_next (ifolders);
+ tny_iterator_iface_next (ifolders)) {
+
+ cur_folder = TNY_MSG_FOLDER_IFACE(tny_iterator_iface_current (ifolders));
+ tny_msg_folder_iface_refresh (cur_folder);
+ }
+
+ g_object_unref (ifolders);
+
+*/ }
+
+}
+
+
static void
tny_summary_window_instance_init (GTypeInstance *instance, gpointer g_class)
{
@@ -550,6 +590,7 @@
GtkWidget *hpaned1;
GtkWidget *vpaned1;
GtkWidget *vbox;
+ GtkWidget *bupdate;
/* TODO: Persist application UI status (of the panes) */
@@ -564,20 +605,22 @@
hpaned1 = gtk_hpaned_new ();
gtk_widget_show (hpaned1);
vbox = gtk_vbox_new (FALSE, 2);
+ bupdate = gtk_button_new_with_label ("Update");
priv->status = GTK_WIDGET (gtk_statusbar_new ());
priv->progress = gtk_progress_bar_new ();
priv->status_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (priv->status), "default");
gtk_box_pack_start (GTK_BOX (priv->status), priv->progress, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->status), priv->online_button, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (priv->status), bupdate, FALSE, FALSE, 0);
gtk_widget_show (priv->online_button);
gtk_widget_show (priv->status);
- gtk_widget_show (vbox);
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hpaned1), TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (priv->status), FALSE, TRUE, 0);
+ gtk_widget_show_all (vbox);
vpaned1 = gtk_vpaned_new ();
gtk_widget_show (vpaned1);
@@ -702,6 +745,8 @@
g_signal_connect (G_OBJECT (select), "changed",
G_CALLBACK (on_header_view_tree_selection_changed), self);
+ g_signal_connect (G_OBJECT (bupdate), "clicked",
+ G_CALLBACK (update_folders), self);
/* TODO: Persist application UI status */
gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]