From cbfab681c1576d4de27d48fbd6b4b7780670494a Mon Sep 17 00:00:00 2001 From: Chris Toshok Date: Wed, 22 Oct 2003 20:50:36 +0000 Subject: use the synchronous api for this. simplifies it a bunch. 2003-10-21 Chris Toshok * tools/evolution-addressbook-abuse.c: use the synchronous api for this. simplifies it a bunch. 2003-10-21 Chris Toshok * backend/pas/pas-book.c (impl_GNOME_Evolution_Addressbook_Book_remove): we can ill afford bad debug spew. (view_listener_died_cb): implement. (impl_GNOME_Evolution_Addressbook_Book_getBookView): hook up an ORBit_small connection listener on the view's listener. (pas_book_respond_create): use e_contact_get_const instead of e_contact_get here. fixes a leak. * backend/pas/pas-book-view.c (impl_GNOME_Evolution_Addressbook_BookView_stop): implement, call pas_backend_stop_book_view. (pas_book_view_get_listener): return the book view's listener. (pas_book_view_class_init): fill in epv->stop. (pas_book_view_init): use a #define for THRESHOLD_MAX instead of the constant. * backend/pas/pas-book-view.h: add prototype for pas_book_view_get_listener. * backend/pas/pas-backend.c (pas_backend_stop_book_view): implement. (pas_backend_remove_book_view): implement. * backend/pas/pas-backend.h: add prototype for stop_book_view and remove_book_view. * backend/pas/pas-backend-vcf.c (load_file): pass in the fd and use fdopen here. (foreach_build_list): don't creat EContacts here, because we'll just be converting them back to vcards anyway. (save_file): use char*'s instead of EContacts, and split entries with 2 blank lines. Also, hold the lock over the entire function. (do_create): hold the lock around uid generation and touching the hash table. (pas_backend_vcf_process_remove_contacts): same. (pas_backend_vcf_process_modify_contact): same. (pas_backend_vcf_stop_book_view): new function, but leave unimplemented for now. (pas_backend_vcf_load_uri): the uri contains the directory name, not the filename. (pas_backend_vcf_dispose): grab the lock here just for sanity's sake. Also reorder things a bit, and free the hashtable and mutex. (pas_backend_vcf_init): init the mutex. * backend/pas/pas-backend-summary.c (pas_backend_summary_add_contact): don't unref the contact here. * backend/pas/pas-backend-ldap.c (pas_backend_ldap_process_stop_book_view): new function, but leave unimplemented for now. * backend/pas/pas-backend-file.c (build_summary): use an EContact for this call. (do_summary_query): nuke, the contents of this has been moved to start_book_view. (pas_backend_file_search_timeout): same. (pas_backend_file_search): same. (pas_backend_file_start_book_view): glom everything into here involving searching. This function could (and should) be renamed and reused from both this function and _get_contact_list. (pas_backend_file_stop_book_view): new function. (pas_backend_file_class_init): fill in backend->stop_book_view. * backend/pas/Makefile.am (LDAP_BACKEND): libpasldap.a -> libpasldap.la (noinst_LTLIBRARIES): *.a -> *.la. (libpas_la_SOURCES): same. (libpasfile_la_SOURCES): same. (libpasvcf_la_SOURCES): same. (libpasldap_la_SOURCES): same. * backend/idl/addressbook.idl: add BookView::stop. * backend/ebook/e-vcard.c (read_attribute_value): fix GString related leaks. (read_attribute_params): same. (parse): don't leak the EVCardAttributes corresponding to BEGIN/END:vCard. (free_gstring): new function (e_vcard_attribute_remove_values): free the decoded_values list, using free_gstring. * backend/ebook/e-book.c (e_book_response_get_book_view): ref the listener here. * backend/ebook/e-book-view.h: add prototype for e_book_view_stop. * backend/ebook/e-book-view.c (e_book_view_stop): new function. * backend/ebook/e-book-async.c (_get_book_view_response_dtor): unref the book view. svn path=/trunk/; revision=23000 --- addressbook/backend/pas/pas-backend.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'addressbook/backend/pas/pas-backend.c') diff --git a/addressbook/backend/pas/pas-backend.c b/addressbook/backend/pas/pas-backend.c index 076565de07..5b559940d1 100644 --- a/addressbook/backend/pas/pas-backend.c +++ b/addressbook/backend/pas/pas-backend.c @@ -200,6 +200,18 @@ pas_backend_start_book_view (PASBackend *backend, (* PAS_BACKEND_GET_CLASS (backend)->start_book_view) (backend, book_view); } +void +pas_backend_stop_book_view (PASBackend *backend, + PASBookView *book_view) +{ + g_return_if_fail (backend && PAS_IS_BACKEND (backend)); + g_return_if_fail (book_view && PAS_IS_BOOK_VIEW (book_view)); + + g_assert (PAS_BACKEND_GET_CLASS (backend)->stop_book_view); + + (* PAS_BACKEND_GET_CLASS (backend)->stop_book_view) (backend, book_view); +} + void pas_backend_get_changes (PASBackend *backend, PASBook *book, @@ -308,6 +320,17 @@ pas_backend_add_book_view (PASBackend *backend, g_mutex_unlock (backend->priv->views_mutex); } +void +pas_backend_remove_book_view (PASBackend *backend, + PASBookView *view) +{ + g_mutex_lock (backend->priv->views_mutex); + + e_list_remove (backend->priv->views, view); + + g_mutex_unlock (backend->priv->views_mutex); +} + /** * pas_backend_add_client: * @backend: An addressbook backend. -- cgit v1.2.3