VirtualBox

Ignore:
Timestamp:
Feb 9, 2021 12:54:29 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142695
Message:

Shared Clipboard/Transfers: Added ShClTransferCopyCallbacks(). ​bugref:9437

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp

    r87651 r87653  
    20162016
    20172017/**
     2018 * Copies a transfer callback table from source to destination.
     2019 *
     2020 * @param   pCallbacksDst       Callback destination.
     2021 * @param   pCallbacksSrc       Callback source. If set to NULL, the
     2022 *                              destination callback table will be unset.
     2023 */
     2024void ShClTransferCopyCallbacks(PSHCLTRANSFERCALLBACKTABLE pCallbacksDst,
     2025                               PSHCLTRANSFERCALLBACKTABLE pCallbacksSrc)
     2026{
     2027    AssertPtrReturnVoid(pCallbacksDst);
     2028
     2029    if (pCallbacksSrc) /* Set */
     2030    {
     2031#define SET_CALLBACK(a_pfnCallback) \
     2032        if (pCallbacksSrc->a_pfnCallback) \
     2033            pCallbacksDst->a_pfnCallback = pCallbacksSrc->a_pfnCallback
     2034
     2035        SET_CALLBACK(pfnOnInitialize);
     2036        SET_CALLBACK(pfnOnStart);
     2037        SET_CALLBACK(pfnOnCompleted);
     2038        SET_CALLBACK(pfnOnError);
     2039        SET_CALLBACK(pfnOnRegistered);
     2040        SET_CALLBACK(pfnOnUnregistered);
     2041
     2042#undef SET_CALLBACK
     2043
     2044        pCallbacksDst->pvUser = pCallbacksSrc->pvUser;
     2045        pCallbacksDst->cbUser = pCallbacksSrc->cbUser;
     2046    }
     2047    else /* Unset */
     2048        RT_BZERO(pCallbacksDst, sizeof(SHCLTRANSFERCALLBACKTABLE));
     2049}
     2050
     2051/**
    20182052 * Sets or unsets the callback table to be used for a Shared Clipboard transfer.
    20192053 *
    20202054 * @returns VBox status code.
    20212055 * @param   pTransfer           Clipboard transfer to set callbacks for.
    2022  * @param   pCallbacks          Pointer to callback table to set.
     2056 * @param   pCallbacks          Pointer to callback table to set. If set to NULL,
     2057 *                              existing callbacks for this transfer will be unset.
    20232058 */
    20242059void ShClTransferSetCallbacks(PSHCLTRANSFER pTransfer,
     
    20262061{
    20272062    AssertPtrReturnVoid(pTransfer);
    2028     AssertPtrReturnVoid(pCallbacks);
    2029 
    2030     LogFlowFunc(("pCallbacks=%p\n", pCallbacks));
    2031 
    2032 #define SET_CALLBACK(a_pfnCallback)             \
    2033     if (pCallbacks->a_pfnCallback)              \
    2034         pTransfer->Callbacks.a_pfnCallback = pCallbacks->a_pfnCallback
    2035 
    2036     SET_CALLBACK(pfnOnInitialize);
    2037     SET_CALLBACK(pfnOnStart);
    2038     SET_CALLBACK(pfnOnCompleted);
    2039     SET_CALLBACK(pfnOnError);
    2040     SET_CALLBACK(pfnOnRegistered);
    2041     SET_CALLBACK(pfnOnUnregistered);
    2042 
    2043 #undef SET_CALLBACK
    2044 
    2045     pTransfer->Callbacks.pvUser = pCallbacks->pvUser;
    2046     pTransfer->Callbacks.cbUser = pCallbacks->cbUser;
     2063    /* pCallbacks can be NULL. */
     2064
     2065    ShClTransferCopyCallbacks(&pTransfer->Callbacks, pCallbacks);
    20472066}
    20482067
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