From cb40c553aefff522cf3c6ff8af783afa3e217649 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Tue, 20 Jan 2015 08:09:33 -0500 Subject: streams: add private 'async close via threads' API Add an internal helper to find out if close_async() is implemented via threads using the default implementation in the base class. We will use this to decide if we should do a 'pure async' close of a GIOStream or not. https://bugzilla.gnome.org/show_bug.cgi?id=741630 --- gio/goutputstream.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'gio/goutputstream.c') diff --git a/gio/goutputstream.c b/gio/goutputstream.c index ea05b41bf..035465db3 100644 --- a/gio/goutputstream.c +++ b/gio/goutputstream.c @@ -1705,6 +1705,25 @@ g_output_stream_async_write_is_via_threads (GOutputStream *stream) g_pollable_output_stream_can_poll (G_POLLABLE_OUTPUT_STREAM (stream)))); } +/*< internal > + * g_output_stream_async_close_is_via_threads: + * @stream: output stream + * + * Checks if an output stream's close_async function uses threads. + * + * Returns: %TRUE if @stream's close_async function uses threads. + **/ +gboolean +g_output_stream_async_close_is_via_threads (GOutputStream *stream) +{ + GOutputStreamClass *class; + + g_return_val_if_fail (G_IS_OUTPUT_STREAM (stream), FALSE); + + class = G_OUTPUT_STREAM_GET_CLASS (stream); + + return class->close_async == g_output_stream_real_close_async; +} /******************************************** * Default implementation of async ops * -- cgit v1.2.1