[glib/wip/gmaincontext: 5/12] gsocket: use cancellable child source
- From: Ryan Lortie <desrt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/gmaincontext: 5/12] gsocket: use cancellable child source
- Date: Sun, 16 Feb 2014 15:16:27 +0000 (UTC)
commit 8c4dc84173190bd10e1a2de77524869b3da672e5
Author: Ryan Lortie <desrt desrt ca>
Date: Thu Feb 13 16:34:29 2014 -0500
gsocket: use cancellable child source
Now that GCancellable's GSource is based on _set_ready_time() instead of
an fd, we should use it as a child source, instead of forcing the
creation of the fd and adding it as a poll.
gio/gsocket.c | 22 +++++++---------------
1 files changed, 7 insertions(+), 15 deletions(-)
---
diff --git a/gio/gsocket.c b/gio/gsocket.c
index 341686c..bbc1b57 100644
--- a/gio/gsocket.c
+++ b/gio/gsocket.c
@@ -3207,8 +3207,6 @@ typedef struct {
GPollFD pollfd;
GSocket *socket;
GIOCondition condition;
- GCancellable *cancellable;
- GPollFD cancel_pollfd;
gint64 timeout_time;
} GSocketSource;
@@ -3218,9 +3216,6 @@ socket_source_prepare (GSource *source,
{
GSocketSource *socket_source = (GSocketSource *)source;
- if (g_cancellable_is_cancelled (socket_source->cancellable))
- return TRUE;
-
if (socket_source->timeout_time)
{
gint64 now;
@@ -3299,12 +3294,6 @@ socket_source_finalize (GSource *source)
#endif
g_object_unref (socket);
-
- if (socket_source->cancellable)
- {
- g_cancellable_release_fd (socket_source->cancellable);
- g_object_unref (socket_source->cancellable);
- }
}
static gboolean
@@ -3371,11 +3360,14 @@ socket_source_new (GSocket *socket,
socket_source->socket = g_object_ref (socket);
socket_source->condition = condition;
- if (g_cancellable_make_pollfd (cancellable,
- &socket_source->cancel_pollfd))
+ if (cancellable)
{
- socket_source->cancellable = g_object_ref (cancellable);
- g_source_add_poll (source, &socket_source->cancel_pollfd);
+ GSource *cancellable_source;
+
+ cancellable_source = g_cancellable_source_new (cancellable);
+ g_source_add_child_source (source, cancellable_source);
+ g_source_set_dummy_callback (cancellable_source);
+ g_source_unref (cancellable_source);
}
#ifdef G_OS_WIN32
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]