mirror of
https://github.com/brl/mutter.git
synced 2024-11-09 23:46:33 -05:00
xwayland: Fix possible cancellation of wayland data sources
If we receive multiple SelectionRequest events, we'll end up replacing the former WaylandSelectionData at a time when an async read has been issued. This will cause the cancellation of the previous operation. But the wayland_data_read() callback will attempt to just remove the current wayland data again on error, which will not be the one we're cancelling, so the new operation will just be cancelled too. Also, cancellation is no longer warned about. As the wayland selection has been replaced at this time, we can just return here. https://bugzilla.gnome.org/show_bug.cgi?id=760745
This commit is contained in:
parent
da28d7a012
commit
a94e640b3f
@ -672,11 +672,17 @@ wayland_data_read_cb (GObject *object,
|
|||||||
res, &error);
|
res, &error);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
|
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||||
|
{
|
||||||
|
g_error_free (error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
g_warning ("Error transfering wayland clipboard to X11: %s\n",
|
g_warning ("Error transfering wayland clipboard to X11: %s\n",
|
||||||
error->message);
|
error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
|
|
||||||
if (data)
|
if (data && data->stream == G_INPUT_STREAM (object))
|
||||||
{
|
{
|
||||||
reply_selection_request (&data->request_event, FALSE);
|
reply_selection_request (&data->request_event, FALSE);
|
||||||
g_clear_pointer (&selection->wayland_selection,
|
g_clear_pointer (&selection->wayland_selection,
|
||||||
|
Loading…
Reference in New Issue
Block a user