Changeset 87611 in vbox for trunk/src/VBox/Additions
- Timestamp:
- Feb 4, 2021 4:31:28 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 142646
- Location:
- trunk/src/VBox/Additions
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp
r87452 r87611 97 97 * Cleanup helper function for transfer callbacks. 98 98 * 99 * @param pData Callback data to cleanup. 99 * @param pTransferCtx Pointer to transfer context that the transfer contains. 100 * @param pTransfer Pointer to transfer to cleanup. 100 101 */ 101 static void vboxClipboardTransferCallbackCleanup(PSHCLT XPROVIDERCTX pCtx)102 static void vboxClipboardTransferCallbackCleanup(PSHCLTRANSFERCTX pTransferCtx, PSHCLTRANSFER pTransfer) 102 103 { 103 104 LogFlowFuncEnter(); 104 105 105 PSHCLTRANSFERCTX pCtx = (PSHCLTRANSFERCTX)pData->pvUser; 106 AssertPtr(pCtx); 107 108 PSHCLTRANSFER pTransfer = pData->pTransfer; 109 AssertPtr(pTransfer); 106 if (!pTransferCtx || !pTransfer) 107 return; 110 108 111 109 if (pTransfer->pvUser) /* SharedClipboardWinTransferCtx */ … … 115 113 } 116 114 117 int rc2 = ShClTransferCtxTransferUnregister(p Ctx, pTransfer->State.uID);115 int rc2 = ShClTransferCtxTransferUnregister(pTransferCtx, pTransfer->State.uID); 118 116 AssertRC(rc2); 119 117 … … 124 122 } 125 123 126 static DECLCALLBACK(int) vboxClipboardOnTransferInitCallback(PSHCLTXPROVIDERCTX pCtx) 127 { 128 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser; 124 /** @copydoc SHCLTRANSFERCALLBACKTABLE::pfnOnInitialize */ 125 static DECLCALLBACK(int) vboxClipboardOnTransferInitCallback(PSHCLTRANSFERCALLBACKCTX pCbCtx) 126 { 127 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pCbCtx->pvUser; 129 128 AssertPtr(pCtx); 130 129 131 130 LogFlowFunc(("pCtx=%p\n", pCtx)); 132 131 133 RT_NOREF(p Data, pCtx);132 RT_NOREF(pCtx); 134 133 135 134 return VINF_SUCCESS; 136 135 } 137 136 138 static DECLCALLBACK(int) vboxClipboardOnTransferStartCallback(PSHCLTXPROVIDERCTX pCtx) 139 { 140 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser; 137 /** @copydoc SHCLTRANSFERCALLBACKTABLE::pfnOnStart */ 138 static DECLCALLBACK(int) vboxClipboardOnTransferStartCallback(PSHCLTRANSFERCALLBACKCTX pCbCtx) 139 { 140 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pCbCtx->pvUser; 141 141 AssertPtr(pCtx); 142 Assert(pData->cbUser == sizeof(SHCLCONTEXT)); 143 144 PSHCLTRANSFER pTransfer = pData->pTransfer; 142 143 PSHCLTRANSFER pTransfer = pCbCtx->pTransfer; 145 144 AssertPtr(pTransfer); 146 145 … … 192 191 } 193 192 194 static DECLCALLBACK(void) vboxClipboardOnTransferCompleteCallback(PSHCLTXPROVIDERCTX pCtx, int rc) 195 { 196 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser; 193 /** @copydoc SHCLTRANSFERCALLBACKTABLE::pfnOnCompleted */ 194 static DECLCALLBACK(void) vboxClipboardOnTransferCompletedCallback(PSHCLTRANSFERCALLBACKCTX pCbCtx, int rcCompletion) 195 { 196 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pCbCtx->pvUser; 197 197 AssertPtr(pCtx); 198 198 199 RT_NOREF(pCtx, rc); 200 201 LogFlowFunc(("pCtx=%p, rc=%Rrc\n", pCtx, rc)); 202 203 LogRel2(("Shared Clipboard: Transfer to destination complete\n")); 204 205 vboxClipboardTransferCallbackCleanup(pData); 206 } 207 208 static DECLCALLBACK(void) vboxClipboardOnTransferErrorCallback(PSHCLTXPROVIDERCTX pCtx, int rc) 209 { 210 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser; 199 LogRel2(("Shared Clipboard: Transfer to destination %s\n", 200 rcCompletion == VERR_CANCELLED ? "canceled" : "complete")); 201 202 vboxClipboardTransferCallbackCleanup(&pCtx->TransferCtx, pCbCtx->pTransfer); 203 } 204 205 /** @copydoc SHCLTRANSFERCALLBACKTABLE::pfnOnError */ 206 static DECLCALLBACK(void) vboxClipboardOnTransferErrorCallback(PSHCLTRANSFERCALLBACKCTX pCbCtx, int rcError) 207 { 208 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pCbCtx->pvUser; 211 209 AssertPtr(pCtx); 212 210 213 RT_NOREF(pCtx, rc); 214 215 LogFlowFunc(("pCtx=%p, rc=%Rrc\n", pCtx, rc)); 216 217 LogRel(("Shared Clipboard: Transfer to destination failed with %Rrc\n", rc)); 218 219 vboxClipboardTransferCallbackCleanup(pData); 211 LogRel(("Shared Clipboard: Transfer to destination failed with %Rrc\n", rcError)); 212 213 vboxClipboardTransferCallbackCleanup(&pCtx->TransferCtx, pCbCtx->pTransfer); 220 214 } 221 215 … … 883 877 884 878 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 885 /* Install callbacks. */ 879 /* 880 * Set callbacks. 881 * Those will be registered within VbglR3 when a new transfer gets initialized. 882 */ 886 883 RT_ZERO(pCtx->CmdCtx.Transfers.Callbacks); 887 884 … … 889 886 pCtx->CmdCtx.Transfers.Callbacks.cbUser = sizeof(SHCLCONTEXT); 890 887 891 pCtx->CmdCtx.Transfers.Callbacks.pfn TransferInitialize = vboxClipboardOnTransferInitCallback;892 pCtx->CmdCtx.Transfers.Callbacks.pfn TransferStart = vboxClipboardOnTransferStartCallback;893 pCtx->CmdCtx.Transfers.Callbacks.pfn TransferComplete = vboxClipboardOnTransferCompleteCallback;894 pCtx->CmdCtx.Transfers.Callbacks.pfn TransferError = vboxClipboardOnTransferErrorCallback;888 pCtx->CmdCtx.Transfers.Callbacks.pfnOnInitialize = vboxClipboardOnTransferInitCallback; 889 pCtx->CmdCtx.Transfers.Callbacks.pfnOnStart = vboxClipboardOnTransferStartCallback; 890 pCtx->CmdCtx.Transfers.Callbacks.pfnOnCompleted = vboxClipboardOnTransferCompletedCallback; 891 pCtx->CmdCtx.Transfers.Callbacks.pfnOnError = vboxClipboardOnTransferErrorCallback; 895 892 #endif 896 893 -
trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp
r87452 r87611 1803 1803 if (RT_SUCCESS(rc)) 1804 1804 { 1805 ShClTransferSetCallbacks(pTransfer, &pCmdCtx->Transfers.Callbacks); 1806 1805 1807 rc = ShClTransferInit(pTransfer, enmDir, enmSource); 1806 1808 if (RT_SUCCESS(rc))
Note:
See TracChangeset
for help on using the changeset viewer.