libsoup r1147 - in trunk: . docs/reference libsoup tests
- From: danw svn gnome org
- To: svn-commits-list gnome org
- Subject: libsoup r1147 - in trunk: . docs/reference libsoup tests
- Date: Sat, 26 Jul 2008 14:19:18 +0000 (UTC)
Author: danw
Date: Sat Jul 26 14:19:18 2008
New Revision: 1147
URL: http://svn.gnome.org/viewvc/libsoup?rev=1147&view=rev
Log:
* libsoup/soup-misc.c (soup_add_completion): Add this to schedule
a callback in a GMainContext "right away", as opposed to
soup_add_idle(), which uses a lower priority and therefore may not
end up calling the callback for a long time if the application is
busy with I/O. #536676, Benjamin Otte.
* libsoup/soup-dns.c (resolver_thread, async_cancel)
(soup_dns_lookup_resolve_async):
* libsoup/soup-message-io.c (soup_message_io_unpause):
* libsoup/soup-session-sync.c (queue_message_thread):
* libsoup/soup-session-async.c (do_idle_run_queue):
* libsoup/soup-socket.c (async_cancel)
(soup_socket_connect_async):
* tests/test-utils.c (test_server_shutdown): Use
soup_add_completion() rather than soup_add_idle().
* docs/reference/libsoup-2.4-sections.txt: add soup_add_completion
Modified:
trunk/ChangeLog
trunk/docs/reference/libsoup-2.4-sections.txt
trunk/libsoup/soup-dns.c
trunk/libsoup/soup-message-io.c
trunk/libsoup/soup-misc.c
trunk/libsoup/soup-misc.h
trunk/libsoup/soup-session-async.c
trunk/libsoup/soup-session-sync.c
trunk/libsoup/soup-socket.c
trunk/tests/test-utils.c
Modified: trunk/docs/reference/libsoup-2.4-sections.txt
==============================================================================
--- trunk/docs/reference/libsoup-2.4-sections.txt (original)
+++ trunk/docs/reference/libsoup-2.4-sections.txt Sat Jul 26 14:19:18 2008
@@ -563,6 +563,7 @@
soup_str_case_equal
soup_str_case_hash
<SUBSECTION>
+soup_add_completion
soup_add_idle
soup_add_io_watch
soup_add_timeout
Modified: trunk/libsoup/soup-dns.c
==============================================================================
--- trunk/libsoup/soup-dns.c (original)
+++ trunk/libsoup/soup-dns.c Sat Jul 26 14:19:18 2008
@@ -553,7 +553,7 @@
lookup = async_lookups->data;
async_lookups = g_slist_remove (async_lookups, lookup);
- soup_add_idle (lookup->async_context, do_async_callback, lookup);
+ soup_add_completion (lookup->async_context, do_async_callback, lookup);
}
soup_dns_cache_entry_unref (entry);
@@ -633,7 +633,7 @@
if (g_slist_find (entry->async_lookups, lookup)) {
entry->async_lookups = g_slist_remove (entry->async_lookups,
lookup);
- soup_add_idle (lookup->async_context, do_async_callback, lookup);
+ soup_add_completion (lookup->async_context, do_async_callback, lookup);
}
g_mutex_unlock (soup_dns_lock);
@@ -680,7 +680,7 @@
FALSE, NULL);
}
} else
- soup_add_idle (lookup->async_context, do_async_callback, lookup);
+ soup_add_completion (lookup->async_context, do_async_callback, lookup);
g_mutex_unlock (soup_dns_lock);
}
Modified: trunk/libsoup/soup-message-io.c
==============================================================================
--- trunk/libsoup/soup-message-io.c (original)
+++ trunk/libsoup/soup-message-io.c Sat Jul 26 14:19:18 2008
@@ -973,7 +973,7 @@
NULL);
if (non_blocking) {
if (!io->unpause_source) {
- io->unpause_source = soup_add_idle (
+ io->unpause_source = soup_add_completion (
async_context, io_unpause_internal, msg);
}
} else
Modified: trunk/libsoup/soup-misc.c
==============================================================================
--- trunk/libsoup/soup-misc.c (original)
+++ trunk/libsoup/soup-misc.c Sat Jul 26 14:19:18 2008
@@ -150,6 +150,10 @@
* Adds an idle event as with g_idle_add(), but using the given
* @async_context.
*
+ * If you want @function to run "right away", use
+ * soup_add_completion(), since that sets a higher priority on the
+ * #GSource than soup_add_idle() does.
+ *
* Return value: a #GSource, which can be removed from @async_context
* with g_source_destroy().
**/
@@ -165,6 +169,32 @@
}
/**
+ * soup_add_completion:
+ * @async_context: the #GMainContext to dispatch the idle event in, or
+ * %NULL for the default context
+ * @function: the callback to invoke
+ * @data: user data to pass to @function
+ *
+ * Adds @function to be executed from inside @async_context with the
+ * default priority. Use this when you want to complete an action in
+ * @async_context's main loop, as soon as possible.
+ *
+ * Return value: a #GSource, which can be removed from @async_context
+ * with g_source_destroy().
+ **/
+GSource *
+soup_add_completion (GMainContext *async_context,
+ GSourceFunc function, gpointer data)
+{
+ GSource *source = g_idle_source_new ();
+ g_source_set_priority (source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (source, function, data, NULL);
+ g_source_attach (source, async_context);
+ g_source_unref (source);
+ return source;
+}
+
+/**
* soup_add_timeout:
* @async_context: the #GMainContext to dispatch the timeout in, or
* %NULL for the default context
Modified: trunk/libsoup/soup-misc.h
==============================================================================
--- trunk/libsoup/soup-misc.h (original)
+++ trunk/libsoup/soup-misc.h Sat Jul 26 14:19:18 2008
@@ -19,6 +19,9 @@
GSource *soup_add_idle (GMainContext *async_context,
GSourceFunc function,
gpointer data);
+GSource *soup_add_completion (GMainContext *async_context,
+ GSourceFunc function,
+ gpointer data);
GSource *soup_add_timeout (GMainContext *async_context,
guint interval,
GSourceFunc function,
Modified: trunk/libsoup/soup-session-async.c
==============================================================================
--- trunk/libsoup/soup-session-async.c (original)
+++ trunk/libsoup/soup-session-async.c Sat Jul 26 14:19:18 2008
@@ -233,8 +233,8 @@
static void
do_idle_run_queue (SoupSession *session)
{
- soup_add_idle (soup_session_get_async_context (session),
- idle_run_queue, g_object_ref (session));
+ soup_add_completion (soup_session_get_async_context (session),
+ idle_run_queue, g_object_ref (session));
}
static void
Modified: trunk/libsoup/soup-session-sync.c
==============================================================================
--- trunk/libsoup/soup-session-sync.c (original)
+++ trunk/libsoup/soup-session-sync.c Sat Jul 26 14:19:18 2008
@@ -157,8 +157,8 @@
soup_session_send_message (sad->session, sad->msg);
if (sad->callback) {
- soup_add_idle (soup_session_get_async_context (sad->session),
- queue_message_callback, sad);
+ soup_add_completion (soup_session_get_async_context (sad->session),
+ queue_message_callback, sad);
} else
async_data_free (sad);
Modified: trunk/libsoup/soup-socket.c
==============================================================================
--- trunk/libsoup/soup-socket.c (original)
+++ trunk/libsoup/soup-socket.c Sat Jul 26 14:19:18 2008
@@ -562,8 +562,8 @@
if (priv->watch_src)
g_source_destroy (priv->watch_src);
disconnect_internal (priv);
- priv->watch_src = soup_add_idle (priv->async_context,
- idle_connect_result, sacd);
+ priv->watch_src = soup_add_completion (priv->async_context,
+ idle_connect_result, sacd);
}
static guint
@@ -661,8 +661,8 @@
sacd);
}
} else {
- priv->watch_src = soup_add_idle (priv->async_context,
- idle_connect_result, sacd);
+ priv->watch_src = soup_add_completion (priv->async_context,
+ idle_connect_result, sacd);
}
}
Modified: trunk/tests/test-utils.c
==============================================================================
--- trunk/tests/test-utils.c (original)
+++ trunk/tests/test-utils.c Sat Jul 26 14:19:18 2008
@@ -272,8 +272,8 @@
test_server_shutdown (void)
{
if (server_thread) {
- soup_add_idle (soup_server_get_async_context (test_server),
- idle_quit_server, test_server);
+ soup_add_completion (soup_server_get_async_context (test_server),
+ idle_quit_server, test_server);
g_thread_join (server_thread);
} else
soup_server_quit (test_server);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]