VirtualBox

Changeset 56909 in vbox for trunk/src/VBox/Additions/common


Ignore:
Timestamp:
Jul 10, 2015 6:09:14 AM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
101596
Message:

DnD: Changed DnDURIList's allocation scheme for stored DnDURIObject objects.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibDragAndDrop.cpp

    r56904 r56909  
    12311231}
    12321232
    1233 static int vbglR3DnDGHSendDir(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject &obj)
    1234 {
    1235     AssertPtrReturn(pCtx,                                  VERR_INVALID_POINTER);
    1236     AssertReturn(obj.GetType() == DnDURIObject::Directory, VERR_INVALID_PARAMETER);
     1233static int vbglR3DnDGHSendDir(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject *pObj)
     1234{
     1235    AssertPtrReturn(pObj,                                    VERR_INVALID_POINTER);
     1236    AssertPtrReturn(pCtx,                                    VERR_INVALID_POINTER);
     1237    AssertReturn(pObj->GetType() == DnDURIObject::Directory, VERR_INVALID_PARAMETER);
    12371238
    12381239    DragAndDropSvc::VBOXDNDGHSENDDIRMSG Msg;
     
    12431244    Msg.hdr.cParms      = 3;
    12441245
    1245     RTCString strPath = obj.GetDestPath();
     1246    RTCString strPath = pObj->GetDestPath();
    12461247    LogFlowFunc(("strDir=%s (%zu), fMode=0x%x\n",
    1247                  strPath.c_str(), strPath.length(), obj.GetMode()));
     1248                 strPath.c_str(), strPath.length(), pObj->GetMode()));
    12481249
    12491250    Msg.pvName.SetPtr((void *)strPath.c_str(), (uint32_t)(strPath.length() + 1));
    12501251    Msg.cbName.SetUInt32((uint32_t)(strPath.length() + 1));
    1251     Msg.fMode.SetUInt32(obj.GetMode());
     1252    Msg.fMode.SetUInt32(pObj->GetMode());
    12521253
    12531254    int rc = vbglR3DoIOCtl(VBOXGUEST_IOCTL_HGCM_CALL(sizeof(Msg)), &Msg, sizeof(Msg));
     
    12591260}
    12601261
    1261 static int vbglR3DnDGHSendFile(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject &obj)
    1262 {
    1263     AssertPtrReturn(pCtx,                             VERR_INVALID_POINTER);
    1264     AssertReturn(obj.GetType() == DnDURIObject::File, VERR_INVALID_PARAMETER);
    1265     AssertReturn(obj.IsOpen(),                        VERR_INVALID_STATE);
     1262static int vbglR3DnDGHSendFile(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject *pObj)
     1263{
     1264    AssertPtrReturn(pCtx,                               VERR_INVALID_POINTER);
     1265    AssertPtrReturn(pObj,                               VERR_INVALID_POINTER);
     1266    AssertReturn(pObj->GetType() == DnDURIObject::File, VERR_INVALID_PARAMETER);
     1267    AssertReturn(pObj->IsOpen(),                        VERR_INVALID_STATE);
    12661268
    12671269    uint32_t cbBuf = _64K;           /** @todo Make this configurable? */
     
    12721274    int rc;
    12731275
    1274     RTCString strPath = obj.GetDestPath();
    1275 
    1276     LogFlowFunc(("strFile=%s (%zu), cbSize=%RU64, fMode=0x%x\n", strPath.c_str(), strPath.length(), obj.GetSize(), obj.GetMode()));
     1276    RTCString strPath = pObj->GetDestPath();
     1277
     1278    LogFlowFunc(("strFile=%s (%zu), cbSize=%RU64, fMode=0x%x\n", strPath.c_str(), strPath.length(),
     1279                 pObj->GetSize(), pObj->GetMode()));
    12771280    LogFlowFunc(("uProtocol=%RU32, uClientID=%RU32\n", pCtx->uProtocol, pCtx->uClientID));
    12781281
     
    12901293        MsgHdr.cbName.SetUInt32((uint32_t)(strPath.length() + 1));
    12911294        MsgHdr.uFlags.SetUInt32(0);                                                      /* Flags; unused at the moment. */
    1292         MsgHdr.fMode.SetUInt32(obj.GetMode());                                           /* File mode */
    1293         MsgHdr.cbTotal.SetUInt64(obj.GetSize());                                         /* File size (in bytes). */
     1295        MsgHdr.fMode.SetUInt32(pObj->GetMode());                                         /* File mode */
     1296        MsgHdr.cbTotal.SetUInt64(pObj->GetSize());                                       /* File size (in bytes). */
    12941297
    12951298        rc = vbglR3DoIOCtl(VBOXGUEST_IOCTL_HGCM_CALL(sizeof(MsgHdr)), &MsgHdr, sizeof(MsgHdr));
     
    13191322            Msg.u.v1.pvName.SetPtr((void *)strPath.c_str(), (uint32_t)(strPath.length() + 1));
    13201323            Msg.u.v1.cbName.SetUInt32((uint32_t)(strPath.length() + 1));
    1321             Msg.u.v1.fMode.SetUInt32(obj.GetMode());
     1324            Msg.u.v1.fMode.SetUInt32(pObj->GetMode());
    13221325        }
    13231326        else
     
    13291332        }
    13301333
    1331         uint64_t cbToReadTotal  = obj.GetSize();
     1334        uint64_t cbToReadTotal  = pObj->GetSize();
    13321335        uint64_t cbWrittenTotal = 0;
    13331336        while (cbToReadTotal)
     
    13361339            uint32_t cbRead   = 0;
    13371340            if (cbToRead)
    1338                 rc = obj.Read(pvBuf, cbToRead, &cbRead);
     1341                rc = pObj->Read(pvBuf, cbToRead, &cbRead);
    13391342
    13401343            LogFlowFunc(("cbToReadTotal=%RU64, cbToRead=%RU32, cbRead=%RU32, rc=%Rrc\n",
     
    13701373            cbWrittenTotal += cbRead;
    13711374
    1372             LogFlowFunc(("%RU64/%RU64 -- %RU8%%\n", cbWrittenTotal, obj.GetSize(), cbWrittenTotal * 100 / obj.GetSize()));
     1375            LogFlowFunc(("%RU64/%RU64 -- %RU8%%\n", cbWrittenTotal, pObj->GetSize(), cbWrittenTotal * 100 / pObj->GetSize()));
    13731376        };
    13741377    }
     
    13801383}
    13811384
    1382 static int vbglR3DnDGHSendURIObject(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject &obj)
     1385static int vbglR3DnDGHSendURIObject(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject *pObj)
    13831386{
    13841387    AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
     1388    AssertPtrReturn(pObj, VERR_INVALID_POINTER);
    13851389
    13861390    int rc;
    13871391
    1388     switch (obj.GetType())
     1392    switch (pObj->GetType())
    13891393    {
    13901394        case DnDURIObject::Directory:
    1391             rc = vbglR3DnDGHSendDir(pCtx, obj);
     1395            rc = vbglR3DnDGHSendDir(pCtx, pObj);
    13921396            break;
    13931397
    13941398        case DnDURIObject::File:
    1395             rc = vbglR3DnDGHSendFile(pCtx, obj);
     1399            rc = vbglR3DnDGHSendFile(pCtx, pObj);
    13961400            break;
    13971401
    13981402        default:
    1399             AssertMsgFailed(("URI type %ld not implemented\n", obj.GetType()));
     1403            AssertMsgFailed(("Object type %ld not implemented\n", pObj->GetType()));
    14001404            rc = VERR_NOT_IMPLEMENTED;
    14011405            break;
     
    14411445        while (!lstURI.IsEmpty())
    14421446        {
    1443             DnDURIObject &nextObj = lstURI.First();
    1444 
    1445             rc = vbglR3DnDGHSendURIObject(pCtx, nextObj);
     1447            DnDURIObject *pNextObj = lstURI.First();
     1448
     1449            rc = vbglR3DnDGHSendURIObject(pCtx, pNextObj);
    14461450            if (RT_FAILURE(rc))
    14471451                break;
Note: See TracChangeset for help on using the changeset viewer.

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