[mutter] wayland: Use read_all() when reading wayland selections
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] wayland: Use read_all() when reading wayland selections
- Date: Wed, 7 Feb 2018 18:39:22 +0000 (UTC)
commit 006cdac531fd7de983f7675406187bab5c2b8a3f
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Feb 7 18:24:02 2018 +0100
wayland: Use read_all() when reading wayland selections
Plain input stream read() calls don't provide hard guarantees about
the number of bytes read, but the async method callback sort of
relies on bytes being less than requested only when reaching the
end of the transmitted data. If that happens mid transfer, that
doesn't bode well.
This is actually the behavior of g_input_stream_read_all(), so
switch to using it.
src/wayland/meta-xwayland-selection.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
---
diff --git a/src/wayland/meta-xwayland-selection.c b/src/wayland/meta-xwayland-selection.c
index 24b8cd2c1..8201b014f 100644
--- a/src/wayland/meta-xwayland-selection.c
+++ b/src/wayland/meta-xwayland-selection.c
@@ -689,9 +689,8 @@ wayland_data_read_cb (GObject *object,
GError *error = NULL;
gsize bytes_read;
- bytes_read = g_input_stream_read_finish (G_INPUT_STREAM (object),
- res, &error);
- if (error)
+ if (!g_input_stream_read_all_finish (G_INPUT_STREAM (object),
+ res, &bytes_read, &error))
{
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
{
@@ -762,10 +761,10 @@ wayland_selection_data_read (MetaSelectionBridge *selection)
{
WaylandSelectionData *data = selection->wayland_selection;
- g_input_stream_read_async (data->stream, data->buffer,
- INCR_CHUNK_SIZE, G_PRIORITY_DEFAULT,
- data->cancellable,
- wayland_data_read_cb, selection);
+ g_input_stream_read_all_async (data->stream, data->buffer,
+ INCR_CHUNK_SIZE, G_PRIORITY_DEFAULT,
+ data->cancellable,
+ wayland_data_read_cb, selection);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]