mirror of
https://github.com/brl/mutter.git
synced 2024-11-24 17:10:40 -05:00
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
This commit is contained in:
parent
a32cb7133b
commit
e95c365cf0
@ -246,8 +246,6 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st
|
|||||||
priv->data->data,
|
priv->data->data,
|
||||||
n_elements);
|
n_elements);
|
||||||
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 (priv->data->len == 0)
|
|
||||||
priv->flush_requested = FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_x11_selection_output_stream_notify_selection (stream);
|
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];
|
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));
|
XGetErrorText (xdisplay, error_code, error_str, sizeof (error_str));
|
||||||
g_task_return_new_error (priv->pending_task,
|
g_task_return_new_error (priv->pending_task,
|
||||||
G_IO_ERROR,
|
G_IO_ERROR,
|
||||||
@ -269,12 +271,12 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st
|
|||||||
"Failed to flush selection output stream: %s",
|
"Failed to flush selection output stream: %s",
|
||||||
error_str);
|
error_str);
|
||||||
g_clear_object (&priv->pending_task);
|
g_clear_object (&priv->pending_task);
|
||||||
priv->pipe_error = TRUE;
|
|
||||||
}
|
}
|
||||||
else if (priv->pending_task)
|
else if (priv->pending_task)
|
||||||
{
|
{
|
||||||
size_t result;
|
size_t result;
|
||||||
|
|
||||||
|
priv->flush_requested = FALSE;
|
||||||
result = GPOINTER_TO_SIZE (g_task_get_task_data (priv->pending_task));
|
result = GPOINTER_TO_SIZE (g_task_get_task_data (priv->pending_task));
|
||||||
g_task_return_int (priv->pending_task, result);
|
g_task_return_int (priv->pending_task, result);
|
||||||
g_clear_object (&priv->pending_task);
|
g_clear_object (&priv->pending_task);
|
||||||
|
Loading…
Reference in New Issue
Block a user