Changeset 100394 in vbox for trunk/src/VBox/HostServices
- Timestamp:
- Jul 5, 2023 4:21:48 PM (20 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-win.cpp
r100381 r100394 252 252 PSHCLTXPROVIDERIFACE pIface = &pClient->Transfers.Provider.Interface; 253 253 254 pClient->Transfers.Provider.enmSource = pClient->State.enmSource; 255 pClient->Transfers.Provider.pvUser = pClient; 256 257 int rc = VINF_SUCCESS; 258 254 259 switch (ShClTransferGetDir(pTransfer)) 255 260 { 256 case SHCLTRANSFERDIR_FROM_REMOTE: /* G uest -> Host.*/261 case SHCLTRANSFERDIR_FROM_REMOTE: /* G->H */ 257 262 { 258 263 pIface->pfnRootListRead = shClSvcTransferIfaceGHRootListRead; … … 269 274 } 270 275 271 case SHCLTRANSFERDIR_TO_REMOTE: /* H ost -> Guest.*/276 case SHCLTRANSFERDIR_TO_REMOTE: /* H->G */ 272 277 { 273 278 pIface->pfnRootListRead = shClSvcWinTransferIfaceHGRootListRead; … … 276 281 277 282 default: 278 AssertFailed(); 279 } 280 281 int rc = ShClTransferSetProvider(pTransfer, &pClient->Transfers.Provider); RT_NOREF(rc); 283 AssertFailedStmt(rc = VERR_NOT_SUPPORTED); 284 break; 285 } 286 287 if (RT_SUCCESS(rc)) 288 rc = ShClTransferSetProvider(pTransfer, &pClient->Transfers.Provider); RT_NOREF(rc); 282 289 283 290 LogFlowFuncLeaveRC(rc); … … 287 294 * @copydoc SHCLTRANSFERCALLBACKS::pfnOnInitialized 288 295 * 289 * Called on transfer intialization to notify the "in-flight" IDataObject about a data transfer. 296 * For G->H: Called on transfer intialization to notify the "in-flight" IDataObject about a data transfer. 297 * For H->G: Called on transfer intialization to populate the transfer's root list. 290 298 * 291 299 * @thread Service main thread. … … 299 307 AssertPtr(pTransfer); 300 308 301 const SHCLTRANSFERDIR enmDir = ShClTransferGetDir(pTransfer);302 303 309 int rc = VINF_SUCCESS; 304 310 305 LogFlowFunc(("pCtx=%p, idTransfer=%RU32, enmDir=%RU32\n", pCtx, ShClTransferGetID(pTransfer), enmDir)); 306 307 /* The host wants to transfer data from the guest. */ 308 if (enmDir == SHCLTRANSFERDIR_FROM_REMOTE) 309 { 310 rc = RTCritSectEnter(&pCtx->Win.CritSect); 311 if (RT_SUCCESS(rc)) 312 { 313 SharedClipboardWinDataObject *pObj = pCtx->Win.pDataObjInFlight; 314 AssertPtrReturnVoid(pObj); 315 rc = pObj->SetTransfer(pTransfer); 316 317 pCtx->Win.pDataObjInFlight = NULL; /* Hand off to Windows. */ 318 319 int rc2 = RTCritSectLeave(&pCtx->Win.CritSect); 320 AssertRC(rc2); 321 } 322 } 323 324 if (RT_FAILURE(rc)) 325 LogRel(("Shared Clipboard: Starting transfer failed, rc=%Rrc\n", rc)); 326 327 LogFlowFunc(("LEAVE: idTransfer=%RU32, rc=%Rrc\n", ShClTransferGetID(pTransfer), rc)); 311 switch (ShClTransferGetDir(pTransfer)) 312 { 313 case SHCLTRANSFERDIR_FROM_REMOTE: /* G->H */ 314 { 315 rc = RTCritSectEnter(&pCtx->Win.CritSect); 316 if (RT_SUCCESS(rc)) 317 { 318 SharedClipboardWinDataObject *pObj = pCtx->Win.pDataObjInFlight; 319 AssertPtrReturnVoid(pObj); 320 rc = pObj->SetTransfer(pTransfer); 321 322 pCtx->Win.pDataObjInFlight = NULL; /* Hand off to Windows. */ 323 324 int rc2 = RTCritSectLeave(&pCtx->Win.CritSect); 325 AssertRC(rc2); 326 } 327 328 break; 329 } 330 331 case SHCLTRANSFERDIR_TO_REMOTE: /* H->G */ 332 { 333 rc = ShClTransferRootListRead(pTransfer); /* Calls shClSvcWinTransferIfaceHGRootListRead(). */ 334 break; 335 } 336 337 default: 338 AssertFailedStmt(rc = VERR_NOT_SUPPORTED); 339 break; 340 } 341 342 LogFlowFuncLeaveRC(rc); 328 343 } 329 344 … … 803 818 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 804 819 /* 805 * Init transfer callbacks. 820 * Set callbacks. 821 * Those will be registered within ShClSvcTransferInit() when a new transfer gets initialized. 806 822 */ 807 823 RT_ZERO(pClient->Transfers.Callbacks); 824 825 pClient->Transfers.Callbacks.pvUser = pCtx; /* Assign context as user-provided callback data. */ 826 pClient->Transfers.Callbacks.cbUser = sizeof(SHCLCONTEXT); 827 828 pClient->Transfers.Callbacks.pfnOnCreated = shClSvcWinTransferOnCreatedCallback; 808 829 pClient->Transfers.Callbacks.pfnOnInitialized = shClSvcWinTransferOnInitializedCallback; 809 830 pClient->Transfers.Callbacks.pfnOnStarted = shClSvcWinTransferOnStartedCallback; 810 831 pClient->Transfers.Callbacks.pfnOnDestroy = shClSvcWinTransferOnDestroyCallback; 811 812 pClient->Transfers.Callbacks.pvUser = pCtx; /* Assign context as user-provided callback data. */813 pClient->Transfers.Callbacks.cbUser = sizeof(SHCLCONTEXT);814 832 #endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS */ 815 833 }
Note:
See TracChangeset
for help on using the changeset viewer.