From 03a72a56dbd35550992a4dfb538d1565048e4737 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Thu, 22 May 2025 14:44:48 +0200 Subject: [PATCH] [client,common] lock clipboard on update --- client/X11/xf_cliprdr.c | 4 ++++ client/common/client_cliprdr_file.c | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/client/X11/xf_cliprdr.c b/client/X11/xf_cliprdr.c index cbbf75935..f23a38f66 100644 --- a/client/X11/xf_cliprdr.c +++ b/client/X11/xf_cliprdr.c @@ -2039,7 +2039,9 @@ static UINT xf_cliprdr_server_format_list(CliprdrClientContext* context, } } + ClipboardLock(clipboard->system); ret = cliprdr_file_context_notify_new_server_format_list(clipboard->file); + ClipboardUnlock(clipboard->system); if (ret) goto out; @@ -2685,7 +2687,9 @@ void xf_cliprdr_uninit(xfContext* xfc, CliprdrClientContext* cliprdr) if (xfc->clipboard) { + ClipboardLock(xfc->clipboard->system); cliprdr_file_context_uninit(xfc->clipboard->file, cliprdr); + ClipboardUnlock(xfc->clipboard->system); xfc->clipboard->context = NULL; } } diff --git a/client/common/client_cliprdr_file.c b/client/common/client_cliprdr_file.c index 11b9b55cb..93a6b2651 100644 --- a/client/common/client_cliprdr_file.c +++ b/client/common/client_cliprdr_file.c @@ -585,6 +585,7 @@ static UINT prepare_clip_data_entry_without_id(CliprdrFileContext* file_context) UINT cliprdr_file_context_notify_new_server_format_list(CliprdrFileContext* file_context) { + UINT rc = CHANNEL_RC_OK; WINPR_ASSERT(file_context); WINPR_ASSERT(file_context->context); @@ -594,12 +595,11 @@ UINT cliprdr_file_context_notify_new_server_format_list(CliprdrFileContext* file clear_cdi_entries(file_context); if (does_server_support_clipdata_locking(file_context)) - return prepare_clip_data_entry_with_id(file_context); + rc = prepare_clip_data_entry_with_id(file_context); else - return prepare_clip_data_entry_without_id(file_context); -#else - return CHANNEL_RC_OK; + rc = prepare_clip_data_entry_without_id(file_context); #endif + return rc; } UINT cliprdr_file_context_notify_new_client_format_list(CliprdrFileContext* file_context)