Ashish Shrivastava <shashish@novell.com> ** Fix for bug #391936 (bugzilla.novell...
authorSuman Manjunath <msuman@src.gnome.org>
Mon, 25 Aug 2008 09:41:01 +0000 (09:41 +0000)
committerSuman Manjunath <msuman@src.gnome.org>
Mon, 25 Aug 2008 09:41:01 +0000 (09:41 +0000)
svn path=/trunk/; revision=9433

addressbook/ChangeLog
addressbook/libebook/e-book.c

index 7c4637b..d2f5777 100644 (file)
@@ -1,3 +1,10 @@
+2008-08-25  Ashish Shrivastava  <shashish@novell.com>
+
+       ** Fix for bug #391936 (bugzilla.novell.com)
+
+       * libebook/e-book.c (find_key_value), (backend_died_cb): 
+         To solve hang issue after e-d-s crash.
+
 2008-08-21  Shuai Liu  <shuai.liu@sun.com>
 
        ** Fix for bug #548565
@@ -13,7 +20,7 @@
        (e_contact_find_attribute_with_types): Check complete list of
        values in a parameter when looking for some particular value.
 
-2008-08-16  Jörgen Scheibengruber  <mfcn@gmx.de>
+2008-08-16  Jörgen Scheibengruber  <mfcn@gmx.de>
 
        (google_book_construct_base_uri):
        * backends/google/util.c (_add_type_param_from_google_rel):
index a537d3b..7611540 100644 (file)
@@ -3115,6 +3115,25 @@ e_book_unload_uri (EBook   *book,
 
 \f
 
+
+/* Set a flag for operation from the operation hash table */
+static void
+find_key_value (gpointer key, gpointer value, gpointer data)
+{
+       EBookOp *op;
+
+       op = value;
+
+       if (op == NULL) {
+               g_warning ("find_key_value: Cannot find operation ");
+               return;
+       }
+
+       op->status = E_BOOK_ERROR_SOURCE_NOT_LOADED;
+       if (op->synchronous)
+               e_flag_set (op->flag);
+}
+
 /**
  * e_book_load_uri:
  */
@@ -3122,7 +3141,13 @@ e_book_unload_uri (EBook   *book,
 static void
 backend_died_cb (EComponentListener *cl, gpointer user_data)
 {
-       EBook *book = user_data;
+       EBook *book = (EBook *)user_data;
+       
+       d(printf ("backend_died_cb\n"));        
+
+       g_mutex_lock (book->priv->mutex);
+       g_hash_table_foreach (book->priv->id_to_op, find_key_value, NULL);
+       g_mutex_unlock (book->priv->mutex);
 
        book->priv->load_state = E_BOOK_SOURCE_NOT_LOADED;
         g_signal_emit (book, e_book_signals [BACKEND_DIED], 0);