From e95c365cf01837862f87dea90190b47392ee7f67 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sat, 11 Apr 2020 16:49:15 +0200 Subject: [PATCH] x11: Unset pending flush flag right before notifying on task Together with some other state. We can do this altogether on task notification, instead of lost somewhere in this function flow. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1198 --- src/x11/meta-x11-selection-output-stream.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/x11/meta-x11-selection-output-stream.c b/src/x11/meta-x11-selection-output-stream.c index 9a25d5fc6..377bdb801 100644 --- a/src/x11/meta-x11-selection-output-stream.c +++ b/src/x11/meta-x11-selection-output-stream.c @@ -246,8 +246,6 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st priv->data->data, n_elements); g_byte_array_remove_range (priv->data, 0, n_elements * element_size); - if (priv->data->len == 0) - priv->flush_requested = FALSE; } meta_x11_selection_output_stream_notify_selection (stream); @@ -262,6 +260,10 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st { char error_str[100]; + priv->flush_requested = FALSE; + priv->delete_pending = FALSE; + priv->pipe_error = TRUE; + XGetErrorText (xdisplay, error_code, error_str, sizeof (error_str)); g_task_return_new_error (priv->pending_task, G_IO_ERROR, @@ -269,12 +271,12 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st "Failed to flush selection output stream: %s", error_str); g_clear_object (&priv->pending_task); - priv->pipe_error = TRUE; } else if (priv->pending_task) { size_t result; + priv->flush_requested = FALSE; result = GPOINTER_TO_SIZE (g_task_get_task_data (priv->pending_task)); g_task_return_int (priv->pending_task, result); g_clear_object (&priv->pending_task);