aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/pas/pas-book.c
diff options
context:
space:
mode:
authorChris Toshok <toshok@ximian.com>2003-10-23 04:50:36 +0800
committerChris Toshok <toshok@src.gnome.org>2003-10-23 04:50:36 +0800
commitcbfab681c1576d4de27d48fbd6b4b7780670494a (patch)
tree70e99033907a1f5dada728e785835a07ca6ab98c /addressbook/backend/pas/pas-book.c
parentf7cbb839adf3fd47aa07ca2080063acd6fff6978 (diff)
downloadgsoc2013-evolution-cbfab681c1576d4de27d48fbd6b4b7780670494a.tar
gsoc2013-evolution-cbfab681c1576d4de27d48fbd6b4b7780670494a.tar.gz
gsoc2013-evolution-cbfab681c1576d4de27d48fbd6b4b7780670494a.tar.bz2
gsoc2013-evolution-cbfab681c1576d4de27d48fbd6b4b7780670494a.tar.lz
gsoc2013-evolution-cbfab681c1576d4de27d48fbd6b4b7780670494a.tar.xz
gsoc2013-evolution-cbfab681c1576d4de27d48fbd6b4b7780670494a.tar.zst
gsoc2013-evolution-cbfab681c1576d4de27d48fbd6b4b7780670494a.zip
use the synchronous api for this. simplifies it a bunch.
2003-10-21 Chris Toshok <toshok@ximian.com> * tools/evolution-addressbook-abuse.c: use the synchronous api for this. simplifies it a bunch. 2003-10-21 Chris Toshok <toshok@ximian.com> * 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
Diffstat (limited to 'addressbook/backend/pas/pas-book.c')
-rw-r--r--addressbook/backend/pas/pas-book.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/addressbook/backend/pas/pas-book.c b/addressbook/backend/pas/pas-book.c
index 7b6e0c9a2b..08078887b6 100644
--- a/addressbook/backend/pas/pas-book.c
+++ b/addressbook/backend/pas/pas-book.c
@@ -42,7 +42,7 @@ impl_GNOME_Evolution_Addressbook_Book_remove (PortableServer_Servant servant,
{
PASBook *book = PAS_BOOK (bonobo_object (servant));
- printf ("impl_GNOME_Evolution_Addressbook_Book_open\n");
+ printf ("impl_GNOME_Evolution_Addressbook_Book_remove\n");
pas_backend_remove (pas_book_get_backend (book), book);
}
@@ -122,6 +122,15 @@ impl_GNOME_Evolution_Addressbook_Book_modifyContact (PortableServer_Servant serv
}
static void
+view_listener_died_cb (gpointer cnx, gpointer user_data)
+{
+ PASBookView *book_view = PAS_BOOK_VIEW (user_data);
+
+ pas_backend_stop_book_view (pas_book_view_get_backend (book_view), book_view);
+ pas_backend_remove_book_view (pas_book_view_get_backend (book_view), book_view);
+}
+
+static void
impl_GNOME_Evolution_Addressbook_Book_getBookView (PortableServer_Servant servant,
const GNOME_Evolution_Addressbook_BookViewListener listener,
const CORBA_char *search,
@@ -154,6 +163,7 @@ impl_GNOME_Evolution_Addressbook_Book_getBookView (PortableServer_Servant servan
return;
}
+ ORBit_small_listen_for_broken (pas_book_view_get_listener (view), G_CALLBACK (view_listener_died_cb), view);
pas_backend_add_book_view (backend, view);
@@ -298,7 +308,7 @@ pas_book_respond_create (PASBook *book,
GNOME_Evolution_Addressbook_BookListener_notifyContactCreated (
book->priv->listener, status,
- e_contact_get (contact, E_CONTACT_UID), &ev);
+ e_contact_get_const (contact, E_CONTACT_UID), &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
g_warning ("pas_book_respond_create: Exception "