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)