Changeset 100541 in vbox for trunk/src/VBox/Additions/WINNT
- Timestamp:
- Jul 12, 2023 10:55:48 AM (20 months ago)
- svn:sync-xref-src-repo-rev:
- 158355
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp
r100450 r100541 170 170 171 171 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 172 173 172 /** 174 * @copydoc SharedClipboardWinDataObject::CALLBACKS::pfnTransferStart 173 * @copydoc SharedClipboardWinDataObject::CALLBACKS::pfnTransferBegin 174 * 175 * Called by SharedClipboardWinDataObject::GetData() when the user wants to paste data. 176 * This then requests a new transfer on the host. 175 177 * 176 178 * @thread Clipboard main thread. 177 179 */ 178 static DECLCALLBACK(int) vbtrShClDataObjectTransfer StartCallback(SharedClipboardWinDataObject::PCALLBACKCTX pCbCtx)180 static DECLCALLBACK(int) vbtrShClDataObjectTransferBeginCallback(SharedClipboardWinDataObject::PCALLBACKCTX pCbCtx) 179 181 { 180 182 LogFlowFuncEnter(); … … 185 187 int rc = VbglR3ClipboardTransferRequest(&pCtx->CmdCtx); 186 188 189 LogFlowFuncLeaveRC(rc); 190 return rc; 191 } 192 193 /** 194 * @copydoc SharedClipboardWinDataObject::CALLBACKS::pfnTransferEnd 195 * 196 * Called by SharedClipboardWinDataObject when the assigned transfer has been ended. 197 * 198 * @thread Clipboard main thread. 199 */ 200 static DECLCALLBACK(int) vbtrShClDataObjectTransferEndCallback(SharedClipboardWinDataObject::PCALLBACKCTX pCbCtx, 201 PSHCLTRANSFER pTransfer, int rcTransfer) 202 { 203 LogFlowFuncEnter(); 204 205 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pCbCtx->pvUser; 206 AssertPtr(pCtx); 207 208 SHCLTRANSFERSTATUS enmSts; 209 210 switch (rcTransfer) 211 { 212 case VERR_CANCELLED: 213 enmSts = SHCLTRANSFERSTATUS_CANCELED; 214 break; 215 216 default: 217 enmSts = RT_SUCCESS(rcTransfer) 218 ? SHCLTRANSFERSTATUS_UNINITIALIZED : SHCLTRANSFERSTATUS_ERROR; 219 break; 220 } 221 222 int rc = VbglR3ClipboardTransferStatusReply(&pCtx->CmdCtx, pTransfer, enmSts, 223 enmSts == SHCLTRANSFERSTATUS_ERROR ? rcTransfer : VINF_SUCCESS); 187 224 LogFlowFuncLeaveRC(rc); 188 225 return rc; … … 278 315 279 316 /** 280 * Cleanup helper function for transfer callbacks.281 *282 * @param pTransferCtx Pointer to transfer context that the transfer contains.283 * @param pTransfer Pointer to transfer to cleanup.284 */285 static void vbtrShClTransferCallbackCleanup(PSHCLTRANSFERCTX pTransferCtx, PSHCLTRANSFER pTransfer)286 {287 LogFlowFuncEnter();288 289 if (!pTransferCtx || !pTransfer)290 return;291 292 if (pTransfer->pvUser) /* SharedClipboardWinTransferCtx */293 {294 delete pTransfer->pvUser;295 pTransfer->pvUser = NULL;296 }297 298 int rc2 = ShClTransferCtxUnregisterById(pTransferCtx, pTransfer->State.uID);299 AssertRC(rc2);300 301 ShClTransferDestroy(pTransfer);302 303 RTMemFree(pTransfer);304 pTransfer = NULL;305 }306 307 /**308 317 * Worker for a reading clipboard from the host. 309 318 * … … 384 393 AssertPtr(pCtx); 385 394 386 LogRel2(("Shared Clipboard: Transfer to destination %s\n", 387 rcCompletion == VERR_CANCELLED ? "canceled" : "complete")); 388 389 vbtrShClTransferCallbackCleanup(&pCtx->TransferCtx, pCbCtx->pTransfer); 395 LogRel2(("Shared Clipboard: Transfer %RU16 %s\n", 396 ShClTransferGetID(pCbCtx->pTransfer), rcCompletion == VERR_CANCELLED ? "canceled" : "complete")); 390 397 } 391 398 … … 396 403 AssertPtr(pCtx); 397 404 398 LogRel(("Shared Clipboard: Transfer to destination failed with %Rrc\n", rcError)); 399 400 vbtrShClTransferCallbackCleanup(&pCtx->TransferCtx, pCbCtx->pTransfer); 405 LogRel(("Shared Clipboard: Transfer %RU16 failed with %Rrc\n", ShClTransferGetID(pCbCtx->pTransfer), rcError)); 401 406 } 402 407 … … 745 750 SharedClipboardWinDataObject::CALLBACKS Callbacks; 746 751 RT_ZERO(Callbacks); 747 Callbacks.pfnTransferStart = vbtrShClDataObjectTransferStartCallback; 752 Callbacks.pfnTransferBegin = vbtrShClDataObjectTransferBeginCallback; 753 Callbacks.pfnTransferEnd = vbtrShClDataObjectTransferEndCallback; 748 754 749 755 rc = SharedClipboardWinTransferCreateAndSetDataObject(pWinCtx, pCtx, &Callbacks);
Note:
See TracChangeset
for help on using the changeset viewer.