diff options
author | Rodrigo Moya <rodrigo@ximian.com> | 2002-09-23 19:50:12 +0800 |
---|---|---|
committer | Rodrigo Moya <rodrigo@src.gnome.org> | 2002-09-23 19:50:12 +0800 |
commit | 8d44d5b8fae0d145e9698edcd2c752ff8755a307 (patch) | |
tree | f8e567900267fec95952dee01facbb16b06ee429 /calendar/pcs | |
parent | b6adbdba7deac2a78987be98f71f0c19efb2c4bc (diff) | |
download | gsoc2013-evolution-8d44d5b8fae0d145e9698edcd2c752ff8755a307.tar gsoc2013-evolution-8d44d5b8fae0d145e9698edcd2c752ff8755a307.tar.gz gsoc2013-evolution-8d44d5b8fae0d145e9698edcd2c752ff8755a307.tar.bz2 gsoc2013-evolution-8d44d5b8fae0d145e9698edcd2c752ff8755a307.tar.lz gsoc2013-evolution-8d44d5b8fae0d145e9698edcd2c752ff8755a307.tar.xz gsoc2013-evolution-8d44d5b8fae0d145e9698edcd2c752ff8755a307.tar.zst gsoc2013-evolution-8d44d5b8fae0d145e9698edcd2c752ff8755a307.zip |
move success notification code to its own code block, since it was being
2002-09-23 Rodrigo Moya <rodrigo@ximian.com>
* pcs/query.c (start_cached_query_cb): move success notification code
to its own code block, since it was being run for parse errors also.
Also, remove all traces of the query from the cache if there is an
error. Also, use GINT_TO_POINTER instead of GPOINTER_TO_INT.
svn path=/trunk/; revision=18165
Diffstat (limited to 'calendar/pcs')
-rw-r--r-- | calendar/pcs/query.c | 61 |
1 files changed, 34 insertions, 27 deletions
diff --git a/calendar/pcs/query.c b/calendar/pcs/query.c index 15b5c41ec2..19686e2d4d 100644 --- a/calendar/pcs/query.c +++ b/calendar/pcs/query.c @@ -1458,15 +1458,18 @@ start_cached_query_cb (gpointer data) GTK_SIGNAL_FUNC (listener_died_cb), info->query); priv->cached_timeouts = g_list_remove (priv->cached_timeouts, - GPOINTER_TO_INT (info->tid)); + GINT_TO_POINTER (info->tid)); - g_free (info); - - return FALSE; } else if (priv->state == QUERY_IN_PROGRESS) { /* if it's in progress, we just wait */ return TRUE; } else if (priv->state == QUERY_PARSE_ERROR) { + /* remove all traces of this query */ + g_source_remove (info->tid); + priv->cached_timeouts = g_list_remove (priv->cached_timeouts, + GINT_TO_POINTER (info->tid)); + + /* notify listener of error */ CORBA_exception_init (&ev); GNOME_Evolution_Calendar_QueryListener_notifyQueryDone ( info->ql, @@ -1479,33 +1482,37 @@ start_cached_query_cb (gpointer data) "a parse error"); CORBA_exception_free (&ev); - } - /* if the query is done, then we just notify the listener */ - g_source_remove (info->tid); - priv->cached_timeouts = g_list_remove (priv->cached_timeouts, - GPOINTER_TO_INT (info->tid)); - - g_hash_table_foreach (priv->uids, (GHFunc) notify_uid_cb, info); + cached_queries = g_list_remove (cached_queries, info->query); + bonobo_object_unref (BONOBO_OBJECT (info->query)); + } else if (priv->state == QUERY_DONE) { + g_source_remove (info->tid); + priv->cached_timeouts = g_list_remove (priv->cached_timeouts, + GINT_TO_POINTER (info->tid)); - priv->listeners = g_list_append (priv->listeners, info->ql); + /* if the query is done, then we just notify the listener */ + g_hash_table_foreach (priv->uids, (GHFunc) notify_uid_cb, info); - cl = e_component_listener_new (info->ql, 0); - priv->component_listeners = g_list_append (priv->component_listeners, cl); - gtk_signal_connect (GTK_OBJECT (cl), "component_died", - GTK_SIGNAL_FUNC (listener_died_cb), info->query); + priv->listeners = g_list_append (priv->listeners, info->ql); - CORBA_exception_init (&ev); - GNOME_Evolution_Calendar_QueryListener_notifyQueryDone ( - info->ql, - GNOME_Evolution_Calendar_QueryListener_SUCCESS, - "", - &ev); - if (BONOBO_EX (&ev)) - g_message ("start_cached_query_cb(): Could not notify the listener of " - "a finished query"); + cl = e_component_listener_new (info->ql, 0); + priv->component_listeners = g_list_append (priv->component_listeners, cl); + gtk_signal_connect (GTK_OBJECT (cl), "component_died", + GTK_SIGNAL_FUNC (listener_died_cb), info->query); - CORBA_exception_free (&ev); + CORBA_exception_init (&ev); + GNOME_Evolution_Calendar_QueryListener_notifyQueryDone ( + info->ql, + GNOME_Evolution_Calendar_QueryListener_SUCCESS, + "", + &ev); + if (BONOBO_EX (&ev)) + g_message ("start_cached_query_cb(): Could not notify the listener of " + "a finished query"); + + CORBA_exception_free (&ev); + } + g_free (info); return FALSE; @@ -1544,7 +1551,7 @@ backend_destroyed_cb (GtkObject *object, gpointer data) query = QUERY (data); cached_queries = g_list_remove (cached_queries, query); - bonobo_object_unref (query); + bonobo_object_unref (BONOBO_OBJECT (query)); } /** |