VirtualBox

Changeset 80907 in vbox


Ignore:
Timestamp:
Sep 19, 2019 1:12:34 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133482
Message:

Shared Clipboard/Transfers: Update.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/GuestHost/SharedClipboard-transfers.h

    r80906 r80907  
    919919} SHCLTRANSFERCALLBACKDATA, *PSHCLTRANSFERCALLBACKDATA;
    920920
     921/** Declares a Shared Clipboard transfer callback. */
    921922#define SHCLTRANSFERCALLBACKDECL(a_Ret, a_Name) \
    922923    typedef DECLCALLBACK(a_Ret) RT_CONCAT(FNSHCLCALLBACK, a_Name)(PSHCLTRANSFERCALLBACKDATA pData); \
    923924    typedef RT_CONCAT(FNSHCLCALLBACK, a_Name) RT_CONCAT(*PFNSHCLCALLBACK, a_Name);
    924925
     926/** Declares a Shared Clipboard transfer callback with variable arguments. */
    925927#define SHCLTRANSFERCALLBACKDECL_VA(a_Ret, a_Name, ...) \
    926928    typedef DECLCALLBACK(a_Ret) RT_CONCAT(FNSHCLCALLBACK, a_Name)(PSHCLTRANSFERCALLBACKDATA pData, __VA_ARGS__); \
    927929    typedef RT_CONCAT(FNSHCLCALLBACK, a_Name) RT_CONCAT(*PFNSHCLCALLBACK, a_Name);
    928930
     931/** Declares a Shared Clipboard transfer callback member function. */
    929932#define SHCLTRANSFERCALLBACKMEMBER(a_Name, a_Member) \
    930933    RT_CONCAT(PFNSHCLCALLBACK, a_Name) a_Member;
  • trunk/include/VBox/HostServices/VBoxClipboardSvc.h

    r80886 r80907  
    110110
    111111/** Sends a transfer status to the guest side. */
    112 #define VBOX_SHCL_HOST_MSG_TRANSFER_TRANSFER_STATUS          50
     112#define VBOX_SHCL_HOST_MSG_TRANSFER_STATUS                   50
    113113/** Reads the root list header from the guest. */
    114114#define VBOX_SHCL_HOST_MSG_TRANSFER_ROOT_LIST_HDR_READ       51
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp

    r80905 r80907  
    161161#endif
    162162
     163/**
     164 * Cleanup helper function for transfer callbacks.
     165 *
     166 * @param   pData               Callback data to cleanup.
     167 */
    163168static void vboxClipboardTransferCallbackCleanup(PSHCLTRANSFERCALLBACKDATA pData)
    164169{
     
    194199    if (RT_SUCCESS(rc))
    195200    {
    196         PSHCLTRANSFER pTransfer;
    197         rc = SharedClipboardTransferCreate(&pTransfer);
    198         if (RT_SUCCESS(rc))
    199             rc = SharedClipboardTransferInit(pTransfer, 0 /* uID */,
    200                                              SHCLTRANSFERDIR_WRITE, SHCLSOURCE_LOCAL);
    201         if (RT_SUCCESS(rc))
     201        /* The data data in CF_HDROP format, as the files are locally present and don't need to be
     202         * presented as a IDataObject or IStream. */
     203        HANDLE hClip = hClip = GetClipboardData(CF_HDROP);
     204        if (hClip)
    202205        {
    203             /* The data data in CF_HDROP format, as the files are locally present and don't need to be
    204              * presented as a IDataObject or IStream. */
    205             HANDLE hClip = hClip = GetClipboardData(CF_HDROP);
    206             if (hClip)
     206            HDROP hDrop = (HDROP)GlobalLock(hClip);
     207            if (hDrop)
    207208            {
    208                 HDROP hDrop = (HDROP)GlobalLock(hClip);
    209                 if (hDrop)
     209                char    *papszList = NULL;
     210                uint32_t cbList;
     211                rc = SharedClipboardWinDropFilesToStringList((DROPFILES *)hDrop, &papszList, &cbList);
     212
     213                GlobalUnlock(hClip);
     214
     215                if (RT_SUCCESS(rc))
    210216                {
    211                     char    *papszList = NULL;
    212                     uint32_t cbList;
    213                     rc = SharedClipboardWinDropFilesToStringList((DROPFILES *)hDrop, &papszList, &cbList);
    214 
    215                     GlobalUnlock(hClip);
    216 
    217                     if (RT_SUCCESS(rc))
    218                     {
    219                         rc = SharedClipboardTransferRootsSet(pTransfer,
    220                                                              papszList, cbList + 1 /* Include termination */);
    221                         RTStrFree(papszList);
    222                     }
     217                    rc = SharedClipboardTransferRootsSet(pData->pTransfer,
     218                                                         papszList, cbList + 1 /* Include termination */);
     219                    RTStrFree(papszList);
    223220                }
    224                 else
    225                 {
    226                     hClip = NULL;
    227                 }
     221            }
     222            else
     223            {
     224                hClip = NULL;
    228225            }
    229226        }
  • trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp

    r80905 r80907  
    117117
    118118        LogFlowFunc(("uProtocolVer=%RU32, cbChunkSize=%RU32\n", pCtx->uProtocolVer, pCtx->cbChunkSize));
     119
     120        LogRel(("Shared Clipboard: Client %RU32 connected, using protocol v%RU32 (cbChunkSize=%RU32\n)",
     121                pCtx->uClientID, pCtx->uProtocolVer, pCtx->cbChunkSize));
     122
    119123    }
    120124
     
    491495                       VBOX_SHCL_GUEST_FN_MSG_GET, VBOX_SHCL_CPARMS_TRANSFER_STATUS);
    492496
    493     Msg.uContext.SetUInt32(VBOX_SHCL_HOST_MSG_TRANSFER_TRANSFER_STATUS);
     497    Msg.uContext.SetUInt32(VBOX_SHCL_HOST_MSG_TRANSFER_STATUS);
    494498    Msg.enmDir.SetUInt32(0);
    495499    Msg.enmStatus.SetUInt32(0);
     
    13521356    switch (idMsg)
    13531357    {
    1354         case VBOX_SHCL_HOST_MSG_TRANSFER_TRANSFER_STATUS:
     1358        case VBOX_SHCL_HOST_MSG_TRANSFER_STATUS:
    13551359        {
    13561360            SHCLTRANSFERDIR    enmDir;
     
    13751379                        rc = vbglR3ClipboardTransferStart(pCmdCtx, pTransferCtx, uTransferID,
    13761380                                                          enmDir, enmSource, NULL /* ppTransfer */);
    1377                         if (RT_SUCCESS(rc))
    1378                         {
    1379 
    1380                         }
    13811381                        break;
    13821382                    }
  • trunk/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp

    r80858 r80907  
    829829        RT_CASE_RET_STR(VBOX_SHCL_HOST_MSG_READ_DATA);
    830830        RT_CASE_RET_STR(VBOX_SHCL_HOST_MSG_FORMATS_REPORT);
    831         RT_CASE_RET_STR(VBOX_SHCL_HOST_MSG_TRANSFER_TRANSFER_STATUS);
     831        RT_CASE_RET_STR(VBOX_SHCL_HOST_MSG_TRANSFER_STATUS);
    832832        RT_CASE_RET_STR(VBOX_SHCL_HOST_MSG_TRANSFER_ROOT_LIST_HDR_READ);
    833833        RT_CASE_RET_STR(VBOX_SHCL_HOST_MSG_TRANSFER_ROOT_LIST_HDR_WRITE);
  • trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp

    r80905 r80907  
    834834            }
    835835
     836            RTListNodeRemove(&pInfo->Node);
     837
    836838            RTMemFree(pInfo);
    837 
    838             RTListNodeRemove(&pInfo->Node);
     839            pInfo = NULL;
    839840        }
    840841        else
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-transfers.cpp

    r80905 r80907  
    20542054    /* puEvent is optional. */
    20552055
    2056     PSHCLCLIENTMSG pMsgReadData = sharedClipboardSvcMsgAlloc(VBOX_SHCL_HOST_MSG_TRANSFER_TRANSFER_STATUS,
     2056    PSHCLCLIENTMSG pMsgReadData = sharedClipboardSvcMsgAlloc(VBOX_SHCL_HOST_MSG_TRANSFER_STATUS,
    20572057                                                             VBOX_SHCL_CPARMS_TRANSFER_STATUS);
    20582058    if (!pMsgReadData)
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc.cpp

    r80883 r80907  
    14951495    sharedClipboardSvcClientStateReset(pClientState);
    14961496
    1497     /* Register the client.
    1498      * Note: Do *not* memset the struct, as it contains classes (for caching). */
     1497    /* Register the client. */
    14991498    pClientState->uClientID    = uClientID;
    1500     pClientState->uProtocolVer = 0;
    15011499
    15021500    return VINF_SUCCESS;
     
    15261524{
    15271525    LogFlowFuncEnter();
     1526
     1527    pClientState->uProtocolVer = 0;
     1528    pClientState->cbChunkSize  = _64K; /** Make this configurable. */
    15281529
    15291530#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette