diff options
author | Benjamin Otte <otte@redhat.com> | 2021-09-11 06:06:02 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2021-09-11 22:28:40 +0200 |
commit | 9f2b847835b1cf6f14239b71f17a51368a809907 (patch) | |
tree | 6820714b403aa9aa497c1a0b08e2f19ef41a5ed4 /gsk | |
parent | db3858a204a0dec5113830f5a39da05cfdbe7a1a (diff) | |
download | gtk+-9f2b847835b1cf6f14239b71f17a51368a809907.tar.gz |
rendernode: Write the whole node
It turns out g_output_stream_write_bytes() does not write the bytes.
It should be renamed to g_output_stream_write_some_of_the_bytes() maybe.
Diffstat (limited to 'gsk')
-rw-r--r-- | gsk/gskrendernodeimpl.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c index 4b85fa60c1..fd2a9e5d44 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -5674,7 +5674,7 @@ gsk_render_node_content_serializer_finish (GObject *source, GOutputStream *stream = G_OUTPUT_STREAM (source); GError *error = NULL; - if (!g_output_stream_write_bytes_finish (stream, result, &error)) + if (g_output_stream_splice_finish (stream, result, &error) < 0) gdk_content_serializer_return_error (serializer, error); else gdk_content_serializer_return_success (serializer); @@ -5683,6 +5683,7 @@ gsk_render_node_content_serializer_finish (GObject *source, static void gsk_render_node_content_serializer (GdkContentSerializer *serializer) { + GInputStream *input; const GValue *value; GskRenderNode *node; GBytes *bytes; @@ -5690,13 +5691,16 @@ gsk_render_node_content_serializer (GdkContentSerializer *serializer) value = gdk_content_serializer_get_value (serializer); node = gsk_value_get_render_node (value); bytes = gsk_render_node_serialize (node); - - g_output_stream_write_bytes_async (gdk_content_serializer_get_output_stream (serializer), - bytes, - gdk_content_serializer_get_priority (serializer), - gdk_content_serializer_get_cancellable (serializer), - gsk_render_node_content_serializer_finish, - serializer); + input = g_memory_input_stream_new_from_bytes (bytes); + + g_output_stream_splice_async (gdk_content_serializer_get_output_stream (serializer), + input, + G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE, + gdk_content_serializer_get_priority (serializer), + gdk_content_serializer_get_cancellable (serializer), + gsk_render_node_content_serializer_finish, + serializer); + g_object_unref (input); g_bytes_unref (bytes); } |