X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgunixoutputstream.c;h=8aa7292b51232950be2cc3fdb57b372676c23c2f;hb=c8d10470939847069b1a346d4c44f2adde3469f6;hp=6baebe967e200eeddfca3dd9d18e0afe03b5d2f1;hpb=669505e354a843efb2e198d4b56e310fa6a69b9a;p=platform%2Fupstream%2Fglib.git diff --git a/gio/gunixoutputstream.c b/gio/gunixoutputstream.c index 6baebe9..8aa7292 100644 --- a/gio/gunixoutputstream.c +++ b/gio/gunixoutputstream.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. + * Public License along with this library; if not, see . * * Author: Alexander Larsson */ @@ -31,6 +29,7 @@ #include #include +#include #include "gioerror.h" #include "gunixoutputstream.h" #include "gcancellable.h" @@ -52,9 +51,9 @@ * asynchronous I/O. If it refers to a regular file, it will fall back * to doing asynchronous I/O in another thread.) * - * Note that <gio/gunixoutputstream.h> belongs - * to the UNIX-specific GIO interfaces, thus you have to use the - * gio-unix-2.0.pc pkg-config file when using it. + * Note that `` belongs to the UNIX-specific GIO + * interfaces, thus you have to use the `gio-unix-2.0.pc` pkg-config file + * when using it. */ enum { @@ -63,22 +62,23 @@ enum { PROP_CLOSE_FD }; +struct _GUnixOutputStreamPrivate { + int fd; + guint close_fd : 1; + guint is_pipe_or_socket : 1; +}; + static void g_unix_output_stream_pollable_iface_init (GPollableOutputStreamInterface *iface); static void g_unix_output_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface); G_DEFINE_TYPE_WITH_CODE (GUnixOutputStream, g_unix_output_stream, G_TYPE_OUTPUT_STREAM, + G_ADD_PRIVATE (GUnixOutputStream) G_IMPLEMENT_INTERFACE (G_TYPE_POLLABLE_OUTPUT_STREAM, g_unix_output_stream_pollable_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_FILE_DESCRIPTOR_BASED, g_unix_output_stream_file_descriptor_based_iface_init) ) -struct _GUnixOutputStreamPrivate { - int fd; - guint close_fd : 1; - guint is_pipe_or_socket : 1; -}; - static void g_unix_output_stream_set_property (GObject *object, guint prop_id, const GValue *value, @@ -110,22 +110,13 @@ static GSource *g_unix_output_stream_pollable_create_source (GPollableOutputStre GCancellable *cancellable); static void -g_unix_output_stream_finalize (GObject *object) -{ - G_OBJECT_CLASS (g_unix_output_stream_parent_class)->finalize (object); -} - -static void g_unix_output_stream_class_init (GUnixOutputStreamClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GOutputStreamClass *stream_class = G_OUTPUT_STREAM_CLASS (klass); - - g_type_class_add_private (klass, sizeof (GUnixOutputStreamPrivate)); gobject_class->get_property = g_unix_output_stream_get_property; gobject_class->set_property = g_unix_output_stream_set_property; - gobject_class->finalize = g_unix_output_stream_finalize; stream_class->write_fn = g_unix_output_stream_write; stream_class->close_fn = g_unix_output_stream_close; @@ -231,10 +222,7 @@ g_unix_output_stream_get_property (GObject *object, static void g_unix_output_stream_init (GUnixOutputStream *unix_stream) { - unix_stream->priv = G_TYPE_INSTANCE_GET_PRIVATE (unix_stream, - G_TYPE_UNIX_OUTPUT_STREAM, - GUnixOutputStreamPrivate); - + unix_stream->priv = g_unix_output_stream_get_instance_private (unix_stream); unix_stream->priv->fd = -1; unix_stream->priv->close_fd = TRUE; } @@ -298,7 +286,7 @@ g_unix_output_stream_set_close_fd (GUnixOutputStream *stream, * Returns whether the file descriptor of @stream will be * closed when the stream is closed. * - * Return value: %TRUE if the file descriptor is closed when done + * Returns: %TRUE if the file descriptor is closed when done * * Since: 2.20 */ @@ -316,7 +304,7 @@ g_unix_output_stream_get_close_fd (GUnixOutputStream *stream) * * Return the UNIX file descriptor that the stream writes to. * - * Return value: The file descriptor of @stream + * Returns: The file descriptor of @stream * * Since: 2.20 */ @@ -485,14 +473,22 @@ g_unix_output_stream_pollable_create_source (GPollableOutputStream *stream, GCancellable *cancellable) { GUnixOutputStream *unix_stream = G_UNIX_OUTPUT_STREAM (stream); - GSource *inner_source, *pollable_source; + GSource *inner_source, *cancellable_source, *pollable_source; pollable_source = g_pollable_source_new (G_OBJECT (stream)); - inner_source = _g_fd_source_new (unix_stream->priv->fd, G_IO_OUT, cancellable); + inner_source = g_unix_fd_source_new (unix_stream->priv->fd, G_IO_OUT); g_source_set_dummy_callback (inner_source); g_source_add_child_source (pollable_source, inner_source); g_source_unref (inner_source); + if (cancellable) + { + cancellable_source = g_cancellable_source_new (cancellable); + g_source_set_dummy_callback (cancellable_source); + g_source_add_child_source (pollable_source, cancellable_source); + g_source_unref (cancellable_source); + } + return pollable_source; }