From 18cc32454337fe6a6300ec1e5428a4aa7baef547 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Mon, 1 Mar 2021 15:46:35 +0100 Subject: [PATCH] Drop other selection on ownership change Otherwise we might end up owners of something we cannot deliver data on, which can hang applications. --- unix/xserver/hw/vnc/vncSelection.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/unix/xserver/hw/vnc/vncSelection.c b/unix/xserver/hw/vnc/vncSelection.c index 5191bb94..a1af467a 100644 --- a/unix/xserver/hw/vnc/vncSelection.c +++ b/unix/xserver/hw/vnc/vncSelection.c @@ -608,6 +608,13 @@ static void vncSelectionCallback(CallbackListPtr *callbacks, LOG_DEBUG("Selection owner change for %s", NameForAtom(info->selection->selection)); + /* + * If we're the previous owner of this selection, then we're also the + * owner of _the other_ selection. Make sure we drop all ownerships so + * we either own both selections or nonw. + */ + DeleteWindowFromAnySelections(pWindow); + if ((info->selection->selection != xaPRIMARY) && (info->selection->selection != xaCLIPBOARD)) return; -- 2.39.5