[gnome-remote-desktop] clipboard-rdp: Add APIs to lock/unlock the clients clipboard data



commit b7954ce03ff7c0fd9db109dd56823a1604922380
Author: Pascal Nowack <Pascal Nowack gmx de>
Date:   Wed Mar 3 19:54:34 2021 +0100

    clipboard-rdp: Add APIs to lock/unlock the clients clipboard data
    
    For client-to-server file transfer, the locking states are tracked in
    the FUSE implementation (rdp-fuse-clipboard).
    So add APIs to clipboard-rdp, which will then later be used inside the
    FUSE implementation.

 src/grd-clipboard-rdp.c | 34 ++++++++++++++++++++++++++++++++++
 src/grd-clipboard-rdp.h |  6 ++++++
 2 files changed, 40 insertions(+)
---
diff --git a/src/grd-clipboard-rdp.c b/src/grd-clipboard-rdp.c
index 49df9e0..4615565 100644
--- a/src/grd-clipboard-rdp.c
+++ b/src/grd-clipboard-rdp.c
@@ -470,6 +470,40 @@ get_remote_format_data (GrdClipboardRdp *clipboard_rdp,
   return data;
 }
 
+void
+grd_clipboard_rdp_lock_remote_clipboard_data (GrdClipboardRdp *clipboard_rdp,
+                                              uint32_t         clip_data_id)
+{
+  CliprdrServerContext *cliprdr_context = clipboard_rdp->cliprdr_context;
+  CLIPRDR_LOCK_CLIPBOARD_DATA lock_clipboard_data = {0};
+
+  g_debug ("[RDP.CLIPRDR] Locking clients clipboard data with clipDataId %u",
+           clip_data_id);
+
+  lock_clipboard_data.msgType = CB_LOCK_CLIPDATA;
+  lock_clipboard_data.clipDataId = clip_data_id;
+
+  cliprdr_context->ServerLockClipboardData (cliprdr_context,
+                                            &lock_clipboard_data);
+}
+
+void
+grd_clipboard_rdp_unlock_remote_clipboard_data (GrdClipboardRdp *clipboard_rdp,
+                                                uint32_t         clip_data_id)
+{
+  CliprdrServerContext *cliprdr_context = clipboard_rdp->cliprdr_context;
+  CLIPRDR_UNLOCK_CLIPBOARD_DATA unlock_clipboard_data = {0};
+
+  g_debug ("[RDP.CLIPRDR] Unlocking clients clipboard data associated to "
+           "clipDataId %u", clip_data_id);
+
+  unlock_clipboard_data.msgType = CB_UNLOCK_CLIPDATA;
+  unlock_clipboard_data.clipDataId = clip_data_id;
+
+  cliprdr_context->ServerUnlockClipboardData (cliprdr_context,
+                                              &unlock_clipboard_data);
+}
+
 void
 grd_clipboard_rdp_request_remote_file_size_async (GrdClipboardRdp *clipboard_rdp,
                                                   uint32_t         stream_id,
diff --git a/src/grd-clipboard-rdp.h b/src/grd-clipboard-rdp.h
index 8db6c8b..295a4ea 100644
--- a/src/grd-clipboard-rdp.h
+++ b/src/grd-clipboard-rdp.h
@@ -34,6 +34,12 @@ GrdClipboardRdp *grd_clipboard_rdp_new (GrdSessionRdp *session_rdp,
                                         HANDLE         vcm,
                                         HANDLE         stop_event);
 
+void grd_clipboard_rdp_lock_remote_clipboard_data (GrdClipboardRdp *clipboard_rdp,
+                                                   uint32_t         clip_data_id);
+
+void grd_clipboard_rdp_unlock_remote_clipboard_data (GrdClipboardRdp *clipboard_rdp,
+                                                     uint32_t         clip_data_id);
+
 void grd_clipboard_rdp_request_remote_file_size_async (GrdClipboardRdp *clipboard_rdp,
                                                        uint32_t         stream_id,
                                                        uint32_t         list_index,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]