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)
This commit is contained in:
parent
5f34a0f245
commit
8240aba80f
@ -203,6 +203,7 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st
|
|||||||
meta_x11_selection_output_stream_get_instance_private (stream);
|
meta_x11_selection_output_stream_get_instance_private (stream);
|
||||||
Display *xdisplay;
|
Display *xdisplay;
|
||||||
size_t element_size, n_elements;
|
size_t element_size, n_elements;
|
||||||
|
gboolean first_chunk = FALSE;
|
||||||
int error_code;
|
int error_code;
|
||||||
|
|
||||||
g_assert (!priv->delete_pending);
|
g_assert (!priv->delete_pending);
|
||||||
@ -217,6 +218,9 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st
|
|||||||
element_size = get_element_size (priv->format);
|
element_size = get_element_size (priv->format);
|
||||||
n_elements = priv->data->len / element_size;
|
n_elements = priv->data->len / element_size;
|
||||||
|
|
||||||
|
if (!priv->incr)
|
||||||
|
first_chunk = TRUE;
|
||||||
|
|
||||||
if (!g_output_stream_is_closing (G_OUTPUT_STREAM (stream)))
|
if (!g_output_stream_is_closing (G_OUTPUT_STREAM (stream)))
|
||||||
{
|
{
|
||||||
XWindowAttributes attrs;
|
XWindowAttributes attrs;
|
||||||
@ -252,6 +256,7 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st
|
|||||||
g_byte_array_remove_range (priv->data, 0, n_elements * element_size);
|
g_byte_array_remove_range (priv->data, 0, n_elements * element_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (first_chunk)
|
||||||
meta_x11_selection_output_stream_notify_selection (stream);
|
meta_x11_selection_output_stream_notify_selection (stream);
|
||||||
|
|
||||||
priv->delete_pending = TRUE;
|
priv->delete_pending = TRUE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user