From 622e8c348f019527034599a2fa3c7ed8f0be3971 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sat, 11 Apr 2020 17:05:24 +0200 Subject: [PATCH] x11: Only send SelectionNotify on first INCR chunk This should only be sent if the selection can be sent at once, or if we are right about to notify on the first chunk of an INCR transfer. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1198 (cherry picked from commit 7c939d78c2b20989412a710665cbbea6b12ff8dd) --- src/x11/meta-x11-selection-output-stream.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/x11/meta-x11-selection-output-stream.c b/src/x11/meta-x11-selection-output-stream.c index 7ae1e1acc..f7c27cc09 100644 --- a/src/x11/meta-x11-selection-output-stream.c +++ b/src/x11/meta-x11-selection-output-stream.c @@ -199,6 +199,7 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st meta_x11_selection_output_stream_get_instance_private (stream); Display *xdisplay; size_t element_size, n_elements; + gboolean first_chunk = FALSE; int error_code; g_assert (!priv->delete_pending); @@ -213,6 +214,9 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st element_size = get_element_size (priv->format); n_elements = priv->data->len / element_size; + if (!priv->incr) + first_chunk = TRUE; + if (!g_output_stream_is_closing (G_OUTPUT_STREAM (stream))) { XWindowAttributes attrs; @@ -248,7 +252,8 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st g_byte_array_remove_range (priv->data, 0, n_elements * element_size); } - meta_x11_selection_output_stream_notify_selection (stream); + if (first_chunk) + meta_x11_selection_output_stream_notify_selection (stream); priv->delete_pending = TRUE; g_cond_broadcast (&priv->cond);