diff options
author | Chris Toshok <toshok@ximian.com> | 2003-10-23 04:50:36 +0800 |
---|---|---|
committer | Chris Toshok <toshok@src.gnome.org> | 2003-10-23 04:50:36 +0800 |
commit | cbfab681c1576d4de27d48fbd6b4b7780670494a (patch) | |
tree | 70e99033907a1f5dada728e785835a07ca6ab98c /addressbook/backend/pas/pas-book.c | |
parent | f7cbb839adf3fd47aa07ca2080063acd6fff6978 (diff) | |
download | gsoc2013-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.c | 14 |
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 " |