VirtualBox

Ignore:
Timestamp:
May 24, 2019 1:15:59 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
130804
Message:

Shared Clipboard/URI: Update.

Location:
trunk/src/VBox/HostServices/SharedClipboard
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedClipboard/Makefile.kmk

    r78648 r78725  
    5050        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardMetaData.cpp \
    5151        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardPath.cpp \
     52        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardProvider.cpp \
    5253        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardURIList.cpp \
    5354        $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardURIObject.cpp
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-internal.h

    r78683 r78725  
    4242} VBOXCLIPBOARDCLIENTURIOBJCTX, *PVBOXCLIPBOARDCLIENTURIOBJCTX;
    4343
     44struct VBOXCLIPBOARDCLIENTSTATE;
     45
    4446/**
    4547 * Structure for maintaining a single URI transfer.
     
    5052    /** Node for keeping this transfer in a RTList. */
    5153    RTLISTNODE                     Node;
     54    /** Pointer to the client state (parent). */
     55    VBOXCLIPBOARDCLIENTSTATE      *pState;
    5256    /** The transfer's own (local) cache.
    5357     *  The cache itself has a clipboard area ID assigned. */
     
    6872 * This structure needs to be serializable by SSM.
    6973 */
    70 typedef struct _VBOXCLIPBOARDCLIENTSTATE
     74struct VBOXCLIPBOARDCLIENTSTATE
    7175{
    72     struct _VBOXCLIPBOARDCLIENTSTATE *pNext;
    73     struct _VBOXCLIPBOARDCLIENTSTATE *pPrev;
     76    struct VBOXCLIPBOARDCLIENTSTATE *pNext;
     77    struct VBOXCLIPBOARDCLIENTSTATE *pPrev;
    7478
    7579    VBOXCLIPBOARDCONTEXT *pCtx;
     
    106110    uint32_t u32AvailableFormats;
    107111    uint32_t u32RequestedFormat;
    108 } VBOXCLIPBOARDCLIENTSTATE, *PVBOXCLIPBOARDCLIENTSTATE;
     112};
     113typedef struct VBOXCLIPBOARDCLIENTSTATE *PVBOXCLIPBOARDCLIENTSTATE;
    109114
    110115/**
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-uri.cpp

    r78683 r78725  
    107107 * @returns VBox status code.
    108108 * @param   pTransfer           Transfer object to destroy.
    109  * @param   uClientID           Client ID to assign to the transfer object.
    110  */
    111 int vboxClipboardSvcURITransferCreate(PVBOXCLIPBOARDCLIENTURITRANSFER pTransfer, uint32_t uClientID)
     109 * @param   pState              Client state to assign to the transfer object.
     110 */
     111int vboxClipboardSvcURITransferCreate(PVBOXCLIPBOARDCLIENTURITRANSFER pTransfer, PVBOXCLIPBOARDCLIENTSTATE pState)
    112112{
    113113    AssertPtrReturn(pTransfer, VERR_INVALID_POINTER);
    114     RT_NOREF(uClientID);
     114    AssertPtrReturn(pState,    VERR_INVALID_POINTER);
    115115
    116116    int rc = pTransfer->Cache.OpenTemp(SHAREDCLIPBOARDCACHE_FLAGS_NONE);
     
    119119        rc = SharedClipboardMetaDataInit(&pTransfer->Meta);
    120120        if (RT_SUCCESS(rc))
     121        {
    121122            vboxClipboardSvcURIObjCtxInit(&pTransfer->ObjCtx);
     123            if (RT_SUCCESS(rc))
     124            {
     125                pTransfer->pState = pState;
     126            }
     127        }
    122128    }
    123129
     
    164170        rc2 = g_pfnExtension(g_pvExtension, VBOX_CLIPBOARD_EXT_FN_AREA_DETACH, &parms, sizeof(parms));
    165171        AssertRC(rc2);
     172#ifdef LOG_ENABLED
     173        AssertPtr(pTransfer->pState);
     174        LogFlowFunc(("Detached client %RU32 from clipboard area %RU32 with rc=%Rrc\n",
     175                     pTransfer->pState->u32ClientID, uAreaID, rc2));
     176#endif
    166177    }
    167178
     
    273284                     * to keep a reference to it. The host does the actual book keeping / cleanup then. */
    274285                    rc = g_pfnExtension(g_pvExtension, VBOX_CLIPBOARD_EXT_FN_AREA_ATTACH, &parms, sizeof(parms));
     286#ifdef LOG_ENABLED
     287                    AssertPtr(pTransfer->pState);
     288                    LogFlowFunc(("Attached client %RU32 from clipboard area %RU32 with rc=%Rrc\n",
     289                                 pTransfer->pState->u32ClientID, parms.uID, rc));
     290#endif
    275291                    if (RT_SUCCESS(rc))
    276292                    {
     
    285301
    286302                        rc = g_pfnExtension(g_pvExtension, VBOX_CLIPBOARD_EXT_FN_AREA_DETACH, &parms, sizeof(parms));
     303#ifdef LOG_ENABLED
     304                        AssertPtr(pTransfer->pState);
     305                        LogFlowFunc(("Detached client %RU32 from clipboard area %RU32 with rc=%Rrc\n",
     306                                     pTransfer->pState->u32ClientID, parms.uID, rc));
     307#endif
    287308                    }
    288309                }
     
    383404
    384405                            parms.u.fn_register.pvData = pvMeta;
    385                             parms.u.fn_register.cbData = cbMeta;
     406                            parms.u.fn_register.cbData = (uint32_t)cbMeta;
    386407
    387408                            /* As the meta data is now complete, register a new clipboard on the host side. */
    388409                            rc = g_pfnExtension(g_pvExtension, VBOX_CLIPBOARD_EXT_FN_AREA_REGISTER, &parms, sizeof(parms));
     410#ifdef LOG_ENABLED
     411                            AssertPtr(pTransfer->pState);
     412                            LogFlowFunc(("Registered new clipboard area by client %RU32 with rc=%Rrc\n",
     413                                         pTransfer->pState->u32ClientID, rc));
     414#endif
    389415                        }
    390416
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-uri.h

    r78648 r78725  
    2222#endif
    2323
    24 int vboxClipboardSvcURITransferCreate(PVBOXCLIPBOARDCLIENTURITRANSFER pTransfer);
     24int vboxClipboardSvcURITransferCreate(PVBOXCLIPBOARDCLIENTURITRANSFER pTransfer, PVBOXCLIPBOARDCLIENTSTATE pState);
    2525void vboxClipboardSvcURITransferDestroy(PVBOXCLIPBOARDCLIENTURITRANSFER pTransfer);
    2626void vboxClipboardSvcURITransferReset(PVBOXCLIPBOARDCLIENTURITRANSFER pTransfer);
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-utils.cpp

    r78652 r78725  
    2727
    2828
    29 bool VBoxSvcClipboardDataHdrIsValid(PVBOXCLIPBOARDDATAHDR pData)
     29/**
     30 * Returns whether a given clipboard data header is valid or not.
     31 *
     32 * @returns \c true if valid, \c false if not.
     33 * @param   pDataHdr            Clipboard data header to validate.
     34 */
     35bool VBoxSvcClipboardDataHdrIsValid(PVBOXCLIPBOARDDATAHDR pDataHdr)
    3036{
    31     RT_NOREF(pData);
     37    RT_NOREF(pDataHdr);
    3238    return true; /** @todo Implement this. */
    3339}
    3440
    35 bool VBoxSvcClipboardDataChunkIsValid(VBOXCLIPBOARDDATACHUNK pData)
     41/**
     42 * Returns whether a given clipboard data chunk is valid or not.
     43 *
     44 * @returns \c true if valid, \c false if not.
     45 * @param   pDataChunk          Clipboard data chunk to validate.
     46 */
     47bool VBoxSvcClipboardDataChunkIsValid(PVBOXCLIPBOARDDATACHUNK pDataChunk)
    3648{
    37     RT_NOREF(pData);
     49    RT_NOREF(pDataChunk);
    3850    return true; /** @todo Implement this. */
    3951}
    4052
    41 bool VBoxSvcClipboardDirDataIsValid(PVBOXCLIPBOARDDIRDATA pData)
     53/**
     54 * Returns whether given clipboard directory data is valid or not.
     55 *
     56 * @returns \c true if valid, \c false if not.
     57 * @param   pDirData            Clipboard directory data to validate.
     58 */
     59bool VBoxSvcClipboardDirDataIsValid(PVBOXCLIPBOARDDIRDATA pDirData)
    4260{
    43     if (   !pData->cbPath
    44         || pData->cbPath > RTPATH_MAX)
     61    if (   !pDirData->cbPath
     62        || pDirData->cbPath > RTPATH_MAX)
    4563        return false;
    4664
    47     if (!RTStrIsValidEncoding(pData->pszPath))
     65    if (!RTStrIsValidEncoding(pDirData->pszPath))
    4866        return false;
    4967
     
    5169}
    5270
     71/**
     72 * Returns whether a given clipboard file header is valid or not.
     73 *
     74 * @returns \c true if valid, \c false if not.
     75 * @param   pFileHdr            Clipboard file header to validate.
     76 * @param   pDataHdr            Data header to use for validation.
     77 */
    5378bool VBoxSvcClipboardFileHdrIsValid(PVBOXCLIPBOARDFILEHDR pFileHdr, PVBOXCLIPBOARDDATAHDR pDataHdr)
    5479{
     
    6691}
    6792
    68 bool VBoxSvcClipboardFileDataIsValid(PVBOXCLIPBOARDFILEDATA pData, PVBOXCLIPBOARDDATAHDR pDataHdr)
     93/**
     94 * Returns whether given clipboard file data is valid or not.
     95 *
     96 * @returns \c true if valid, \c false if not.
     97 * @param   pFileData           Clipboard file data to validate.
     98 * @param   pDataHdr            Data header to use for validation.
     99 */
     100bool VBoxSvcClipboardFileDataIsValid(PVBOXCLIPBOARDFILEDATA pFileData, PVBOXCLIPBOARDDATAHDR pDataHdr)
    69101{
    70     RT_NOREF(pData, pDataHdr);
     102    RT_NOREF(pFileData, pDataHdr);
    71103    return true;
    72104}
     105
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-win.cpp

    r78625 r78725  
    783783                    void *pvTemp;
    784784                    size_t cbTemp;
    785                     rc = VBoxClipboardWinDropFilesToStringList((DROPFILES *)lp, &pvTemp, &cbTemp);
     785                    rc = VBoxClipboardWinDropFilesToStringList((DROPFILES *)lp, (char **)&pvTemp, &cbTemp);
    786786                    if (RT_SUCCESS(rc))
    787787                    {
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc.cpp

    r78683 r78725  
    9999static uint32_t g_uMode;
    100100
    101 static PFNHGCMSVCEXT g_pfnExtension;
    102 static void *g_pvExtension;
     101PFNHGCMSVCEXT g_pfnExtension;
     102void *g_pvExtension;
    103103
    104104static PVBOXCLIPBOARDCLIENTDATA g_pClientData;
     
    537537                    {
    538538                        VBOXCLIPBOARDEXTPARMS parms;
    539 
     539                        RT_ZERO(parms);
    540540                        parms.u32Format = u32Formats;
    541541
     
    592592                        {
    593593                            VBOXCLIPBOARDEXTPARMS parms;
     594                            RT_ZERO(parms);
    594595
    595596                            parms.u32Format = u32Format;
    596                             parms.u.pvData = pv;
    597                             parms.cbData = cb;
     597                            parms.u.pvData  = pv;
     598                            parms.cbData    = cb;
    598599
    599600                            g_fReadingData = true;
     
    685686                        {
    686687                            VBOXCLIPBOARDEXTPARMS parms;
     688                            RT_ZERO(parms);
    687689
    688690                            parms.u32Format = u32Format;
    689                             parms.u.pvData = pv;
    690                             parms.cbData = cb;
     691                            parms.u.pvData  = pv;
     692                            parms.cbData    = cb;
    691693
    692694                            g_pfnExtension(g_pvExtension, VBOX_CLIPBOARD_EXT_FN_DATA_WRITE, &parms, sizeof (parms));
Note: See TracChangeset for help on using the changeset viewer.

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