VirtualBox

Changeset 100522 in vbox for trunk


Ignore:
Timestamp:
Jul 11, 2023 4:52:03 PM (22 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158325
Message:

Shared Clipboard: Resolved a @todo: Removed SHCLOBJHANDLEINFO and only use SHCLTRANSFEROBJ instead, as both structures almost were the same. bugref:9437

Location:
trunk
Files:
3 edited

Legend:

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

    r100468 r100522  
    519519
    520520/**
    521  * Structure for a Shared Clipboard transfer object.
    522  */
    523 typedef struct _SHCLTRANSFEROBJ
    524 {
    525     /** Handle of the object. */
    526     SHCLOBJHANDLE        uHandle;
    527     /** Absolute (local) path of the object. Source-style path. */
    528     char                *pszPathAbs;
    529     /** Object information. */
    530     SHCLFSOBJINFO        objInfo;
    531     /** Object type. */
    532     SHCLSOURCE           enmSource;
    533     /** Current state. */
    534     SHCLTRANSFEROBJSTATE State;
    535 } SHCLTRANSFEROBJ;
    536 /** Pointer to a Shared Clipboard transfer object. */
    537 typedef SHCLTRANSFEROBJ *PSHCLTRANSFEROBJ;
    538 
    539 /**
    540521 * Enumeration for specifying a Shared Clipboard object type.
    541522 */
     
    553534    SHCLOBJTYPE_32BIT_SIZE_HACK = 0x7fffffff
    554535} SHCLOBJTYPE;
     536
     537/**
     538 * Structure for a single Shared Clipboard transfer object.
     539 */
     540typedef struct _SHCLTRANSFEROBJ
     541{
     542    /** The list node. */
     543    RTLISTNODE           Node;
     544    /** Handle of the object. */
     545    SHCLOBJHANDLE        hObj;
     546    /** Absolute (local) path of the object. Source-style path. */
     547    char                *pszPathLocalAbs;
     548    /** Object file system information. */
     549    SHCLFSOBJINFO        objInfo;
     550    /** Source the object originates from. */
     551    SHCLSOURCE           enmSource;
     552    /** Current state. */
     553    SHCLTRANSFEROBJSTATE State;
     554    /** Type of object handle. */
     555    SHCLOBJTYPE          enmType;
     556    /** Data union, based on \a enmType. */
     557    union
     558    {
     559        /** Local data. */
     560        struct
     561        {
     562            union
     563            {
     564                RTDIR  hDir;
     565                RTFILE hFile;
     566            };
     567        } Local;
     568    } u;
     569} SHCLTRANSFEROBJ;
     570/** Pointer to a Shared Clipboard transfer object. */
     571typedef SHCLTRANSFEROBJ *PSHCLTRANSFEROBJ;
    555572
    556573/**
     
    586603
    587604/**
    588  * Structure for keeping transfer object handle information.
    589  * This is using to map own (local) handles to the underlying file system.
    590  */
    591 typedef struct _SHCLOBJHANDLEINFO
    592 {
    593     /** The list node. */
    594     RTLISTNODE     Node;
    595     /** The object's handle. */
    596     SHCLOBJHANDLE  hObj;
    597     /** Type of object handle. */
    598     SHCLOBJTYPE    enmType;
    599     /** Absolute local path of the object. */
    600     char          *pszPathLocalAbs;
    601     /** Data union, based on \a enmType. */
    602     union
    603     {
    604         /** Local data. */
    605         struct
    606         {
    607             union
    608             {
    609                 RTDIR  hDir;
    610                 RTFILE hFile;
    611             };
    612         } Local;
    613     } u;
    614 } SHCLOBJHANDLEINFO;
    615 /** Pointer to a Shared Clipboard transfer object handle. */
    616 typedef SHCLOBJHANDLEINFO *PSHCLOBJHANDLEINFO;
    617 
    618 /**
    619605 * Structure for maintaining an Shared Clipboard transfer state.
    620606 * Everything in here will be part of a saved state (later).
     
    853839    DECLCALLBACKMEMBER(void,  pfnOnStarted,(PSHCLTRANSFERCALLBACKCTX pCbCtx));
    854840    /**
    855      * Called when the transfer has been complete.
     841     * Called when the transfer has been completed.
    856842     *
    857843     * @param   pCbCtx              Pointer to callback context to use.
     
    11061092bool ShClTransferObjCtxIsValid(PSHCLCLIENTTRANSFEROBJCTX pObjCtx);
    11071093
    1108 int ShClTransferObjHandleInfoInit(PSHCLOBJHANDLEINFO pInfo);
    1109 void ShClTransferObjHandleInfoDestroy(PSHCLOBJHANDLEINFO pInfo);
     1094int ShClTransferObjInit(PSHCLTRANSFEROBJ pObj);
     1095void ShClTransferObjDestroy(PSHCLTRANSFEROBJ pObj);
    11101096
    11111097int ShClTransferObjOpenParmsInit(PSHCLOBJOPENCREATEPARMS pParms);
     
    11181104int ShClTransferObjRead(PSHCLTRANSFER pTransfer, SHCLOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf, uint32_t fFlags, uint32_t *pcbRead);
    11191105int ShClTransferObjWrite(PSHCLTRANSFER pTransfer, SHCLOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf, uint32_t fFlags, uint32_t *pcbWritten);
    1120 PSHCLOBJHANDLEINFO ShClTransferObjGet(PSHCLTRANSFER pTransfer, SHCLOBJHANDLE hObj);
     1106PSHCLTRANSFEROBJ ShClTransferObjGet(PSHCLTRANSFER pTransfer, SHCLOBJHANDLE hObj);
    11211107
    11221108PSHCLOBJDATACHUNK ShClTransferObjDataChunkDup(PSHCLOBJDATACHUNK pDataChunk);
  • TabularUnified trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers-provider-local.cpp

    r100467 r100522  
    555555    AssertPtr(pTransfer);
    556556
    557     PSHCLOBJHANDLEINFO pInfo = (PSHCLOBJHANDLEINFO)RTMemAllocZ(sizeof(SHCLOBJHANDLEINFO));
     557    PSHCLTRANSFEROBJ pInfo = (PSHCLTRANSFEROBJ)RTMemAllocZ(sizeof(SHCLTRANSFEROBJ));
    558558    if (pInfo)
    559559    {
    560         rc = ShClTransferObjHandleInfoInit(pInfo);
     560        rc = ShClTransferObjInit(pInfo);
    561561        if (RT_SUCCESS(rc))
    562562        {
     
    592592        else
    593593        {
    594             ShClTransferObjHandleInfoDestroy(pInfo);
     594            ShClTransferObjDestroy(pInfo);
    595595            RTMemFree(pInfo);
    596596        }
     
    613613    AssertPtr(pTransfer);
    614614
    615     PSHCLOBJHANDLEINFO pInfo = ShClTransferObjGet(pTransfer, hObj);
     615    PSHCLTRANSFEROBJ pInfo = ShClTransferObjGet(pTransfer, hObj);
    616616    if (pInfo)
    617617    {
     
    656656        pTransfer->cObjHandles--;
    657657
    658         ShClTransferObjHandleInfoDestroy(pInfo);
     658        ShClTransferObjDestroy(pInfo);
    659659
    660660        RTMemFree(pInfo);
     
    682682    AssertPtr(pTransfer);
    683683
    684     PSHCLOBJHANDLEINFO pInfo = ShClTransferObjGet(pTransfer, hObj);
     684    PSHCLTRANSFEROBJ pInfo = ShClTransferObjGet(pTransfer, hObj);
    685685    if (pInfo)
    686686    {
     
    725725    AssertPtr(pTransfer);
    726726
    727     PSHCLOBJHANDLEINFO pInfo = ShClTransferObjGet(pTransfer, hObj);
     727    PSHCLTRANSFEROBJ pInfo = ShClTransferObjGet(pTransfer, hObj);
    728728    if (pInfo)
    729729    {
  • TabularUnified trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp

    r100484 r100522  
    729729
    730730/**
    731  * Initializes an object handle info structure.
    732  *
    733  * @returns VBox status code.
    734  * @param   pInfo               Object handle info structure to initialize.
    735  */
    736 int ShClTransferObjHandleInfoInit(PSHCLOBJHANDLEINFO pInfo)
    737 {
    738     AssertPtrReturn(pInfo, VERR_INVALID_POINTER);
    739 
    740     pInfo->hObj    = NIL_SHCLOBJHANDLE;
    741     pInfo->enmType = SHCLOBJTYPE_INVALID;
    742 
    743     pInfo->pszPathLocalAbs = NULL;
    744 
    745     RT_ZERO(pInfo->u);
     731 * Initializes a transfer object structure.
     732 *
     733 * @returns VBox status code.
     734 * @param   pObj                Object structure to initialize.
     735 */
     736int ShClTransferObjInit(PSHCLTRANSFEROBJ pObj)
     737{
     738    AssertPtrReturn(pObj, VERR_INVALID_POINTER);
     739
     740    pObj->hObj    = NIL_SHCLOBJHANDLE;
     741    pObj->enmType = SHCLOBJTYPE_INVALID;
     742
     743    pObj->pszPathLocalAbs = NULL;
     744
     745    RT_ZERO(pObj->u);
    746746
    747747    return VINF_SUCCESS;
     
    749749
    750750/**
    751  * Destroys an object handle info structure.
    752  *
    753  * @param   pInfo               Object handle info structure to destroy.
    754  */
    755 void ShClTransferObjHandleInfoDestroy(PSHCLOBJHANDLEINFO pInfo)
    756 {
    757     if (!pInfo)
     751 * Destroys a transfer object structure.
     752 *
     753 * @param   pObj                Object structure to destroy.
     754 */
     755void ShClTransferObjDestroy(PSHCLTRANSFEROBJ pObj)
     756{
     757    if (!pObj)
    758758        return;
    759759
    760     if (pInfo->pszPathLocalAbs)
    761     {
    762         RTStrFree(pInfo->pszPathLocalAbs);
    763         pInfo->pszPathLocalAbs = NULL;
     760    if (pObj->pszPathLocalAbs)
     761    {
     762        RTStrFree(pObj->pszPathLocalAbs);
     763        pObj->pszPathLocalAbs = NULL;
    764764    }
    765765}
     
    841841
    842842/**
    843  * Returns a specific object handle info of a transfer.
    844  *
    845  * @returns Pointer to object handle info if found, or NULL if not found.
    846  * @param   pTransfer           Clipboard transfer to get object handle info from.
     843 * Returns a specific transfer object of a transfer.
     844 *
     845 * @returns Pointer to transfer object if found, or NULL if not found.
     846 * @param   pTransfer           Clipboard transfer to get transfer object from.
    847847 * @param   hObj                Object handle of the object to get handle info for.
    848848 */
    849 PSHCLOBJHANDLEINFO ShClTransferObjGet(PSHCLTRANSFER pTransfer, SHCLOBJHANDLE hObj)
    850 {
    851     PSHCLOBJHANDLEINFO pIt;
    852     RTListForEach(&pTransfer->lstObj, pIt, SHCLOBJHANDLEINFO, Node) /** @todo Slooow ...but works for now. */
     849PSHCLTRANSFEROBJ ShClTransferObjGet(PSHCLTRANSFER pTransfer, SHCLOBJHANDLE hObj)
     850{
     851    PSHCLTRANSFEROBJ pIt;
     852    RTListForEach(&pTransfer->lstObj, pIt, SHCLTRANSFEROBJ, Node) /** @todo Slooow ...but works for now. */
    853853    {
    854854        if (pIt->hObj == hObj)
     
    13901390
    13911391/**
    1392  * Returns the current transfer object of a transfer list.
     1392 * Returns the a transfer object of a transfer list.
    13931393 *
    13941394 * Currently not implemented and wil return NULL.
     
    16651665    }
    16661666
    1667     PSHCLOBJHANDLEINFO pItObj, pItObjNext;
    1668     RTListForEachSafe(&pTransfer->lstObj, pItObj, pItObjNext, SHCLOBJHANDLEINFO, Node)
    1669     {
    1670         ShClTransferObjHandleInfoDestroy(pItObj);
     1667    PSHCLTRANSFEROBJ pItObj, pItObjNext;
     1668    RTListForEachSafe(&pTransfer->lstObj, pItObj, pItObjNext, SHCLTRANSFEROBJ, Node)
     1669    {
     1670        ShClTransferObjDestroy(pItObj);
    16711671
    16721672        RTListNodeRemove(&pItObj->Node);
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