[evolution-patches] patch for addressbook bug #58639
- From: Chris Toshok <toshok ximian com>
- To: evolution-patches ximian com
- Subject: [evolution-patches] patch for addressbook bug #58639
- Date: Mon, 12 Jul 2004 12:01:05 -0700
problem here is the pending_mutex isn't recursive, and we were calling
e_data_book_view_notify_remove (which locks the mutex) from
e_data_book_view_notify_update (which already held the lock). Fix is to
call the already-locked version (notify_remove).
The e-book-view-listener change is partially for performance (there's no
reason to do two more round trips to update the refcount -- that I can
see, someone can argue with me if they want :) Also, once I fixed the
mutex problem, the release_unref call was hanging. Now everything is
working (and it's a little faster too when doing searches).
Chris
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/addressbook/ChangeLog,v
retrieving revision 1.174
diff -u -r1.174 ChangeLog
--- ChangeLog 12 Jul 2004 18:21:48 -0000 1.174
+++ ChangeLog 12 Jul 2004 18:55:48 -0000
@@ -1,3 +1,16 @@
+2004-07-12 Chris Toshok <toshok ximian com>
+
+ [ fixes #58639 ]
+
+ * libebook/e-book-listener.c (impl_BookListener_respond_get_view):
+ no need to wrap the g_signal_emit with dup_ref/release_unref. the
+ construct for EBookView does a dup_ref of its own.
+
+ * libedata-book/e-data-book-view.c
+ (e_data_book_view_notify_update): don't call
+ e_data_book_view_notify_remove when the pending_mutex is already
+ called. call notify_remove directly.
+
2004-07-09 Chris Toshok <toshok ximian com>
[ part of fix for #56520 ]
Index: libebook/e-book-listener.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/addressbook/libebook/e-book-listener.c,v
retrieving revision 1.10
diff -u -r1.10 e-book-listener.c
--- libebook/e-book-listener.c 17 Jun 2004 21:44:46 -0000 1.10
+++ libebook/e-book-listener.c 12 Jul 2004 18:55:49 -0000
@@ -181,11 +181,9 @@
response.op = GetBookViewResponse;
response.opid = opid;
response.status = e_book_listener_convert_status (status);
- response.book_view = bonobo_object_dup_ref (book_view, ev);
+ response.book_view = book_view;
g_signal_emit (listener, e_book_listener_signals [RESPONSE], 0, &response);
-
- bonobo_object_release_unref (response.book_view, ev);
}
static void
Index: libedata-book/e-data-book-view.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/addressbook/libedata-book/e-data-book-view.c,v
retrieving revision 1.9
diff -u -r1.9 e-data-book-view.c
--- libedata-book/e-data-book-view.c 22 Jun 2004 18:52:03 -0000 1.9
+++ libedata-book/e-data-book-view.c 12 Jul 2004 18:55:49 -0000
@@ -256,7 +256,7 @@
g_free (vcard);
} else {
if (currently_in_view)
- e_data_book_view_notify_remove (book_view, id);
+ notify_remove (book_view, id);
/* else nothing; we're removing a card that wasn't there */
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]