+static gboolean
+g_converter_output_stream_can_poll (GPollableOutputStream *stream)
+{
+ GOutputStream *base_stream = G_FILTER_OUTPUT_STREAM (stream)->base_stream;
+
+ return (G_IS_POLLABLE_OUTPUT_STREAM (base_stream) &&
+ g_pollable_output_stream_can_poll (G_POLLABLE_OUTPUT_STREAM (base_stream)));
+}
+
+static gboolean
+g_converter_output_stream_is_writable (GPollableOutputStream *stream)
+{
+ GOutputStream *base_stream = G_FILTER_OUTPUT_STREAM (stream)->base_stream;
+
+ return g_pollable_output_stream_is_writable (G_POLLABLE_OUTPUT_STREAM (base_stream));
+}
+
+static gssize
+g_converter_output_stream_write_nonblocking (GPollableOutputStream *stream,
+ const void *buffer,
+ gsize count,
+ GError **error)
+{
+ return write_internal (G_OUTPUT_STREAM (stream), buffer, count, FALSE,
+ NULL, error);
+}
+
+static GSource *
+g_converter_output_stream_create_source (GPollableOutputStream *stream,
+ GCancellable *cancellable)
+{
+ GOutputStream *base_stream = G_FILTER_OUTPUT_STREAM (stream)->base_stream;
+ GSource *base_source, *pollable_source;
+
+ base_source = g_pollable_output_stream_create_source (G_POLLABLE_OUTPUT_STREAM (base_stream), NULL);
+ pollable_source = g_pollable_source_new_full (stream, base_source,
+ cancellable);
+ g_source_unref (base_source);
+
+ return pollable_source;
+}
+