From: Evan Nemerson Date: Mon, 3 May 2010 01:20:46 +0000 (-0700) Subject: gio-2.0: fix callbacks for sources created with Socket.create_source X-Git-Tag: 0.9.1~92 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6ac5f539c682c974b12a8b3c6c7f9aad649125ad;p=thirdparty%2Fvala.git gio-2.0: fix callbacks for sources created with Socket.create_source Fixes bug 617069. --- diff --git a/vapi/gio-2.0.vapi b/vapi/gio-2.0.vapi index f4f9bb600..4ead2fa88 100644 --- a/vapi/gio-2.0.vapi +++ b/vapi/gio-2.0.vapi @@ -715,7 +715,7 @@ namespace GLib { public GLib.IOCondition condition_check (GLib.IOCondition condition); public bool condition_wait (GLib.IOCondition condition, GLib.Cancellable? cancellable) throws GLib.Error; public bool connect (GLib.SocketAddress address, GLib.Cancellable? cancellable) throws GLib.Error; - public unowned GLib.TimeoutSource create_source (GLib.IOCondition condition, GLib.Cancellable? cancellable); + public GLib.SocketSource create_source (GLib.IOCondition condition, GLib.Cancellable? cancellable); [CCode (has_construct_function = false)] public Socket.from_fd (int fd) throws GLib.Error; public bool get_blocking (); @@ -844,6 +844,12 @@ namespace GLib { public virtual signal bool incoming (GLib.SocketConnection connection, GLib.Object? source_object); } [Compact] + [CCode (cname = "GSource", cheader_filename = "gio/gio.h")] + public class SocketSource : GLib.Source { + [CCode (cname = "g_source_set_callback")] + public void set_callback ([CCode (type = "GSourceFunc")] owned GLib.SocketSourceFunc func); + } + [Compact] [CCode (copy_function = "g_srv_target_copy", type_id = "G_TYPE_SRV_TARGET", cheader_filename = "gio/gio.h")] public class SrvTarget { [CCode (has_construct_function = false)] diff --git a/vapi/packages/gio-2.0/gio-2.0-custom.vala b/vapi/packages/gio-2.0/gio-2.0-custom.vala index 42ab86c39..ae52b16af 100644 --- a/vapi/packages/gio-2.0/gio-2.0-custom.vala +++ b/vapi/packages/gio-2.0/gio-2.0-custom.vala @@ -34,6 +34,13 @@ namespace GLib { public abstract GLib.FileMonitor monitor_file (GLib.FileMonitorFlags flags, GLib.Cancellable? cancellable = null) throws GLib.IOError; } + [Compact] + [CCode (cname = "GSource", ref_function = "g_source_ref", unref_function = "g_source_unref")] + public class SocketSource : GLib.Source { + [CCode (cname = "g_source_set_callback")] + public void set_callback ([CCode (type = "GSourceFunc")] owned SocketSourceFunc func); + } + [CCode (cname = "g_file_hash", cheader_filename = "gio/gio.h")] public static GLib.HashFunc file_hash; [CCode (cname = "g_file_equal", cheader_filename = "gio/gio.h")] diff --git a/vapi/packages/gio-2.0/gio-2.0.metadata b/vapi/packages/gio-2.0/gio-2.0.metadata index 74e9aaed5..f783e1a11 100644 --- a/vapi/packages/gio-2.0/gio-2.0.metadata +++ b/vapi/packages/gio-2.0/gio-2.0.metadata @@ -113,6 +113,7 @@ g_resolver_lookup_service transfer_ownership="1" type_arguments="SrvTarget" g_resolver_lookup_service_finish transfer_ownership="1" type_arguments="SrvTarget" g_seekable_truncate abstract="1" vfunc_name="truncate_fn" g_seekable_truncate_fn hidden="1" +g_socket_create_source type_name="SocketSource" transfer_ownership="1" g_socket_listener_add_address.source_object nullable="1" g_socket_listener_add_inet_port.source_object nullable="1" g_socket_listener_add_socket.source_object nullable="1"