- Timestamp:
- Jan 24, 2023 11:17:31 AM (2 years ago)
- Location:
- trunk/src/VBox/Main
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/include/GuestDnDPrivate.h
r98103 r98273 68 68 GuestDnDCallbackEvent(void) 69 69 : m_SemEvent(NIL_RTSEMEVENT) 70 , m_ Rc(VINF_SUCCESS) { }70 , m_vrc(VINF_SUCCESS) { } 71 71 72 72 virtual ~GuestDnDCallbackEvent(void); … … 76 76 int Reset(void); 77 77 78 int Notify(int rc = VINF_SUCCESS);79 80 int Result(void) const { return m_ Rc; }78 int Notify(int vrc = VINF_SUCCESS); 79 80 int Result(void) const { return m_vrc; } 81 81 82 82 int Wait(RTMSINTERVAL msTimeout); … … 87 87 RTSEMEVENT m_SemEvent; 88 88 /** Callback result. */ 89 int m_ Rc;89 int m_vrc; 90 90 }; 91 91 … … 124 124 if (cbAllocatedTmp > cbAllocated) 125 125 { 126 int rc = resize(cbAllocatedTmp);127 if (RT_FAILURE( rc))126 int vrc = resize(cbAllocatedTmp); 127 if (RT_FAILURE(vrc)) 128 128 return 0; 129 129 } … … 440 440 { 441 441 RT_ZERO(List); 442 int rc2 = DnDTransferListInit(&List);443 AssertRC( rc2);442 int vrc2 = DnDTransferListInit(&List); 443 AssertRC(vrc2); 444 444 } 445 445 … … 506 506 { 507 507 RT_ZERO(DroppedFiles); 508 int rc2 = DnDDroppedFilesInit(&DroppedFiles);509 AssertRC( rc2);508 int vrc2 = DnDDroppedFilesInit(&DroppedFiles); 509 AssertRC(vrc2); 510 510 511 511 RT_ZERO(List); 512 rc2 = DnDTransferListInit(&List);513 AssertRC( rc2);512 vrc2 = DnDTransferListInit(&List); 513 AssertRC(vrc2); 514 514 515 515 RT_ZERO(ObjCur); 516 rc2 = DnDTransferObjectInit(&ObjCur);517 AssertRC( rc2);516 vrc2 = DnDTransferObjectInit(&ObjCur); 517 AssertRC(vrc2); 518 518 } 519 519 … … 828 828 /** @name Guest response handling. 829 829 * @{ */ 830 int notifyAboutGuestResponse(int rcGuest = VINF_SUCCESS);831 int waitForGuestResponseEx(RTMSINTERVAL msTimeout = 3000, int *p rcGuest = NULL);832 int waitForGuestResponse(int *p rcGuest = NULL);830 int notifyAboutGuestResponse(int vrcGuest = VINF_SUCCESS); 831 int waitForGuestResponseEx(RTMSINTERVAL msTimeout = 3000, int *pvrcGuest = NULL); 832 int waitForGuestResponse(int *pvrcGuest = NULL); 833 833 /** @} */ 834 834 … … 854 854 bool isProgressCanceled(void) const; 855 855 bool isProgressRunning(void) const; 856 int setProgress(unsigned uPercentage, uint32_t uState, int rcOp = VINF_SUCCESS, const Utf8Str &strMsg = ""); 856 int setProgress(unsigned uPercentage, uint32_t uState, int vrcOp = VINF_SUCCESS, 857 const Utf8Str &strMsg = Utf8Str::Empty /** @todo figure out what's the best way to pass empty Utf8Str by default - probably = Utf8Str() */); 857 858 HRESULT resetProgress(const ComObjPtr<Guest>& pParent, const Utf8Str &strDesc); 858 859 HRESULT queryProgressTo(IProgress **ppProgress); … … 883 884 /** Last error reported from guest. 884 885 * Set to VERR_IPE_UNINITIALIZED_STATUS if not set yet. */ 885 int m_ rcGuest;886 int m_vrcGuest; 886 887 /** Default action to perform in case of a 887 888 * successful drop. */ … … 951 952 typedef std::list< ComObjPtr<GuestDnDTarget> > GuestDnDTgtList; 952 953 953 /** Constructor; will throw rc on failure. */954 /** Constructor; will throw vrc on failure. */ 954 955 GuestDnD(const ComObjPtr<Guest>& pGuest); 955 956 virtual ~GuestDnD(void); -
trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp
r98103 r98273 162 162 163 163 /********************************************************************************************************************************* 164 * Internal macros.*165 164 * Defined Constants And Macros * 165 *********************************************************************************************************************************/ 166 166 167 167 /** Tries locking the GuestDnD object and returns on failure. */ 168 #define GUESTDND_LOCK() \ 169 { \ 170 int rcLock = RTCritSectEnter(&m_CritSect); \ 171 if (RT_FAILURE(rcLock)) \ 172 return rcLock; \ 173 } 168 #define GUESTDND_LOCK() do { \ 169 int const vrcLock = RTCritSectEnter(&m_CritSect); \ 170 if (RT_SUCCESS(vrcLock)) { /* likely */ } else return vrcLock; \ 171 } while (0) 174 172 175 173 /** Tries locking the GuestDnD object and returns a_Ret failure. */ 176 #define GUESTDND_LOCK_RET(a_Ret) \ 177 { \ 178 int rcLock = RTCritSectEnter(&m_CritSect); \ 179 if (RT_FAILURE(rcLock)) \ 180 return a_Ret; \ 181 } 174 #define GUESTDND_LOCK_RET(a_Ret) do { \ 175 int const vrcLock = RTCritSectEnter(&m_CritSect); \ 176 if (RT_SUCCESS(vrcLock)) { /* likely */ } else return vrcLock; \ 177 } while (0) 182 178 183 179 /** Unlocks a formerly locked GuestDnD object. */ 184 #define GUESTDND_UNLOCK() \185 {\186 int rcUnlock = RTCritSectLeave(&m_CritSect); RT_NOREF(rcUnlock); \187 AssertRC(rcUnlock); \188 } 180 #define GUESTDND_UNLOCK() do { \ 181 int const vrcUnlock = RTCritSectLeave(&m_CritSect); \ 182 AssertRC(vrcUnlock); \ 183 } while (0) 184 189 185 190 186 /********************************************************************************************************************************* 191 * GuestDnDSendCtx implementation.*192 187 * GuestDnDSendCtx implementation. * 188 *********************************************************************************************************************************/ 193 189 194 190 GuestDnDSendCtx::GuestDnDSendCtx(void) … … 208 204 Transfer.reset(); 209 205 210 int rc2 = EventCallback.Reset();211 AssertRC( rc2);206 int vrc2 = EventCallback.Reset(); 207 AssertRC(vrc2); 212 208 213 209 GuestDnDData::reset(); 214 210 } 215 211 212 216 213 /********************************************************************************************************************************* 217 * GuestDnDRecvCtx implementation.*218 214 * GuestDnDRecvCtx implementation. * 215 *********************************************************************************************************************************/ 219 216 220 217 GuestDnDRecvCtx::GuestDnDRecvCtx(void) … … 237 234 Transfer.reset(); 238 235 239 int rc2 = EventCallback.Reset();240 AssertRC( rc2);236 int vrc2 = EventCallback.Reset(); 237 AssertRC(vrc2); 241 238 242 239 GuestDnDData::reset(); 243 240 } 244 241 242 245 243 /********************************************************************************************************************************* 246 * GuestDnDCallbackEvent implementation.*247 244 * GuestDnDCallbackEvent implementation. * 245 *********************************************************************************************************************************/ 248 246 249 247 GuestDnDCallbackEvent::~GuestDnDCallbackEvent(void) … … 258 256 int GuestDnDCallbackEvent::Reset(void) 259 257 { 260 int rc = VINF_SUCCESS;261 262 if ( NIL_RTSEMEVENT == m_SemEvent)263 rc = RTSemEventCreate(&m_SemEvent);264 265 m_ Rc = VINF_SUCCESS;266 return rc;258 int vrc = VINF_SUCCESS; 259 260 if (m_SemEvent == NIL_RTSEMEVENT) 261 vrc = RTSemEventCreate(&m_SemEvent); 262 263 m_vrc = VINF_SUCCESS; 264 return vrc; 267 265 } 268 266 … … 271 269 * 272 270 * @returns VBox status code. 273 * @param rcResult code to use for the event completion.274 */ 275 int GuestDnDCallbackEvent::Notify(int rc /* = VINF_SUCCESS */)276 { 277 m_ Rc =rc;271 * @param vrc Result code to use for the event completion. 272 */ 273 int GuestDnDCallbackEvent::Notify(int vrc /* = VINF_SUCCESS */) 274 { 275 m_vrc = vrc; 278 276 return RTSemEventSignal(m_SemEvent); 279 277 } … … 290 288 } 291 289 292 /******************************************************************************************************************************** 293 * 294 ********************************************************************************************************************************/ 290 291 /********************************************************************************************************************************* 292 * GuestDnDState implementation * 293 *********************************************************************************************************************************/ 295 294 296 295 GuestDnDState::GuestDnDState(const ComObjPtr<Guest>& pGuest) … … 302 301 reset(); 303 302 304 int rc = RTCritSectInit(&m_CritSect);305 if (RT_FAILURE( rc))306 throw rc;307 rc = RTSemEventCreate(&m_EventSem);308 if (RT_FAILURE( rc))309 throw rc;303 int vrc = RTCritSectInit(&m_CritSect); 304 if (RT_FAILURE(vrc)) 305 throw vrc; 306 vrc = RTSemEventCreate(&m_EventSem); 307 if (RT_FAILURE(vrc)) 308 throw vrc; 310 309 } 311 310 312 311 GuestDnDState::~GuestDnDState(void) 313 312 { 314 int rc = RTSemEventDestroy(m_EventSem);315 AssertRC( rc);316 rc = RTCritSectDelete(&m_CritSect);317 AssertRC( rc);313 int vrc = RTSemEventDestroy(m_EventSem); 314 AssertRC(vrc); 315 vrc = RTCritSectDelete(&m_CritSect); 316 AssertRC(vrc); 318 317 } 319 318 … … 322 321 * 323 322 * @returns VBox status code. 324 * @param rcGuest Guest rcto set for the response.325 * 326 */ 327 int GuestDnDState::notifyAboutGuestResponse(int rcGuest /* = VINF_SUCCESS */)328 { 329 m_ rcGuest =rcGuest;323 * @param vrcGuest Guest VBox status code to set for the response. 324 * Defaults to VINF_SUCCESS (for success). 325 */ 326 int GuestDnDState::notifyAboutGuestResponse(int vrcGuest /* = VINF_SUCCESS */) 327 { 328 m_vrcGuest = vrcGuest; 330 329 return RTSemEventSignal(m_EventSem); 331 330 } … … 346 345 m_mapCallbacks.clear(); 347 346 348 m_ rcGuest = VERR_IPE_UNINITIALIZED_STATUS;347 m_vrcGuest = VERR_IPE_UNINITIALIZED_STATUS; 349 348 } 350 349 … … 409 408 } 410 409 411 LogFlowFunc(("Returning rc=%Rrc\n", vrc));410 LogFlowFunc(("Returning vrc=%Rrc\n", vrc)); 412 411 return vrc; 413 412 } … … 426 425 m_pProgress.setNull(); 427 426 428 HRESULT hr = m_pProgress.createObject(); 429 if (SUCCEEDED(hr)) 430 { 431 hr = m_pProgress->init(static_cast<IGuest *>(pParent), 432 Bstr(strDesc).raw(), 433 TRUE /* aCancelable */); 434 } 435 436 return hr; 427 HRESULT hrc = m_pProgress.createObject(); 428 if (SUCCEEDED(hrc)) 429 hrc = m_pProgress->init(static_cast<IGuest *>(pParent), Bstr(strDesc).raw(), TRUE /* aCancelable */); 430 431 return hrc; 437 432 } 438 433 … … 448 443 449 444 BOOL fCanceled; 450 HRESULT hr = m_pProgress->COMGETTER(Canceled)(&fCanceled);451 AssertComRCReturn(hr , false);445 HRESULT hrc = m_pProgress->COMGETTER(Canceled)(&fCanceled); 446 AssertComRCReturn(hrc, false); 452 447 return RT_BOOL(fCanceled); 453 448 } … … 464 459 465 460 BOOL fCompleted; 466 HRESULT const hr = m_pProgress->COMGETTER(Completed)(&fCompleted);467 AssertComRCReturn(hr , false);461 HRESULT const hrc = m_pProgress->COMGETTER(Completed)(&fCompleted); 462 AssertComRCReturn(hrc, false); 468 463 return !RT_BOOL(fCompleted); 469 464 } … … 508 503 * @param uPercentage Percentage (0-100) to set. 509 504 * @param uStatus Status (of type DND_PROGRESS_XXX) to set. 510 * @param rcOp IPRT-style resultcode to set. Optional.505 * @param vrcOp VBox status code to set. Optional. 511 506 * @param strMsg Message to set. Optional. 512 507 */ 513 508 int GuestDnDState::setProgress(unsigned uPercentage, uint32_t uStatus, 514 int rcOp /* = VINF_SUCCESS */, const Utf8Str &strMsg /* = "" */) 515 { 516 LogFlowFunc(("uPercentage=%u, uStatus=%RU32, , rcOp=%Rrc, strMsg=%s\n", 517 uPercentage, uStatus, rcOp, strMsg.c_str())); 518 519 HRESULT hr = S_OK; 509 int vrcOp /* = VINF_SUCCESS */, const Utf8Str &strMsg /* = "" */) 510 { 511 LogFlowFunc(("uPercentage=%u, uStatus=%RU32, , vrcOp=%Rrc, strMsg=%s\n", 512 uPercentage, uStatus, vrcOp, strMsg.c_str())); 520 513 521 514 if (m_pProgress.isNull()) … … 523 516 524 517 BOOL fCompleted = FALSE; 525 hr= m_pProgress->COMGETTER(Completed)(&fCompleted);526 AssertComRCReturn(hr , VERR_COM_UNEXPECTED);518 HRESULT hrc = m_pProgress->COMGETTER(Completed)(&fCompleted); 519 AssertComRCReturn(hrc, VERR_COM_UNEXPECTED); 527 520 528 521 BOOL fCanceled = FALSE; 529 hr = m_pProgress->COMGETTER(Canceled)(&fCanceled);530 AssertComRCReturn(hr , VERR_COM_UNEXPECTED);522 hrc = m_pProgress->COMGETTER(Canceled)(&fCanceled); 523 AssertComRCReturn(hrc, VERR_COM_UNEXPECTED); 531 524 532 525 LogFlowFunc(("Progress fCompleted=%RTbool, fCanceled=%RTbool\n", fCompleted, fCanceled)); 533 526 534 int rc = VINF_SUCCESS;527 int vrc = VINF_SUCCESS; 535 528 536 529 switch (uStatus) … … 538 531 case DragAndDropSvc::DND_PROGRESS_ERROR: 539 532 { 540 LogRel(("DnD: Guest reported error %Rrc\n", rcOp));533 LogRel(("DnD: Guest reported error %Rrc\n", vrcOp)); 541 534 542 535 if (!fCompleted) 543 hr = m_pProgress->i_notifyComplete(VBOX_E_DND_ERROR, 544 COM_IIDOF(IGuest), 545 m_pParent->getComponentName(), strMsg.c_str()); 536 hrc = m_pProgress->i_notifyComplete(VBOX_E_DND_ERROR, COM_IIDOF(IGuest), 537 m_pParent->getComponentName(), strMsg.c_str()); 546 538 break; 547 539 } … … 553 545 if (!fCanceled) 554 546 { 555 hr = m_pProgress->Cancel();556 AssertComRC(hr );547 hrc = m_pProgress->Cancel(); 548 AssertComRC(hrc); 557 549 } 558 550 559 551 if (!fCompleted) 560 552 { 561 hr = m_pProgress->i_notifyComplete(S_OK);562 AssertComRC(hr );553 hrc = m_pProgress->i_notifyComplete(S_OK); 554 AssertComRC(hrc); 563 555 } 564 556 break; … … 574 566 && !fCanceled) 575 567 { 576 hr = m_pProgress->SetCurrentOperationProgress(uPercentage);577 AssertComRCReturn(hr , VERR_COM_UNEXPECTED);568 hrc = m_pProgress->SetCurrentOperationProgress(uPercentage); 569 AssertComRCReturn(hrc, VERR_COM_UNEXPECTED); 578 570 if ( uStatus == DragAndDropSvc::DND_PROGRESS_COMPLETE 579 571 || uPercentage >= 100) 580 572 { 581 hr = m_pProgress->i_notifyComplete(S_OK);582 AssertComRCReturn(hr , VERR_COM_UNEXPECTED);573 hrc = m_pProgress->i_notifyComplete(S_OK); 574 AssertComRCReturn(hrc, VERR_COM_UNEXPECTED); 583 575 } 584 576 } … … 590 582 } 591 583 592 LogFlowFuncLeaveRC( rc);593 return rc;584 LogFlowFuncLeaveRC(vrc); 585 return vrc; 594 586 } 595 587 … … 606 598 LogFlowFunc(("u32Function=%RU32, pvParms=%p, cbParms=%RU32\n", u32Function, pvParms, cbParms)); 607 599 608 int rc = VERR_WRONG_ORDER; /* Play safe. */600 int vrc = VERR_WRONG_ORDER; /* Play safe. */ 609 601 610 602 /* Whether or not to try calling host-installed callbacks after successfully processing the message. */ … … 625 617 LogThisFunc(("Client connected, using protocol v%RU32\n", m_uProtocolVersion)); 626 618 627 rc = VINF_SUCCESS;619 vrc = VINF_SUCCESS; 628 620 break; 629 621 } … … 640 632 LogThisFunc(("Client reported features: %#RX64\n", m_fGuestFeatures0)); 641 633 642 rc = VINF_SUCCESS;634 vrc = VINF_SUCCESS; 643 635 break; 644 636 } … … 650 642 { 651 643 LogThisFunc(("Client disconnected\n")); 652 rc = setProgress(100, DND_PROGRESS_CANCELLED, VINF_SUCCESS);644 vrc = setProgress(100, DND_PROGRESS_CANCELLED, VINF_SUCCESS); 653 645 break; 654 646 } … … 664 656 665 657 setActionDefault(pCBData->uAction); 666 rc = notifyAboutGuestResponse();658 vrc = notifyAboutGuestResponse(); 667 659 break; 668 660 } … … 678 670 || pCBData->cbFormat > _64K /** @todo Make this configurable? */ 679 671 || pCBData->pszFormat == NULL) 680 { 681 rc = VERR_INVALID_PARAMETER; 682 } 672 vrc = VERR_INVALID_PARAMETER; 683 673 else if (!RTStrIsValidEncoding(pCBData->pszFormat)) 684 { 685 rc = VERR_INVALID_PARAMETER; 686 } 674 vrc = VERR_INVALID_PARAMETER; 687 675 else 688 676 { 689 677 setFormats(GuestDnD::toFormatList(pCBData->pszFormat)); 690 rc = VINF_SUCCESS;678 vrc = VINF_SUCCESS; 691 679 } 692 680 693 int rc2 = notifyAboutGuestResponse();694 if (RT_SUCCESS( rc))695 rc =rc2;681 int vrc2 = notifyAboutGuestResponse(); 682 if (RT_SUCCESS(vrc)) 683 vrc = vrc2; 696 684 break; 697 685 } … … 705 693 AssertReturn(DragAndDropSvc::CB_MAGIC_DND_HG_EVT_PROGRESS == pCBData->hdr.uMagic, VERR_INVALID_PARAMETER); 706 694 707 rc = setProgress(pCBData->uPercentage, pCBData->uStatus, pCBData->rc);708 if (RT_SUCCESS( rc))709 rc = notifyAboutGuestResponse(pCBData->rc);695 vrc = setProgress(pCBData->uPercentage, pCBData->uStatus, pCBData->rc); 696 if (RT_SUCCESS(vrc)) 697 vrc = notifyAboutGuestResponse(pCBData->rc); 710 698 break; 711 699 } … … 725 713 || pCBData->cbFormat > _64K /** @todo Make the maximum size configurable? */ 726 714 || pCBData->pszFormat == NULL) 727 { 728 rc = VERR_INVALID_PARAMETER; 729 } 715 vrc = VERR_INVALID_PARAMETER; 730 716 else if (!RTStrIsValidEncoding(pCBData->pszFormat)) 731 { 732 rc = VERR_INVALID_PARAMETER; 733 } 717 vrc = VERR_INVALID_PARAMETER; 734 718 else 735 719 { … … 738 722 setActionsAllowed(pCBData->uAllActions); 739 723 740 rc = VINF_SUCCESS;724 vrc = VINF_SUCCESS; 741 725 } 742 726 743 int rc2 = notifyAboutGuestResponse();744 if (RT_SUCCESS( rc))745 rc =rc2;727 int vrc2 = notifyAboutGuestResponse(); 728 if (RT_SUCCESS(vrc)) 729 vrc = vrc2; 746 730 break; 747 731 } … … 762 746 { 763 747 AssertPtr(it->second.pfnCallback); 764 rc = it->second.pfnCallback(u32Function, pvParms, cbParms, it->second.pvUser);748 vrc = it->second.pfnCallback(u32Function, pvParms, cbParms, it->second.pvUser); 765 749 } 766 750 else 767 751 { 768 752 /* Invoke the default callback handler in case we don't have any registered callback above. */ 769 rc = i_defaultCallback(u32Function, pvParms, cbParms, this /* pvUser */);770 } 771 } 772 773 LogFlowFunc(("Returning rc=%Rrc\n",rc));774 return rc;753 vrc = i_defaultCallback(u32Function, pvParms, cbParms, this /* pvUser */); 754 } 755 } 756 757 LogFlowFunc(("Returning vrc=%Rrc\n", vrc)); 758 return vrc; 775 759 } 776 760 … … 793 777 * @retval VERR_DND_GUEST_ERROR on an error reported back from the guest. 794 778 * @param msTimeout Timeout (in ms) for waiting. Optional, waits 3000 ms if not specified. 795 * @param prcGuest Where to return the guest error when VERR_DND_GUEST_ERROR is returned. Optional. 796 */ 797 int GuestDnDState::waitForGuestResponseEx(RTMSINTERVAL msTimeout /* = 3000 */, int *prcGuest /* = NULL */) 779 * @param pvrcGuest Where to return the guest error when 780 * VERR_DND_GUEST_ERROR is returned. Optional. 781 */ 782 int GuestDnDState::waitForGuestResponseEx(RTMSINTERVAL msTimeout /* = 3000 */, int *pvrcGuest /* = NULL */) 798 783 { 799 784 int vrc = RTSemEventWait(m_EventSem, msTimeout); 800 785 if (RT_SUCCESS(vrc)) 801 786 { 802 if (RT_FAILURE(m_ rcGuest))787 if (RT_FAILURE(m_vrcGuest)) 803 788 vrc = VERR_DND_GUEST_ERROR; 804 if (p rcGuest)805 *p rcGuest = m_rcGuest;789 if (pvrcGuest) 790 *pvrcGuest = m_vrcGuest; 806 791 } 807 792 return vrc; … … 814 799 * @retval VERR_TIMEOUT when waiting has timed out. 815 800 * @retval VERR_DND_GUEST_ERROR on an error reported back from the guest. 816 * @param prcGuest Where to return the guest error when VERR_DND_GUEST_ERROR is returned. Optional. 801 * @param pvrcGuest Where to return the guest error when 802 * VERR_DND_GUEST_ERROR is returned. Optional. 817 803 * 818 804 * @note Uses the default timeout of 3000 ms. 819 805 */ 820 int GuestDnDState::waitForGuestResponse(int *p rcGuest /* = NULL */)821 { 822 return waitForGuestResponseEx(3000 /* ms */, p rcGuest);806 int GuestDnDState::waitForGuestResponse(int *pvrcGuest /* = NULL */) 807 { 808 return waitForGuestResponseEx(3000 /* ms */, pvrcGuest); 823 809 } 824 810 … … 845 831 } 846 832 847 int rc = RTCritSectInit(&m_CritSect);848 if (RT_FAILURE( rc))849 throw rc;833 int vrc = RTCritSectInit(&m_CritSect); 834 if (RT_FAILURE(vrc)) 835 throw vrc; 850 836 851 837 /* List of supported default MIME types. */ … … 888 874 ComObjPtr<Console> pConsole = m_pGuest->i_getConsole(); 889 875 ComPtr<IDisplay> pDisplay; 890 HRESULT hr = pConsole->COMGETTER(Display)(pDisplay.asOutParam());891 if (FAILED(hr ))892 return hr ;876 HRESULT hrc = pConsole->COMGETTER(Display)(pDisplay.asOutParam()); 877 if (FAILED(hrc)) 878 return hrc; 893 879 894 880 ULONG dummy; 895 881 LONG xShift, yShift; 896 882 GuestMonitorStatus_T monitorStatus; 897 hr = pDisplay->GetScreenResolution(uScreenId, &dummy, &dummy, &dummy, 898 &xShift, &yShift, &monitorStatus); 899 if (FAILED(hr)) 900 return hr; 883 hrc = pDisplay->GetScreenResolution(uScreenId, &dummy, &dummy, &dummy, &xShift, &yShift, &monitorStatus); 884 if (FAILED(hrc)) 885 return hrc; 901 886 902 887 if (puX) … … 1543 1528 LogRel2(("DnD: Cancelling operation on guest ...\n")); 1544 1529 1545 int rc = GuestDnDInst()->hostCall(Msg.getType(), Msg.getCount(), Msg.getParms());1546 if (RT_FAILURE( rc))1547 LogRel(("DnD: Cancelling operation on guest failed with %Rrc\n", rc));1548 1549 return rc;1530 int vrc = GuestDnDInst()->hostCall(Msg.getType(), Msg.getCount(), Msg.getParms()); 1531 if (RT_FAILURE(vrc)) 1532 LogRel(("DnD: Cancelling operation on guest failed with %Rrc\n", vrc)); 1533 1534 return vrc; 1550 1535 } 1551 1536 … … 1579 1564 LogRel2(("DnD: Transfer %RU8%% complete\n", uPercent)); 1580 1565 1581 int rc = pState->setProgress(uPercent, 1582 pData->isComplete() 1583 ? DND_PROGRESS_COMPLETE 1584 : DND_PROGRESS_RUNNING); 1585 LogFlowFuncLeaveRC(rc); 1586 return rc; 1566 int vrc = pState->setProgress(uPercent, pData->isComplete() ? DND_PROGRESS_COMPLETE : DND_PROGRESS_RUNNING); 1567 LogFlowFuncLeaveRC(vrc); 1568 return vrc; 1587 1569 } 1588 1570 … … 1600 1582 AssertPtrReturn(pState, VERR_INVALID_POINTER); 1601 1583 1602 int rc;1584 int vrc; 1603 1585 1604 1586 LogFlowFunc(("msTimeout=%RU32\n", msTimeout)); … … 1612 1594 * respond, do busy waiting here. 1613 1595 */ 1614 rc = pEvent->Wait(500 /* ms */);1615 if (RT_SUCCESS( rc))1616 { 1617 rc = pEvent->Result();1618 LogFlowFunc(("Callback done, result is %Rrc\n", rc));1619 break; 1620 } 1621 else if (rc == VERR_TIMEOUT) /* Continue waiting. */1622 rc = VINF_SUCCESS;1596 vrc = pEvent->Wait(500 /* ms */); 1597 if (RT_SUCCESS(vrc)) 1598 { 1599 vrc = pEvent->Result(); 1600 LogFlowFunc(("Callback done, result is %Rrc\n", vrc)); 1601 break; 1602 } 1603 if (vrc == VERR_TIMEOUT) /* Continue waiting. */ 1604 vrc = VINF_SUCCESS; 1623 1605 1624 1606 if ( msTimeout != RT_INDEFINITE_WAIT 1625 1607 && RTTimeMilliTS() - tsStart > msTimeout) 1626 1608 { 1627 rc = VERR_TIMEOUT;1609 vrc = VERR_TIMEOUT; 1628 1610 LogRel2(("DnD: Error: Guest did not respond within time\n")); 1629 1611 } … … 1631 1613 { 1632 1614 LogRel2(("DnD: Operation was canceled by user\n")); 1633 rc = VERR_CANCELLED; 1634 } 1635 1636 } while (RT_SUCCESS(rc)); 1637 1638 LogFlowFuncLeaveRC(rc); 1639 return rc; 1640 } 1615 vrc = VERR_CANCELLED; 1616 } 1617 1618 } while (RT_SUCCESS(vrc)); 1619 1620 LogFlowFuncLeaveRC(vrc); 1621 return vrc; 1622 } 1623 1641 1624 #endif /* VBOX_WITH_DRAG_AND_DROP */ 1642 1625 -
trunk/src/VBox/Main/src-client/GuestDnDSourceImpl.cpp
r98262 r98273 392 392 pState->set(VBOXDNDSTATE_UNKNOWN); 393 393 394 LogFlowFunc(("hr =%Rhrc\n", hrc));394 LogFlowFunc(("hrc=%Rhrc\n", hrc)); 395 395 return hrc; 396 396 #endif /* VBOX_WITH_DRAG_AND_DROP */ … … 437 437 GuestDnDState *pState = GuestDnDInst()->getState(); 438 438 AssertPtr(pState); 439 HRESULT hr = pState->resetProgress(m_pGuest, tr("Dropping data to host"));440 if (FAILED(hr ))441 return hr ;439 HRESULT hrc = pState->resetProgress(m_pGuest, tr("Dropping data to host")); 440 if (FAILED(hrc)) 441 return hrc; 442 442 443 443 GuestDnDRecvDataTask *pTask = NULL; … … 458 458 delete pTask; 459 459 LogRel2(("DnD: Receive data task failed to initialize\n")); 460 throw hr = E_FAIL;460 throw hrc = E_FAIL; 461 461 } 462 462 … … 466 466 /* This function delete pTask in case of exceptions, 467 467 * so there is no need in the call of delete operator. */ 468 hr = pTask->createThreadWithType(RTTHREADTYPE_MAIN_WORKER);468 hrc = pTask->createThreadWithType(RTTHREADTYPE_MAIN_WORKER); 469 469 pTask = NULL; /* Note: pTask is now owned by the worker thread. */ 470 470 } 471 471 catch (std::bad_alloc &) 472 472 { 473 hr = E_OUTOFMEMORY;473 hrc = E_OUTOFMEMORY; 474 474 } 475 475 catch (...) 476 476 { 477 477 LogRel2(("DnD: Could not create thread for data receiving task\n")); 478 hr = E_FAIL;479 } 480 481 if (SUCCEEDED(hr ))478 hrc = E_FAIL; 479 } 480 481 if (SUCCEEDED(hrc)) 482 482 { 483 483 /* Register ourselves at the DnD manager. */ 484 484 GuestDnDInst()->registerSource(this); 485 485 486 hr = pState->queryProgressTo(aProgress.asOutParam()); 487 ComAssertComRC(hr); 488 486 hrc = pState->queryProgressTo(aProgress.asOutParam()); 487 ComAssertComRC(hrc); 489 488 } 490 489 else 491 hr = i_setErrorAndReset(tr("Starting thread for GuestDnDSource failed (%Rhrc)"), hr);492 493 LogFlowFunc(("Returning hr =%Rhrc\n", hr));494 return hr ;490 hrc = i_setErrorAndReset(tr("Starting thread for GuestDnDSource failed (%Rhrc)"), hrc); 491 492 LogFlowFunc(("Returning hrc=%Rhrc\n", hrc)); 493 return hrc; 495 494 #endif /* VBOX_WITH_DRAG_AND_DROP */ 496 495 } … … 511 510 return setError(E_FAIL, tr("Current drop operation to host still in progress")); 512 511 513 HRESULT hr = S_OK;512 HRESULT hrc = S_OK; 514 513 515 514 try … … 529 528 char *pszBuf = NULL; 530 529 size_t cbBuf = 0; 531 int rc = DnDTransferListGetRootsEx(&pCtx->Transfer.List, DNDTRANSFERLISTFMT_URI,532 pcszDropDirAbs, DND_PATH_SEPARATOR_STR, &pszBuf, &cbBuf);533 if (RT_SUCCESS( rc))530 int vrc = DnDTransferListGetRootsEx(&pCtx->Transfer.List, DNDTRANSFERLISTFMT_URI, 531 pcszDropDirAbs, DND_PATH_SEPARATOR_STR, &pszBuf, &cbBuf); 532 if (RT_SUCCESS(vrc)) 534 533 { 535 534 Assert(cbBuf); … … 541 540 } 542 541 else 543 LogRel(("DnD: Unable to build source root list, rc=%Rrc\n",rc));542 LogRel(("DnD: Unable to build source root list, vrc=%Rrc\n", vrc)); 544 543 } 545 544 else /* Raw data. */ … … 557 556 catch (std::bad_alloc &) 558 557 { 559 hr = E_OUTOFMEMORY;560 } 561 562 LogFlowFunc(("Returning hr =%Rhrc\n", hr));563 return hr ;558 hrc = E_OUTOFMEMORY; 559 } 560 561 LogFlowFunc(("Returning hrc=%Rhrc\n", hrc)); 562 return hrc; 564 563 #endif /* VBOX_WITH_DRAG_AND_DROP */ 565 564 } … … 719 718 AssertPtrReturn(pSndData, VERR_INVALID_POINTER); 720 719 721 int rc = VINF_SUCCESS;720 int vrc = VINF_SUCCESS; 722 721 723 722 try … … 756 755 { 757 756 AssertMsgFailed(("Incoming data size invalid: cbData=%zu, cbTotal=%zu\n", cbData, cbTotalAnnounced)); 758 rc = VERR_INVALID_PARAMETER;757 vrc = VERR_INVALID_PARAMETER; 759 758 } 760 759 else if ( cbTotalAnnounced == 0 … … 762 761 { 763 762 AssertMsgFailed(("cbTotal (%zu) is smaller than cbMeta (%zu)\n", cbTotalAnnounced, cbMetaAnnounced)); 764 rc = VERR_INVALID_PARAMETER;765 } 766 767 if (RT_FAILURE( rc))768 return rc;763 vrc = VERR_INVALID_PARAMETER; 764 } 765 766 if (RT_FAILURE(vrc)) 767 return vrc; 769 768 770 769 AssertReturn(cbData <= mData.mcbBlockSize, VERR_BUFFER_OVERFLOW); … … 788 787 if (DnDMIMENeedsDropDir(pCtx->strFmtRecv.c_str(), pCtx->strFmtRecv.length())) 789 788 { 790 rc = DnDTransferListInitEx(&pTransfer->List,791 DnDDroppedFilesGetDirAbs(&pTransfer->DroppedFiles), DNDTRANSFERLISTFMT_NATIVE);792 if (RT_SUCCESS( rc))793 rc = DnDTransferListAppendRootsFromBuffer(&pTransfer->List, DNDTRANSFERLISTFMT_URI,794 (const char *)pCtx->Meta.pvData, pCtx->Meta.cbData, DND_PATH_SEPARATOR_STR,795 DNDTRANSFERLIST_FLAGS_NONE);789 vrc = DnDTransferListInitEx(&pTransfer->List, 790 DnDDroppedFilesGetDirAbs(&pTransfer->DroppedFiles), DNDTRANSFERLISTFMT_NATIVE); 791 if (RT_SUCCESS(vrc)) 792 vrc = DnDTransferListAppendRootsFromBuffer(&pTransfer->List, DNDTRANSFERLISTFMT_URI, 793 (const char *)pCtx->Meta.pvData, pCtx->Meta.cbData, 794 DND_PATH_SEPARATOR_STR, DNDTRANSFERLIST_FLAGS_NONE); 796 795 /* Validation. */ 797 if (RT_SUCCESS( rc))796 if (RT_SUCCESS(vrc)) 798 797 { 799 798 uint64_t cRoots = DnDTransferListGetRootCount(&pTransfer->List); … … 806 805 LogRel(("DnD: Number of root entries invalid / mismatch: Got %RU64, expected %RU64\n", 807 806 cRoots, pTransfer->cObjToProcess)); 808 rc = VERR_INVALID_PARAMETER;807 vrc = VERR_INVALID_PARAMETER; 809 808 } 810 809 } 811 810 812 if (RT_SUCCESS( rc))811 if (RT_SUCCESS(vrc)) 813 812 { 814 813 /* Update our process with the data we already received. */ 815 rc = updateProgress(pCtx, pCtx->pState, cbMetaAnnounced);816 AssertRC( rc);814 vrc = updateProgress(pCtx, pCtx->pState, cbMetaAnnounced); 815 AssertRC(vrc); 817 816 } 818 817 819 if (RT_FAILURE( rc))820 LogRel(("DnD: Error building root entry list, rc=%Rrc\n",rc));818 if (RT_FAILURE(vrc)) 819 LogRel(("DnD: Error building root entry list, vrc=%Rrc\n", vrc)); 821 820 } 822 821 else /* Raw data. */ 823 822 { 824 rc = updateProgress(pCtx, pCtx->pState, cbData);825 AssertRC( rc);823 vrc = updateProgress(pCtx, pCtx->pState, cbData); 824 AssertRC(vrc); 826 825 } 827 826 828 if (RT_FAILURE( rc))829 LogRel(("DnD: Error receiving meta data, rc=%Rrc\n",rc));827 if (RT_FAILURE(vrc)) 828 LogRel(("DnD: Error receiving meta data, vrc=%Rrc\n", vrc)); 830 829 } 831 830 } 832 831 catch (std::bad_alloc &) 833 832 { 834 rc = VERR_NO_MEMORY;835 } 836 837 LogFlowFuncLeaveRC( rc);838 return rc;833 vrc = VERR_NO_MEMORY; 834 } 835 836 LogFlowFuncLeaveRC(vrc); 837 return vrc; 839 838 } 840 839 … … 851 850 const PDNDDROPPEDFILES pDF = &pCtx->Transfer.DroppedFiles; 852 851 853 int rc = DnDTransferObjectInitEx(pObj, DNDTRANSFEROBJTYPE_DIRECTORY, 854 DnDDroppedFilesGetDirAbs(pDF), pszPath); 855 if (RT_SUCCESS(rc)) 852 int vrc = DnDTransferObjectInitEx(pObj, DNDTRANSFEROBJTYPE_DIRECTORY, DnDDroppedFilesGetDirAbs(pDF), pszPath); 853 if (RT_SUCCESS(vrc)) 856 854 { 857 855 const char *pcszPathAbs = DnDTransferObjectGetSourcePath(pObj); 858 856 AssertPtr(pcszPathAbs); 859 857 860 rc = RTDirCreateFullPath(pcszPathAbs, fMode);861 if (RT_SUCCESS( rc))858 vrc = RTDirCreateFullPath(pcszPathAbs, fMode); 859 if (RT_SUCCESS(vrc)) 862 860 { 863 861 pCtx->Transfer.cObjProcessed++; 864 862 if (pCtx->Transfer.cObjProcessed <= pCtx->Transfer.cObjToProcess) 865 { 866 rc = DnDDroppedFilesAddDir(pDF, pcszPathAbs); 867 } 863 vrc = DnDDroppedFilesAddDir(pDF, pcszPathAbs); 868 864 else 869 rc = VERR_TOO_MUCH_DATA;865 vrc = VERR_TOO_MUCH_DATA; 870 866 871 867 DnDTransferObjectDestroy(pObj); 872 868 873 if (RT_FAILURE( rc))869 if (RT_FAILURE(vrc)) 874 870 LogRel2(("DnD: Created guest directory '%s' on host\n", pcszPathAbs)); 875 871 } 876 872 else 877 LogRel(("DnD: Error creating guest directory '%s' on host, rc=%Rrc\n", pcszPathAbs,rc));878 } 879 880 if (RT_FAILURE( rc))881 LogRel(("DnD: Receiving guest directory '%s' failed with rc=%Rrc\n", pszPath,rc));882 883 LogFlowFuncLeaveRC( rc);884 return rc;873 LogRel(("DnD: Error creating guest directory '%s' on host, vrc=%Rrc\n", pcszPathAbs, vrc)); 874 } 875 876 if (RT_FAILURE(vrc)) 877 LogRel(("DnD: Receiving guest directory '%s' failed with vrc=%Rrc\n", pszPath, vrc)); 878 879 LogFlowFuncLeaveRC(vrc); 880 return vrc; 885 881 } 886 882 … … 915 911 ("Data transfer already complete, bailing out\n"), VERR_INVALID_PARAMETER); 916 912 917 int rc = VINF_SUCCESS;913 int vrc = VINF_SUCCESS; 918 914 919 915 do … … 925 921 { 926 922 AssertMsgFailed(("Object '%s' not complete yet\n", DnDTransferObjectGetSourcePath(pObj))); 927 rc = VERR_WRONG_ORDER;923 vrc = VERR_WRONG_ORDER; 928 924 break; 929 925 } … … 931 927 const PDNDDROPPEDFILES pDF = &pCtx->Transfer.DroppedFiles; 932 928 933 rc = DnDTransferObjectInitEx(pObj, DNDTRANSFEROBJTYPE_FILE, DnDDroppedFilesGetDirAbs(pDF), pszPath);934 AssertRCBreak( rc);929 vrc = DnDTransferObjectInitEx(pObj, DNDTRANSFEROBJTYPE_FILE, DnDDroppedFilesGetDirAbs(pDF), pszPath); 930 AssertRCBreak(vrc); 935 931 936 932 const char *pcszSource = DnDTransferObjectGetSourcePath(pObj); … … 938 934 939 935 /** @todo Add sparse file support based on fFlags? (Use Open(..., fFlags | SPARSE). */ 940 rc = DnDTransferObjectOpen(pObj, RTFILE_O_CREATE_REPLACE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE,936 vrc = DnDTransferObjectOpen(pObj, RTFILE_O_CREATE_REPLACE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE, 941 937 (fMode & RTFS_UNIX_MASK) | RTFS_UNIX_IRUSR | RTFS_UNIX_IWUSR, DNDTRANSFEROBJECT_FLAGS_NONE); 942 if (RT_FAILURE( rc))943 { 944 LogRel(("DnD: Error opening/creating guest file '%s' on host, rc=%Rrc\n", pcszSource,rc));938 if (RT_FAILURE(vrc)) 939 { 940 LogRel(("DnD: Error opening/creating guest file '%s' on host, vrc=%Rrc\n", pcszSource, vrc)); 945 941 break; 946 942 } … … 948 944 /* Note: Protocol v1 does not send any file sizes, so always 0. */ 949 945 if (m_pState->m_uProtocolVersion >= 2) 950 rc = DnDTransferObjectSetSize(pObj, cbSize);946 vrc = DnDTransferObjectSetSize(pObj, cbSize); 951 947 952 948 /** @todo Unescape path before printing. */ … … 964 960 { 965 961 /* Add for having a proper rollback. */ 966 rc = DnDDroppedFilesAddFile(pDF, pcszSource);962 vrc = DnDDroppedFilesAddFile(pDF, pcszSource); 967 963 } 968 964 else 969 rc = VERR_TOO_MUCH_DATA;965 vrc = VERR_TOO_MUCH_DATA; 970 966 971 967 DnDTransferObjectDestroy(pObj); … … 974 970 } while (0); 975 971 976 if (RT_FAILURE( rc))977 LogRel(("DnD: Error receiving guest file header, rc=%Rrc\n",rc));978 979 LogFlowFuncLeaveRC( rc);980 return rc;972 if (RT_FAILURE(vrc)) 973 LogRel(("DnD: Error receiving guest file header, vrc=%Rrc\n", vrc)); 974 975 LogFlowFuncLeaveRC(vrc); 976 return vrc; 981 977 } 982 978 … … 995 991 AssertReturn(cbData, VERR_INVALID_PARAMETER); 996 992 997 int rc = VINF_SUCCESS;993 int vrc = VINF_SUCCESS; 998 994 999 995 LogFlowFunc(("pvData=%p, cbData=%RU32, cbBlockSize=%RU32\n", pvData, cbData, mData.mcbBlockSize)); … … 1018 1014 1019 1015 uint32_t cbWritten; 1020 rc = DnDTransferObjectWrite(pObj, pvData, cbData, &cbWritten);1021 if (RT_FAILURE( rc))1022 LogRel(("DnD: Error writing guest file data for '%s', rc=%Rrc\n", pcszSource,rc));1016 vrc = DnDTransferObjectWrite(pObj, pvData, cbData, &cbWritten); 1017 if (RT_FAILURE(vrc)) 1018 LogRel(("DnD: Error writing guest file data for '%s', vrc=%Rrc\n", pcszSource, vrc)); 1023 1019 1024 1020 Assert(cbWritten <= cbData); … … 1027 1023 LogRel(("DnD: Only written %RU32 of %RU32 bytes of guest file '%s' -- disk full?\n", 1028 1024 cbWritten, cbData, pcszSource)); 1029 rc = VERR_IO_GEN_FAILURE; /** @todo Find a betterrc. */1030 break; 1031 } 1032 1033 rc = updateProgress(pCtx, pCtx->pState, cbWritten);1034 AssertRCBreak( rc);1025 vrc = VERR_IO_GEN_FAILURE; /** @todo Find a better vrc. */ 1026 break; 1027 } 1028 1029 vrc = updateProgress(pCtx, pCtx->pState, cbWritten); 1030 AssertRCBreak(vrc); 1035 1031 1036 1032 if (DnDTransferObjectIsComplete(pObj)) … … 1040 1036 pCtx->Transfer.cObjProcessed++; 1041 1037 if (pCtx->Transfer.cObjProcessed > pCtx->Transfer.cObjToProcess) 1042 rc = VERR_TOO_MUCH_DATA;1038 vrc = VERR_TOO_MUCH_DATA; 1043 1039 1044 1040 DnDTransferObjectDestroy(pObj); … … 1047 1043 } while (0); 1048 1044 1049 if (RT_FAILURE( rc))1050 LogRel(("DnD: Error receiving guest file data, rc=%Rrc\n",rc));1051 1052 LogFlowFuncLeaveRC( rc);1053 return rc;1045 if (RT_FAILURE(vrc)) 1046 LogRel(("DnD: Error receiving guest file data, vrc=%Rrc\n", vrc)); 1047 1048 LogFlowFuncLeaveRC(vrc); 1049 return vrc; 1054 1050 } 1055 1051 #endif /* VBOX_WITH_DRAG_AND_DROP_GH */ … … 1108 1104 } 1109 1105 1110 int rc = VINF_SUCCESS;1106 int vrc = VINF_SUCCESS; 1111 1107 1112 1108 if (fFoundFormat) … … 1121 1117 bool fURIData = DnDMIMENeedsDropDir(pCtx->strFmtRecv.c_str(), pCtx->strFmtRecv.length()); 1122 1118 if (fURIData) 1123 { 1124 rc = i_receiveTransferData(pCtx, msTimeout); 1125 } 1119 vrc = i_receiveTransferData(pCtx, msTimeout); 1126 1120 else 1127 { 1128 rc = i_receiveRawData(pCtx, msTimeout); 1129 } 1121 vrc = i_receiveRawData(pCtx, msTimeout); 1130 1122 } 1131 1123 else /* Just inform the user (if verbose release logging is enabled). */ … … 1136 1128 LogRel(("DnD:\tFormat #%zu: %s\n", i, pCtx->lstFmtOffered.at(i).c_str())); 1137 1129 1138 rc = VERR_NOT_SUPPORTED;1139 } 1140 1141 if (RT_FAILURE( rc))1142 { 1143 LogRel(("DnD: Receiving data from guest failed with %Rrc\n", rc));1130 vrc = VERR_NOT_SUPPORTED; 1131 } 1132 1133 if (RT_FAILURE(vrc)) 1134 { 1135 LogRel(("DnD: Receiving data from guest failed with %Rrc\n", vrc)); 1144 1136 1145 1137 /* Let the guest side know first. */ … … 1150 1142 } 1151 1143 1152 LogFlowFuncLeaveRC( rc);1153 return rc;1144 LogFlowFuncLeaveRC(vrc); 1145 return vrc; 1154 1146 } 1155 1147 … … 1165 1157 AssertPtrReturn(pCtx, VERR_INVALID_POINTER); 1166 1158 1167 int rc;1159 int vrc; 1168 1160 1169 1161 LogFlowFuncEnter(); … … 1176 1168 return VERR_INVALID_POINTER; 1177 1169 1178 #define REGISTER_CALLBACK(x) \ 1179 do { \ 1180 rc = pState->setCallback(x, i_receiveRawDataCallback, pCtx); \ 1181 if (RT_FAILURE(rc)) \ 1182 return rc; \ 1170 #define REGISTER_CALLBACK(x) do { \ 1171 vrc = pState->setCallback(x, i_receiveRawDataCallback, pCtx); \ 1172 if (RT_FAILURE(vrc)) \ 1173 return vrc; \ 1183 1174 } while (0) 1184 1175 1185 #define UNREGISTER_CALLBACK(x) \ 1186 do { \ 1187 int rc2 = pState->setCallback(x, NULL); \ 1188 AssertRC(rc2); \ 1176 #define UNREGISTER_CALLBACK(x) do { \ 1177 int vrc2 = pState->setCallback(x, NULL); \ 1178 AssertRC(vrc2); \ 1189 1179 } while (0) 1190 1180 … … 1214 1204 /* Make the initial call to the guest by telling that we initiated the "dropped" event on 1215 1205 * the host and therefore now waiting for the actual raw data. */ 1216 rc = pInst->hostCall(Msg.getType(), Msg.getCount(), Msg.getParms());1217 if (RT_SUCCESS( rc))1218 { 1219 rc = waitForEvent(&pCtx->EventCallback, pCtx->pState, msTimeout);1220 if (RT_SUCCESS( rc))1221 rc = pCtx->pState->setProgress(100, DND_PROGRESS_COMPLETE, VINF_SUCCESS);1206 vrc = pInst->hostCall(Msg.getType(), Msg.getCount(), Msg.getParms()); 1207 if (RT_SUCCESS(vrc)) 1208 { 1209 vrc = waitForEvent(&pCtx->EventCallback, pCtx->pState, msTimeout); 1210 if (RT_SUCCESS(vrc)) 1211 vrc = pCtx->pState->setProgress(100, DND_PROGRESS_COMPLETE, VINF_SUCCESS); 1222 1212 } 1223 1213 … … 1237 1227 #undef UNREGISTER_CALLBACK 1238 1228 1239 if (RT_FAILURE( rc))1240 { 1241 if ( rc == VERR_CANCELLED) /* Transfer was cancelled by the host. */1229 if (RT_FAILURE(vrc)) 1230 { 1231 if (vrc == VERR_CANCELLED) /* Transfer was cancelled by the host. */ 1242 1232 { 1243 1233 /* … … 1246 1236 * host side never must depend on anything from the guest. 1247 1237 */ 1248 int rc2 = sendCancel();1249 AssertRC( rc2);1250 1251 rc2 = pCtx->pState->setProgress(100, DND_PROGRESS_CANCELLED);1252 AssertRC( rc2);1253 } 1254 else if ( rc != VERR_DND_GUEST_ERROR) /* Guest-side error are already handled in the callback. */1255 { 1256 int rc2 = pCtx->pState->setProgress(100, DND_PROGRESS_ERROR,1257 rc, GuestDnDSource::i_hostErrorToString(rc));1258 AssertRC( rc2);1259 } 1260 1261 rc = VINF_SUCCESS; /* The error was handled by the setProgress() calls above. */1262 } 1263 1264 LogFlowFuncLeaveRC( rc);1265 return rc;1238 int vrc2 = sendCancel(); 1239 AssertRC(vrc2); 1240 1241 vrc2 = pCtx->pState->setProgress(100, DND_PROGRESS_CANCELLED); 1242 AssertRC(vrc2); 1243 } 1244 else if (vrc != VERR_DND_GUEST_ERROR) /* Guest-side error are already handled in the callback. */ 1245 { 1246 int vrc2 = pCtx->pState->setProgress(100, DND_PROGRESS_ERROR, 1247 vrc, GuestDnDSource::i_hostErrorToString(vrc)); 1248 AssertRC(vrc2); 1249 } 1250 1251 vrc = VINF_SUCCESS; /* The error was handled by the setProgress() calls above. */ 1252 } 1253 1254 LogFlowFuncLeaveRC(vrc); 1255 return vrc; 1266 1256 } 1267 1257 … … 1277 1267 AssertPtrReturn(pCtx, VERR_INVALID_POINTER); 1278 1268 1279 int rc;1269 int vrc; 1280 1270 1281 1271 LogFlowFuncEnter(); … … 1288 1278 return VERR_INVALID_POINTER; 1289 1279 1290 #define REGISTER_CALLBACK(x) \ 1291 do { \ 1292 rc = pState->setCallback(x, i_receiveTransferDataCallback, pCtx); \ 1293 if (RT_FAILURE(rc)) \ 1294 return rc; \ 1280 #define REGISTER_CALLBACK(x) do { \ 1281 vrc = pState->setCallback(x, i_receiveTransferDataCallback, pCtx); \ 1282 if (RT_FAILURE(vrc)) \ 1283 return vrc; \ 1295 1284 } while (0) 1296 1285 1297 #define UNREGISTER_CALLBACK(x) \ 1298 do { \ 1299 int rc2 = pState->setCallback(x, NULL); \ 1300 AssertRC(rc2); \ 1286 #define UNREGISTER_CALLBACK(x) do { \ 1287 int vrc2 = pState->setCallback(x, NULL); \ 1288 AssertRC(vrc2); \ 1301 1289 } while (0) 1302 1290 … … 1320 1308 do 1321 1309 { 1322 rc = DnDDroppedFilesOpenTemp(pDF, 0 /* fFlags */);1323 if (RT_FAILURE( rc))1324 { 1325 LogRel(("DnD: Opening dropped files directory '%s' on the host failed with rc=%Rrc\n",1326 DnDDroppedFilesGetDirAbs(pDF), rc));1310 vrc = DnDDroppedFilesOpenTemp(pDF, 0 /* fFlags */); 1311 if (RT_FAILURE(vrc)) 1312 { 1313 LogRel(("DnD: Opening dropped files directory '%s' on the host failed with vrc=%Rrc\n", 1314 DnDDroppedFilesGetDirAbs(pDF), vrc)); 1327 1315 break; 1328 1316 } … … 1341 1329 /* Make the initial call to the guest by telling that we initiated the "dropped" event on 1342 1330 * the host and therefore now waiting for the actual URI data. */ 1343 rc = pInst->hostCall(Msg.getType(), Msg.getCount(), Msg.getParms());1344 if (RT_SUCCESS( rc))1331 vrc = pInst->hostCall(Msg.getType(), Msg.getCount(), Msg.getParms()); 1332 if (RT_SUCCESS(vrc)) 1345 1333 { 1346 1334 LogFlowFunc(("Waiting ...\n")); 1347 1335 1348 rc = waitForEvent(&pCtx->EventCallback, pCtx->pState, msTimeout);1349 if (RT_SUCCESS( rc))1350 rc = pCtx->pState->setProgress(100, DND_PROGRESS_COMPLETE, VINF_SUCCESS);1351 1352 LogFlowFunc(("Waiting ended with rc=%Rrc\n",rc));1336 vrc = waitForEvent(&pCtx->EventCallback, pCtx->pState, msTimeout); 1337 if (RT_SUCCESS(vrc)) 1338 vrc = pCtx->pState->setProgress(100, DND_PROGRESS_COMPLETE, VINF_SUCCESS); 1339 1340 LogFlowFunc(("Waiting ended with vrc=%Rrc\n", vrc)); 1353 1341 } 1354 1342 … … 1370 1358 #undef UNREGISTER_CALLBACK 1371 1359 1372 if (RT_FAILURE( rc))1373 { 1374 int rc2 = DnDDroppedFilesRollback(pDF);1375 if (RT_FAILURE( rc2))1360 if (RT_FAILURE(vrc)) 1361 { 1362 int vrc2 = DnDDroppedFilesRollback(pDF); 1363 if (RT_FAILURE(vrc2)) 1376 1364 LogRel(("DnD: Deleting left over temporary files failed (%Rrc), please remove directory '%s' manually\n", 1377 rc2, DnDDroppedFilesGetDirAbs(pDF)));1378 1379 if ( rc == VERR_CANCELLED)1365 vrc2, DnDDroppedFilesGetDirAbs(pDF))); 1366 1367 if (vrc == VERR_CANCELLED) 1380 1368 { 1381 1369 /* … … 1384 1372 * host side never must depend on anything from the guest. 1385 1373 */ 1386 rc2 = sendCancel();1387 AssertRC( rc2);1388 1389 rc2 = pCtx->pState->setProgress(100, DND_PROGRESS_CANCELLED);1390 AssertRC( rc2);1374 vrc2 = sendCancel(); 1375 AssertRC(vrc2); 1376 1377 vrc2 = pCtx->pState->setProgress(100, DND_PROGRESS_CANCELLED); 1378 AssertRC(vrc2); 1391 1379 1392 1380 /* Cancelling is not an error, just set success here. */ 1393 rc = VINF_SUCCESS; 1394 } 1395 else if (rc != VERR_DND_GUEST_ERROR) /* Guest-side error are already handled in the callback. */ 1396 { 1397 rc2 = pCtx->pState->setProgress(100, DND_PROGRESS_ERROR, 1398 rc, GuestDnDSource::i_hostErrorToString(rc)); 1399 AssertRC(rc2); 1381 vrc = VINF_SUCCESS; 1382 } 1383 else if (vrc != VERR_DND_GUEST_ERROR) /* Guest-side error are already handled in the callback. */ 1384 { 1385 vrc2 = pCtx->pState->setProgress(100, DND_PROGRESS_ERROR, vrc, GuestDnDSource::i_hostErrorToString(vrc2)); 1386 AssertRC(vrc2); 1400 1387 } 1401 1388 } … … 1403 1390 DnDDroppedFilesClose(pDF); 1404 1391 1405 LogFlowFuncLeaveRC( rc);1406 return rc;1392 LogFlowFuncLeaveRC(vrc); 1393 return vrc; 1407 1394 } 1408 1395 … … 1427 1414 LogFlowFunc(("pThis=%p, uMsg=%RU32\n", pThis, uMsg)); 1428 1415 1429 int rc = VINF_SUCCESS;1430 1431 int rcCallback = VINF_SUCCESS; /*rc for the callback. */1416 int vrc = VINF_SUCCESS; 1417 1418 int vrcCallback = VINF_SUCCESS; /* vrc for the callback. */ 1432 1419 bool fNotify = false; 1433 1420 … … 1439 1426 1440 1427 case GUEST_DND_FN_DISCONNECT: 1441 rc = VERR_CANCELLED;1428 vrc = VERR_CANCELLED; 1442 1429 break; 1443 1430 … … 1450 1437 AssertReturn(CB_MAGIC_DND_GH_SND_DATA_HDR == pCBData->hdr.uMagic, VERR_INVALID_PARAMETER); 1451 1438 1452 rc = pThis->i_onReceiveDataHdr(pCtx, &pCBData->data);1439 vrc = pThis->i_onReceiveDataHdr(pCtx, &pCBData->data); 1453 1440 break; 1454 1441 } … … 1460 1447 AssertReturn(CB_MAGIC_DND_GH_SND_DATA == pCBData->hdr.uMagic, VERR_INVALID_PARAMETER); 1461 1448 1462 rc = pThis->i_onReceiveData(pCtx, &pCBData->data);1449 vrc = pThis->i_onReceiveData(pCtx, &pCBData->data); 1463 1450 break; 1464 1451 } … … 1478 1465 } 1479 1466 else if (pCBData->rc == VERR_WRONG_ORDER) 1480 { 1481 rc = pCtx->pState->setProgress(100, DND_PROGRESS_CANCELLED); 1482 } 1467 vrc = pCtx->pState->setProgress(100, DND_PROGRESS_CANCELLED); 1483 1468 else 1484 rc = pCtx->pState->setProgress(100, DND_PROGRESS_ERROR, pCBData->rc,1485 GuestDnDSource::i_guestErrorToString(pCBData->rc));1469 vrc = pCtx->pState->setProgress(100, DND_PROGRESS_ERROR, pCBData->rc, 1470 GuestDnDSource::i_guestErrorToString(pCBData->rc)); 1486 1471 1487 1472 LogRel3(("DnD: Guest reported data transfer error: %Rrc\n", pCBData->rc)); 1488 1473 1489 if (RT_SUCCESS( rc))1490 rcCallback = VERR_DND_GUEST_ERROR;1474 if (RT_SUCCESS(vrc)) 1475 vrcCallback = VERR_DND_GUEST_ERROR; 1491 1476 break; 1492 1477 } 1493 1478 #endif /* VBOX_WITH_DRAG_AND_DROP_GH */ 1494 1479 default: 1495 rc = VERR_NOT_SUPPORTED;1496 break; 1497 } 1498 1499 if ( RT_FAILURE( rc)1500 || RT_FAILURE( rcCallback))1480 vrc = VERR_NOT_SUPPORTED; 1481 break; 1482 } 1483 1484 if ( RT_FAILURE(vrc) 1485 || RT_FAILURE(vrcCallback)) 1501 1486 { 1502 1487 fNotify = true; 1503 if (RT_SUCCESS( rcCallback))1504 rcCallback =rc;1505 } 1506 1507 if (RT_FAILURE( rc))1508 { 1509 switch ( rc)1488 if (RT_SUCCESS(vrcCallback)) 1489 vrcCallback = vrc; 1490 } 1491 1492 if (RT_FAILURE(vrc)) 1493 { 1494 switch (vrc) 1510 1495 { 1511 1496 case VERR_NO_DATA: … … 1518 1503 1519 1504 default: 1520 LogRel(("DnD: Error %Rrc occurred, aborting data transfer to host\n", rc));1505 LogRel(("DnD: Error %Rrc occurred, aborting data transfer to host\n", vrc)); 1521 1506 break; 1522 1507 } … … 1524 1509 /* Unregister this callback. */ 1525 1510 AssertPtr(pCtx->pState); 1526 int rc2 = pCtx->pState->setCallback(uMsg, NULL /* PFNGUESTDNDCALLBACK */);1527 AssertRC( rc2);1511 int vrc2 = pCtx->pState->setCallback(uMsg, NULL /* PFNGUESTDNDCALLBACK */); 1512 AssertRC(vrc2); 1528 1513 } 1529 1514 … … 1532 1517 fNotify = true; 1533 1518 1534 LogFlowFunc(("cbProcessed=%RU64, cbExtra=%RU64, fNotify=%RTbool, rcCallback=%Rrc,rc=%Rrc\n",1535 pCtx->cbProcessed, pCtx->cbExtra, fNotify, rcCallback,rc));1519 LogFlowFunc(("cbProcessed=%RU64, cbExtra=%RU64, fNotify=%RTbool, vrcCallback=%Rrc, vrc=%Rrc\n", 1520 pCtx->cbProcessed, pCtx->cbExtra, fNotify, vrcCallback, vrc)); 1536 1521 1537 1522 if (fNotify) 1538 1523 { 1539 int rc2 = pCtx->EventCallback.Notify(rcCallback);1540 AssertRC( rc2);1541 } 1542 1543 LogFlowFuncLeaveRC( rc);1544 return rc; /* Tell the guest. */1524 int vrc2 = pCtx->EventCallback.Notify(vrcCallback); 1525 AssertRC(vrc2); 1526 } 1527 1528 LogFlowFuncLeaveRC(vrc); 1529 return vrc; /* Tell the guest. */ 1545 1530 } 1546 1531 … … 1565 1550 LogFlowFunc(("pThis=%p, uMsg=%RU32\n", pThis, uMsg)); 1566 1551 1567 int rc = VINF_SUCCESS;1568 1569 int rcCallback = VINF_SUCCESS; /*rc for the callback. */1552 int vrc = VINF_SUCCESS; 1553 1554 int vrcCallback = VINF_SUCCESS; /* vrc for the callback. */ 1570 1555 bool fNotify = false; 1571 1556 … … 1577 1562 1578 1563 case GUEST_DND_FN_DISCONNECT: 1579 rc = VERR_CANCELLED;1564 vrc = VERR_CANCELLED; 1580 1565 break; 1581 1566 … … 1588 1573 AssertReturn(CB_MAGIC_DND_GH_SND_DATA_HDR == pCBData->hdr.uMagic, VERR_INVALID_PARAMETER); 1589 1574 1590 rc = pThis->i_onReceiveDataHdr(pCtx, &pCBData->data);1575 vrc = pThis->i_onReceiveDataHdr(pCtx, &pCBData->data); 1591 1576 break; 1592 1577 } … … 1598 1583 AssertReturn(CB_MAGIC_DND_GH_SND_DATA == pCBData->hdr.uMagic, VERR_INVALID_PARAMETER); 1599 1584 1600 rc = pThis->i_onReceiveData(pCtx, &pCBData->data);1585 vrc = pThis->i_onReceiveData(pCtx, &pCBData->data); 1601 1586 break; 1602 1587 } … … 1608 1593 AssertReturn(CB_MAGIC_DND_GH_SND_DIR == pCBData->hdr.uMagic, VERR_INVALID_PARAMETER); 1609 1594 1610 rc = pThis->i_onReceiveDir(pCtx, pCBData->pszPath, pCBData->cbPath, pCBData->fMode);1595 vrc = pThis->i_onReceiveDir(pCtx, pCBData->pszPath, pCBData->cbPath, pCBData->fMode); 1611 1596 break; 1612 1597 } … … 1618 1603 AssertReturn(CB_MAGIC_DND_GH_SND_FILE_HDR == pCBData->hdr.uMagic, VERR_INVALID_PARAMETER); 1619 1604 1620 rc = pThis->i_onReceiveFileHdr(pCtx, pCBData->pszFilePath, pCBData->cbFilePath,1621 pCBData->cbSize, pCBData->fMode, pCBData->fFlags);1605 vrc = pThis->i_onReceiveFileHdr(pCtx, pCBData->pszFilePath, pCBData->cbFilePath, 1606 pCBData->cbSize, pCBData->fMode, pCBData->fFlags); 1622 1607 break; 1623 1608 } … … 1631 1616 if (pThis->m_pState->m_uProtocolVersion <= 1) 1632 1617 { 1633 /* *1618 /* 1634 1619 * Notes for protocol v1 (< VBox 5.0): 1635 1620 * - Every time this command is being sent it includes the file header, … … 1638 1623 * appended data to the desired file. So just pass 0 as cbSize. 1639 1624 */ 1640 rc = pThis->i_onReceiveFileHdr(pCtx, pCBData->u.v1.pszFilePath, pCBData->u.v1.cbFilePath,1641 0 /* cbSize */, pCBData->u.v1.fMode, 0 /* fFlags */);1642 if (RT_SUCCESS( rc))1643 rc = pThis->i_onReceiveFileData(pCtx, pCBData->pvData, pCBData->cbData);1625 vrc = pThis->i_onReceiveFileHdr(pCtx, pCBData->u.v1.pszFilePath, pCBData->u.v1.cbFilePath, 1626 0 /* cbSize */, pCBData->u.v1.fMode, 0 /* fFlags */); 1627 if (RT_SUCCESS(vrc)) 1628 vrc = pThis->i_onReceiveFileData(pCtx, pCBData->pvData, pCBData->cbData); 1644 1629 } 1645 1630 else /* Protocol v2 and up. */ 1646 rc = pThis->i_onReceiveFileData(pCtx, pCBData->pvData, pCBData->cbData);1631 vrc = pThis->i_onReceiveFileData(pCtx, pCBData->pvData, pCBData->cbData); 1647 1632 break; 1648 1633 } … … 1662 1647 } 1663 1648 else if (pCBData->rc == VERR_WRONG_ORDER) 1664 { 1665 rc = pCtx->pState->setProgress(100, DND_PROGRESS_CANCELLED); 1666 } 1649 vrc = pCtx->pState->setProgress(100, DND_PROGRESS_CANCELLED); 1667 1650 else 1668 rc = pCtx->pState->setProgress(100, DND_PROGRESS_ERROR, pCBData->rc,1669 GuestDnDSource::i_guestErrorToString(pCBData->rc));1651 vrc = pCtx->pState->setProgress(100, DND_PROGRESS_ERROR, pCBData->rc, 1652 GuestDnDSource::i_guestErrorToString(pCBData->rc)); 1670 1653 1671 1654 LogRel3(("DnD: Guest reported file transfer error: %Rrc\n", pCBData->rc)); 1672 1655 1673 if (RT_SUCCESS( rc))1674 rcCallback = VERR_DND_GUEST_ERROR;1656 if (RT_SUCCESS(vrc)) 1657 vrcCallback = VERR_DND_GUEST_ERROR; 1675 1658 break; 1676 1659 } 1677 1660 #endif /* VBOX_WITH_DRAG_AND_DROP_GH */ 1678 1661 default: 1679 rc = VERR_NOT_SUPPORTED;1680 break; 1681 } 1682 1683 if ( RT_FAILURE( rc)1684 || RT_FAILURE( rcCallback))1662 vrc = VERR_NOT_SUPPORTED; 1663 break; 1664 } 1665 1666 if ( RT_FAILURE(vrc) 1667 || RT_FAILURE(vrcCallback)) 1685 1668 { 1686 1669 fNotify = true; 1687 if (RT_SUCCESS( rcCallback))1688 rcCallback =rc;1689 } 1690 1691 if (RT_FAILURE( rc))1692 { 1693 switch ( rc)1670 if (RT_SUCCESS(vrcCallback)) 1671 vrcCallback = vrc; 1672 } 1673 1674 if (RT_FAILURE(vrc)) 1675 { 1676 switch (vrc) 1694 1677 { 1695 1678 case VERR_NO_DATA: … … 1702 1685 1703 1686 default: 1704 LogRel(("DnD: Error %Rrc occurred, aborting file transfer to host\n", rc));1687 LogRel(("DnD: Error %Rrc occurred, aborting file transfer to host\n", vrc)); 1705 1688 break; 1706 1689 } … … 1708 1691 /* Unregister this callback. */ 1709 1692 AssertPtr(pCtx->pState); 1710 int rc2 = pCtx->pState->setCallback(uMsg, NULL /* PFNGUESTDNDCALLBACK */);1711 AssertRC( rc2);1693 int vrc2 = pCtx->pState->setCallback(uMsg, NULL /* PFNGUESTDNDCALLBACK */); 1694 AssertRC(vrc2); 1712 1695 } 1713 1696 … … 1715 1698 if ( pCtx->Transfer.isComplete() 1716 1699 && pCtx->isComplete()) 1717 {1718 1700 fNotify = true; 1719 } 1720 1721 LogFlowFunc(("cbProcessed=%RU64, cbExtra=%RU64, fNotify=%RTbool, rcCallback=%Rrc, rc=%Rrc\n", 1722 pCtx->cbProcessed, pCtx->cbExtra, fNotify, rcCallback, rc)); 1701 1702 LogFlowFunc(("cbProcessed=%RU64, cbExtra=%RU64, fNotify=%RTbool, vrcCallback=%Rrc, vrc=%Rrc\n", 1703 pCtx->cbProcessed, pCtx->cbExtra, fNotify, vrcCallback, vrc)); 1723 1704 1724 1705 if (fNotify) 1725 1706 { 1726 int rc2 = pCtx->EventCallback.Notify(rcCallback); 1727 AssertRC(rc2); 1728 } 1729 1730 LogFlowFuncLeaveRC(rc); 1731 return rc; /* Tell the guest. */ 1732 } 1733 1707 int vrc2 = pCtx->EventCallback.Notify( 1708 vrcCallback); 1709 AssertRC(vrc2); 1710 } 1711 1712 LogFlowFuncLeaveRC(vrc); 1713 return vrc; /* Tell the guest. */ 1714 } 1715
Note:
See TracChangeset
for help on using the changeset viewer.