[balsa/gtk3] Make call thread-safe



commit cd74b8e48ca70d46b94d2f1e81dd53a47d7f1342
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Wed Feb 20 21:32:41 2013 -0500

    Make call thread-safe
    
        * src/balsa-app.c (balsa_find_url): thread-safe.

 ChangeLog       |    4 ++++
 src/balsa-app.c |   13 +++++++++----
 2 files changed, 13 insertions(+), 4 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 7b85cb6..22dc04a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2013-02-20  Peter Bloomfield
 
+       * src/balsa-app.c (balsa_find_url): thread-safe.
+
+2013-02-20  Peter Bloomfield
+
        * libbalsa/send.c (balsa_send_message_real_idle_cb),
        (balsa_send_message_real): close outbox in an idle callback.
 
diff --git a/src/balsa-app.c b/src/balsa-app.c
index 828f27b..0769953 100644
--- a/src/balsa-app.c
+++ b/src/balsa-app.c
@@ -720,16 +720,21 @@ balsa_find_url(const gchar * url)
 {
     BalsaFind bf;
 
-    gdk_threads_enter();
-
     bf.data = url;
     bf.mbnode = NULL;
+
     if (balsa_app.mblist_tree_store)
+        g_object_ref(balsa_app.mblist_tree_store);
+    /*
+     * Check again, in case the main thread managed to finalize
+     * balsa_app.mblist_tree_store between the check and the object-ref.
+     */
+    if (balsa_app.mblist_tree_store) {
         gtk_tree_model_foreach(GTK_TREE_MODEL(balsa_app.mblist_tree_store),
                                (GtkTreeModelForeachFunc) find_url,
                                &bf);
-
-    gdk_threads_leave();
+        g_object_unref(balsa_app.mblist_tree_store);
+    }
 
     return bf.mbnode;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]