diff options
-rw-r--r-- | addressbook/ChangeLog | 11 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book-listener.c | 10 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book-listener.h | 13 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book.c | 140 |
4 files changed, 73 insertions, 101 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 3b04b46f32..a70c3dfa1f 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,5 +1,12 @@ 2001-06-11 Christopher James Lahey <clahey@ximian.com> + * backend/ebook/e-book-listener.c, + backend/ebook/e-book-listener.h, backend/ebook/e-book.c: Rolled + back the change 2 ago, dated 06/11/2001 01:51 in CVS, involving + e-book-listener.[ch] and e-book.c. + +2001-06-11 Christopher James Lahey <clahey@ximian.com> + * backend/ebook/e-book.c (e_book_load_uri, e_book_get_supported_fields, e_book_authenticate_user, e_book_remove_card_by_id, e_book_add_vcard, e_book_commit_vcard, @@ -10,6 +17,8 @@ e_book_unqueue_op so that the op could be unqueued if the CORBA call fails. +2001-06-11 Christopher James Lahey <clahey@ximian.com> + * backend/ebook/e-book-listener.c, backend/ebook/e-book-listener.h (e_book_listener_unpop_response): Added this function to put a response back into the queue. @@ -20,6 +29,8 @@ Also, when queueing an op, we check to see if there are any responses waiting. + * This change has been reverted. + 2001-06-11 Christopher James Lahey <clahey@ximian.com> * backend/ebook/e-card-compare.c, backend/ebook/e-card-compare.h diff --git a/addressbook/backend/ebook/e-book-listener.c b/addressbook/backend/ebook/e-book-listener.c index 98ae9820a3..f9d4f67f97 100644 --- a/addressbook/backend/ebook/e-book-listener.c +++ b/addressbook/backend/ebook/e-book-listener.c @@ -468,16 +468,6 @@ e_book_listener_pop_response (EBookListener *listener) return resp; } -void -e_book_listener_unpop_response (EBookListener *listener, - EBookListenerResponse *resp) -{ - g_return_if_fail (listener != NULL); - g_return_if_fail (E_IS_BOOK_LISTENER (listener)); - - listener->priv->response_queue = g_list_prepend (listener->priv->response_queue, resp); -} - static EBookStatus e_book_listener_convert_status (const GNOME_Evolution_Addressbook_BookListener_CallStatus status) { diff --git a/addressbook/backend/ebook/e-book-listener.h b/addressbook/backend/ebook/e-book-listener.h index ae79dd1748..84cdfecced 100644 --- a/addressbook/backend/ebook/e-book-listener.h +++ b/addressbook/backend/ebook/e-book-listener.h @@ -88,15 +88,12 @@ typedef struct { char *id; } EBookListenerResponse; -EBookListener *e_book_listener_new (void); -int e_book_listener_check_pending (EBookListener *listener); -EBookListenerResponse *e_book_listener_pop_response (EBookListener *listener); -void e_book_listener_unpop_response (EBookListener *listener, - EBookListenerResponse *response); +EBookListener *e_book_listener_new (void); +int e_book_listener_check_pending (EBookListener *listener); +EBookListenerResponse *e_book_listener_pop_response (EBookListener *listener); +GtkType e_book_listener_get_type (void); -GtkType e_book_listener_get_type (void); - -POA_GNOME_Evolution_Addressbook_BookListener__epv *e_book_listener_get_epv (void); +POA_GNOME_Evolution_Addressbook_BookListener__epv *e_book_listener_get_epv (void); #define E_BOOK_LISTENER_TYPE (e_book_listener_get_type ()) #define E_BOOK_LISTENER(o) (GTK_CHECK_CAST ((o), E_BOOK_LISTENER_TYPE, EBookListener)) diff --git a/addressbook/backend/ebook/e-book.c b/addressbook/backend/ebook/e-book.c index 68a267265f..2782847e40 100644 --- a/addressbook/backend/ebook/e-book.c +++ b/addressbook/backend/ebook/e-book.c @@ -64,8 +64,6 @@ typedef struct { EBookViewListener *listener; } EBookOp; -static gboolean check_listener_queue_idle (gpointer closure); - /* * Local response queue management. */ @@ -77,8 +75,6 @@ e_book_queue_op (EBook *book, { EBookOp *op; - g_print ("Queue Op\n"); - op = g_new0 (EBookOp, 1); op->tag = book->priv->op_tag++; op->active = TRUE; @@ -89,11 +85,6 @@ e_book_queue_op (EBook *book, book->priv->pending_ops = g_list_append (book->priv->pending_ops, op); - if (e_book_listener_check_pending (book->priv->listener)) { - gtk_object_ref (GTK_OBJECT (book)); - g_idle_add (check_listener_queue_idle, book); - } - return op->tag; } @@ -126,8 +117,6 @@ e_book_pop_op (EBook *book) GList *popped; EBookOp *op; - g_print ("Pop Op\n"); - if (book->priv->pending_ops == NULL) return NULL; @@ -160,7 +149,7 @@ e_book_cancel_op (EBook *book, guint tag) return cancelled; } -static gboolean +static void e_book_do_response_create_card (EBook *book, EBookListenerResponse *resp) { @@ -169,17 +158,18 @@ e_book_do_response_create_card (EBook *book, op = e_book_pop_op (book); if (op == NULL) { - return FALSE; + g_warning ("e_book_do_response_create_card: Cannot find operation " + "in local op queue!\n"); + return; } if (op->cb) ((EBookIdCallback) op->cb) (book, resp->status, resp->id, op->closure); g_free (resp->id); g_free (op); - return TRUE; } -static gboolean +static void e_book_do_response_generic (EBook *book, EBookListenerResponse *resp) { @@ -188,17 +178,17 @@ e_book_do_response_generic (EBook *book, op = e_book_pop_op (book); if (op == NULL) { - return FALSE; + g_warning ("e_book_do_response_generic: Cannot find operation " + "in local op queue!\n"); } if (op->cb) ((EBookCallback) op->cb) (book, resp->status, op->closure); g_free (op); - return TRUE; } -static gboolean +static void e_book_do_response_get_cursor (EBook *book, EBookListenerResponse *resp) { @@ -209,7 +199,9 @@ e_book_do_response_get_cursor (EBook *book, op = e_book_pop_op (book); if (op == NULL) { - return FALSE; + g_warning ("e_book_do_response_get_cursor: Cannot find operation " + "in local op queue!\n"); + return; } cursor = e_card_cursor_new(resp->cursor); @@ -238,12 +230,11 @@ e_book_do_response_get_cursor (EBook *book, gtk_object_unref(GTK_OBJECT(cursor)); g_free (op); - return TRUE; } -static gboolean +static void e_book_do_response_get_view (EBook *book, EBookListenerResponse *resp) { @@ -254,7 +245,9 @@ e_book_do_response_get_view (EBook *book, op = e_book_pop_op (book); if (op == NULL) { - return FALSE; + g_warning ("e_book_do_response_get_view: Cannot find operation " + "in local op queue!\n"); + return; } book_view = e_book_view_new(resp->book_view, op->listener); @@ -287,10 +280,9 @@ e_book_do_response_get_view (EBook *book, bonobo_object_unref(BONOBO_OBJECT(op->listener)); g_free (op); - return TRUE; } -static gboolean +static void e_book_do_response_get_changes (EBook *book, EBookListenerResponse *resp) { @@ -301,7 +293,9 @@ e_book_do_response_get_changes (EBook *book, op = e_book_pop_op (book); if (op == NULL) { - return FALSE; + g_warning ("e_book_do_response_get_changes: Cannot find operation " + "in local op queue!\n"); + return; } book_view = e_book_view_new (resp->book_view, op->listener); @@ -331,53 +325,30 @@ e_book_do_response_get_changes (EBook *book, bonobo_object_unref(BONOBO_OBJECT(op->listener)); g_free (op); - return TRUE; } -static gboolean +static void e_book_do_response_open (EBook *book, EBookListenerResponse *resp) { EBookOp *op; - op = e_book_pop_op (book); - - if (op == NULL) { - return FALSE; - } - if (resp->status == E_BOOK_STATUS_SUCCESS) { book->priv->corba_book = resp->book; book->priv->load_state = URILoaded; } - if (op->cb) - ((EBookCallback) op->cb) (book, resp->status, op->closure); - g_free (op); - return TRUE; -} - -static gboolean -e_book_do_response_get_supported_fields (EBook *book, - EBookListenerResponse *resp) -{ - EBookOp *op; - op = e_book_pop_op (book); if (op == NULL) { - return FALSE; - } - - if (op->cb) { - if (op->active) - ((EBookFieldsCallback) op->cb) (book, resp->status, resp->fields, op->closure); - else - ((EBookFieldsCallback) op->cb) (book, E_BOOK_STATUS_CANCELLED, NULL, op->closure); + g_warning ("e_book_do_response_open: Cannot find operation " + "in local op queue!\n"); + return; } + if (op->cb) + ((EBookCallback) op->cb) (book, resp->status, op->closure); g_free (op); - return TRUE; } static void @@ -406,6 +377,30 @@ e_book_do_writable_event (EBook *book, resp->writable); } +static void +e_book_do_response_get_supported_fields (EBook *book, + EBookListenerResponse *resp) +{ + EBookOp *op; + + op = e_book_pop_op (book); + + if (op == NULL) { + g_warning ("e_book_do_response_get_supported_fields: Cannot find operation " + "in local op queue!\n"); + return; + } + + if (op->cb) { + if (op->active) + ((EBookFieldsCallback) op->cb) (book, resp->status, resp->fields, op->closure); + else + ((EBookFieldsCallback) op->cb) (book, E_BOOK_STATUS_CANCELLED, NULL, op->closure); + } + + g_free (op); +} + /* * Reading notices out of the EBookListener's queue. */ @@ -413,7 +408,6 @@ static void e_book_check_listener_queue (EBookListener *listener, EBook *book) { EBookListenerResponse *resp; - gboolean handled = FALSE; resp = e_book_listener_pop_response (listener); @@ -422,66 +416,46 @@ e_book_check_listener_queue (EBookListener *listener, EBook *book) switch (resp->op) { case CreateCardResponse: - handled = e_book_do_response_create_card (book, resp); + e_book_do_response_create_card (book, resp); break; case RemoveCardResponse: case ModifyCardResponse: case AuthenticationResponse: - handled = e_book_do_response_generic (book, resp); + e_book_do_response_generic (book, resp); break; case GetCursorResponse: - handled = e_book_do_response_get_cursor (book, resp); + e_book_do_response_get_cursor (book, resp); break; case GetBookViewResponse: - handled = e_book_do_response_get_view(book, resp); + e_book_do_response_get_view(book, resp); break; case GetChangesResponse: - handled = e_book_do_response_get_changes(book, resp); + e_book_do_response_get_changes(book, resp); break; case OpenBookResponse: - handled = e_book_do_response_open (book, resp); + e_book_do_response_open (book, resp); break; case GetSupportedFieldsResponse: - handled = e_book_do_response_get_supported_fields (book, resp); + e_book_do_response_get_supported_fields (book, resp); break; case OpenProgressEvent: e_book_do_progress_event (book, resp); - handled = TRUE; break; case LinkStatusEvent: e_book_do_link_event (book, resp); - handled = TRUE; break; case WritableStatusEvent: e_book_do_writable_event (book, resp); - handled = TRUE; break; default: g_error ("EBook: Unknown operation %d in listener queue!\n", resp->op); - handled = TRUE; - break; } - if (handled) - g_free (resp); - else - e_book_listener_unpop_response (listener, resp); + g_free (resp); } -static gboolean -check_listener_queue_idle (gpointer closure) -{ - EBook *book = closure; - if (!GTK_OBJECT_DESTROYED (GTK_OBJECT (book))) { - e_book_check_listener_queue (book->priv->listener, book); - } - gtk_object_unref (GTK_OBJECT (book)); - return FALSE; -} - - /** * e_book_load_uri: */ |