VirtualBox

Changeset 97760 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Dec 7, 2022 3:13:42 PM (2 years ago)
Author:
vboxsync
Message:

DnD/Main: Don't set any (new) progress if the progress object already has been completed and/or cancelled.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp

    r97725 r97760  
    431431    HRESULT hr = S_OK;
    432432
     433    if (m_pProgress.isNull())
     434        return VINF_SUCCESS;
     435
    433436    BOOL fCompleted = FALSE;
     437    hr = m_pProgress->COMGETTER(Completed)(&fCompleted);
     438    AssertComRCReturn(hr, VERR_COM_UNEXPECTED);
     439
    434440    BOOL fCanceled  = FALSE;
     441    hr = m_pProgress->COMGETTER(Canceled)(&fCanceled);
     442    AssertComRCReturn(hr, VERR_COM_UNEXPECTED);
     443
     444    LogFlowFunc(("Progress fCompleted=%RTbool, fCanceled=%RTbool\n", fCompleted, fCanceled));
    435445
    436446    int rc = VINF_SUCCESS;
    437447
    438     if (!m_pProgress.isNull())
    439     {
    440         hr = m_pProgress->COMGETTER(Completed)(&fCompleted);
    441         AssertComRC(hr);
    442 
    443         hr = m_pProgress->COMGETTER(Canceled)(&fCanceled);
    444         AssertComRC(hr);
    445 
    446         LogFlowFunc(("Progress fCompleted=%RTbool, fCanceled=%RTbool\n", fCompleted, fCanceled));
    447     }
    448 
    449448    switch (uStatus)
    450449    {
     
    453452            LogRel(("DnD: Guest reported error %Rrc\n", rcOp));
    454453
    455             if (   !m_pProgress.isNull()
    456                 && !fCompleted)
     454            if (   !fCompleted
     455                && !fCanceled)
    457456                hr = m_pProgress->i_notifyComplete(VBOX_E_DND_ERROR,
    458457                                                   COM_IIDOF(IGuest),
     
    466465            LogRel2(("DnD: Guest cancelled operation\n"));
    467466
    468             if (   !m_pProgress.isNull()
    469                 && !fCompleted)
     467            if (   !fCompleted
     468                && !fCanceled)
    470469            {
    471470                hr = m_pProgress->Cancel();
     
    485484            LogRel2(("DnD: Guest reporting running/completion status with %u%%\n", uPercentage));
    486485
    487             if (   !m_pProgress.isNull()
    488                 && !fCompleted)
     486            if (   !fCompleted
     487                && !fCanceled)
    489488            {
    490489                hr = m_pProgress->SetCurrentOperationProgress(uPercentage);
    491                 AssertComRC(hr);
     490                AssertComRCReturn(hr, VERR_COM_UNEXPECTED);
    492491                if (   uStatus     == DragAndDropSvc::DND_PROGRESS_COMPLETE
    493492                    || uPercentage >= 100)
    494493                {
    495494                    hr = m_pProgress->i_notifyComplete(S_OK);
    496                     AssertComRC(hr);
     495                    AssertComRCReturn(hr, VERR_COM_UNEXPECTED);
    497496                }
    498497            }
     
    502501        default:
    503502            break;
    504     }
    505 
    506     if (!m_pProgress.isNull())
    507     {
    508         hr = m_pProgress->COMGETTER(Completed)(&fCompleted);
    509         AssertComRC(hr);
    510         hr = m_pProgress->COMGETTER(Canceled)(&fCanceled);
    511         AssertComRC(hr);
    512 
    513         LogFlowFunc(("Progress fCompleted=%RTbool, fCanceled=%RTbool\n", fCompleted, fCanceled));
    514503    }
    515504
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette