Changeset 52934 in vbox for trunk/src/VBox/Main/src-server
- Timestamp:
- Oct 2, 2014 1:53:30 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 96372
- Location:
- trunk/src/VBox/Main/src-server
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-server/HostDnsService.cpp
r52897 r52934 5 5 6 6 /* 7 * Copyright (C) 2013 Oracle Corporation7 * Copyright (C) 2013-2014 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 67 67 68 68 inline static void detachVectorOfWString(const std::vector<std::wstring>& v, 69 ComSafeArrayOut(BSTR, aBstrArray)) 70 { 71 com::SafeArray<BSTR> aBstr(v.size()); 72 73 std::vector<std::wstring>::const_iterator it; 74 75 int i = 0; 76 it = v.begin(); 77 for (; it != v.end(); ++it, ++i) 78 Utf8Str(it->c_str()).cloneTo(&aBstr[i]); 79 80 aBstr.detachTo(ComSafeArrayOutArg(aBstrArray)); 69 std::vector<com::Utf8Str> &aArray) 70 { 71 aArray.resize(v.size()); 72 size_t i = 0; 73 for (std::vector<std::wstring>::const_iterator it = v.begin(); it != v.end(); ++it, ++i) 74 aArray[i] = Utf8Str(it->c_str()); 81 75 } 82 76 … … 265 259 } 266 260 267 HRESULT HostDnsMonitorProxy::GetNameServers( ComSafeArrayOut(BSTR, aNameServers))261 HRESULT HostDnsMonitorProxy::GetNameServers(std::vector<com::Utf8Str> &aNameServers) 268 262 { 269 263 AssertReturn(m && m->info, E_FAIL); … … 276 270 dumpHostDnsStrVector("Name Server", m->info->servers); 277 271 278 detachVectorOfWString(m->info->servers, ComSafeArrayOutArg(aNameServers));272 detachVectorOfWString(m->info->servers, aNameServers); 279 273 280 274 return S_OK; 281 275 } 282 276 283 HRESULT HostDnsMonitorProxy::GetDomainName( BSTR *aDomainName)277 HRESULT HostDnsMonitorProxy::GetDomainName(com::Utf8Str *pDomainName) 284 278 { 285 279 AssertReturn(m && m->info, E_FAIL); … … 291 285 LogRel(("HostDnsMonitorProxy::GetDomainName: %s\n", m->info->domain.c_str())); 292 286 293 Utf8Str(m->info->domain.c_str()).cloneTo(aDomainName);287 *pDomainName = m->info->domain.c_str(); 294 288 295 289 return S_OK; 296 290 } 297 291 298 HRESULT HostDnsMonitorProxy::GetSearchStrings( ComSafeArrayOut(BSTR, aSearchStrings))292 HRESULT HostDnsMonitorProxy::GetSearchStrings(std::vector<com::Utf8Str> &aSearchStrings) 299 293 { 300 294 AssertReturn(m && m->info, E_FAIL); … … 307 301 dumpHostDnsStrVector("Search String", m->info->searchList); 308 302 309 detachVectorOfWString(m->info->searchList, ComSafeArrayOutArg(aSearchStrings));303 detachVectorOfWString(m->info->searchList, aSearchStrings); 310 304 311 305 return S_OK; -
trunk/src/VBox/Main/src-server/HostDnsService.h
r52897 r52934 112 112 void notify() const; 113 113 114 HRESULT GetNameServers( ComSafeArrayOut(BSTR, aNameServers));115 HRESULT GetDomainName( BSTR *aDomainName);116 HRESULT GetSearchStrings( ComSafeArrayOut(BSTR, aSearchStrings));114 HRESULT GetNameServers(std::vector<com::Utf8Str> &aNameServers); 115 HRESULT GetDomainName(com::Utf8Str *pDomainName); 116 HRESULT GetSearchStrings(std::vector<com::Utf8Str> &aSearchStrings); 117 117 118 118 bool operator==(PCHostDnsMonitorProxy&); -
trunk/src/VBox/Main/src-server/HostImpl.cpp
r52170 r52934 776 776 # endif /* RT_OS_LINUX */ 777 777 778 SafeIfaceArray<IHostNetworkInterface> networkInterfaces(list); 779 networkInterfaces.detachTo(ComSafeArrayOutArg(aNetworkInterfaces)); 778 aNetworkInterfaces.resize(list.size()); 779 size_t i = 0; 780 for (std::list<ComObjPtr<HostNetworkInterface> >::const_iterator it = list.begin(); it != list.end(); ++it, ++i) 781 aNetworkInterfaces[i] = *it; 780 782 781 783 return S_OK; … … 796 798 return rc; 797 799 798 SafeIfaceArray<IHostUSBDevice> resultArr; 799 rc = m->pUSBProxyService->getDeviceCollection(ComSafeArrayAsOutParam(resultArr)); 800 if (FAILED(rc)) 801 return rc; 802 803 aUSBDevices.resize(resultArr.size()); 804 for (size_t i = 0; i < resultArr.size(); ++i) 805 { 806 ComPtr<IHostUSBDevice> iHu = resultArr[i]; 807 iHu.queryInterfaceTo(aUSBDevices[i].asOutParam()); 808 } 809 810 return rc; 800 return m->pUSBProxyService->getDeviceCollection(aUSBDevices); 811 801 #else 812 802 /* Note: The GUI depends on this method returning E_NOTIMPL with no … … 827 817 { 828 818 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 829 830 com::SafeArray<BSTR> resultArr; 831 HRESULT rc = m->hostDnsMonitorProxy.GetNameServers(ComSafeArrayAsOutParam(resultArr)); 832 if (FAILED(rc)) 833 return rc; 834 835 aNameServers.resize(resultArr.size()); 836 for (size_t i = 0; i < resultArr.size(); ++i) 837 aNameServers[i] = com::Utf8Str(resultArr[i]); 838 839 return S_OK; 819 return m->hostDnsMonitorProxy.GetNameServers(aNameServers); 840 820 } 841 821 … … 848 828 /* XXX: note here should be synchronization with thread polling state 849 829 * changes in name resoving system on host */ 850 Bstr tmpName; 851 HRESULT rc = m->hostDnsMonitorProxy.GetDomainName(tmpName.asOutParam()); 852 if (FAILED(rc)) 853 return rc; 854 855 aDomainName = com::Utf8Str(tmpName); 856 857 return S_OK; 830 return m->hostDnsMonitorProxy.GetDomainName(&aDomainName); 858 831 } 859 832 … … 865 838 { 866 839 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 867 868 com::SafeArray<BSTR> resultArr; 869 HRESULT rc = m->hostDnsMonitorProxy.GetSearchStrings(ComSafeArrayAsOutParam(resultArr)); 870 if (FAILED(rc)) 871 return rc; 872 873 aSearchStrings.resize(resultArr.size()); 874 for (size_t i = 0; i < resultArr.size(); ++i) 875 aSearchStrings[i] = com::Utf8Str(resultArr[i]); 876 877 return S_OK; 840 return m->hostDnsMonitorProxy.GetSearchStrings(aSearchStrings); 878 841 } 879 842 -
trunk/src/VBox/Main/src-server/MachineImpl.cpp
r52933 r52934 1659 1659 HRESULT Machine::setVideoCaptureScreens(const std::vector<BOOL> &aVideoCaptureScreens) 1660 1660 { 1661 SafeArray<BOOL> screens(aVideoCaptureScreens); 1662 AssertReturn(screens.size() <= RT_ELEMENTS(mHWData->maVideoCaptureScreens), E_INVALIDARG); 1661 AssertReturn(aVideoCaptureScreens.size() <= RT_ELEMENTS(mHWData->maVideoCaptureScreens), E_INVALIDARG); 1663 1662 bool fChanged = false; 1664 1663 1665 1664 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 1666 1665 1667 for (unsigned i = 0; i < screens.size(); ++i)1668 { 1669 if (mHWData->maVideoCaptureScreens[i] != RT_BOOL( screens[i]))1670 { 1671 mHWData->maVideoCaptureScreens[i] = RT_BOOL( screens[i]);1666 for (unsigned i = 0; i < aVideoCaptureScreens.size(); ++i) 1667 { 1668 if (mHWData->maVideoCaptureScreens[i] != RT_BOOL(aVideoCaptureScreens[i])) 1669 { 1670 mHWData->maVideoCaptureScreens[i] = RT_BOOL(aVideoCaptureScreens[i]); 1672 1671 fChanged = true; 1673 1672 } … … 4823 4822 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 4824 4823 4825 com::SafeArray<BSTR> saKeys(mData->pMachineConfigFile->mapExtraDataItems.size());4826 4824 aKeys.resize(mData->pMachineConfigFile->mapExtraDataItems.size()); 4827 4825 size_t i = 0; … … 6331 6329 *aHeight = u32Height; 6332 6330 6333 com::SafeArray<BYTE> bitmap(cbData);6331 aData.resize(cbData); 6334 6332 /* Convert pixels to format expected by the API caller. */ 6335 6333 if (aBGR) … … 6338 6336 for (unsigned i = 0; i < cbData; i += 4) 6339 6337 { 6340 bitmap[i] = pu8Data[i];6341 bitmap[i + 1] = pu8Data[i + 1];6342 bitmap[i + 2] = pu8Data[i + 2];6343 bitmap[i + 3] = 0xff;6338 aData[i] = pu8Data[i]; 6339 aData[i + 1] = pu8Data[i + 1]; 6340 aData[i + 2] = pu8Data[i + 2]; 6341 aData[i + 3] = 0xff; 6344 6342 } 6345 6343 } … … 6349 6347 for (unsigned i = 0; i < cbData; i += 4) 6350 6348 { 6351 bitmap[i] = pu8Data[i + 2]; 6352 bitmap[i + 1] = pu8Data[i + 1]; 6353 bitmap[i + 2] = pu8Data[i]; 6354 bitmap[i + 3] = 0xff; 6355 } 6356 } 6357 aData.resize(bitmap.size()); 6358 for (size_t i = 0; i < bitmap.size(); ++i) 6359 aData[i] = bitmap[i]; 6349 aData[i] = pu8Data[i + 2]; 6350 aData[i + 1] = pu8Data[i + 1]; 6351 aData[i + 2] = pu8Data[i]; 6352 aData[i + 3] = 0xff; 6353 } 6354 } 6360 6355 6361 6356 freeSavedDisplayScreenshot(pu8Data); … … 6396 6391 if (RT_SUCCESS(vrc)) 6397 6392 { 6398 com::SafeArray<BYTE> screenData(cbPNG); 6399 screenData.initFrom(pu8PNG, cbPNG); 6393 aData.resize(cbPNG); 6394 if (cbPNG) 6395 memcpy(&aData.front(), pu8PNG, cbPNG); 6400 6396 if (pu8PNG) 6401 6397 RTMemFree(pu8PNG); 6402 aData.resize(screenData.size());6403 for (size_t i = 0; i < screenData.size(); ++i)6404 aData[i] = screenData[i];6405 6398 } 6406 6399 else … … 6468 6461 *aHeight = u32Height; 6469 6462 6470 com::SafeArray<BYTE> png(cbData); 6471 png.initFrom(pu8Data, cbData); 6472 aData.resize(png.size()); 6473 for (size_t i = 0; i < png.size(); ++i) 6474 aData[i] = png[i]; 6463 aData.resize(cbData); 6464 if (cbData) 6465 memcpy(&aData.front(), pu8Data, cbData); 6475 6466 6476 6467 freeSavedDisplayScreenshot(pu8Data); … … 6597 6588 * One byte expands to approx. 25 bytes of breathtaking XML. */ 6598 6589 size_t cbData = (size_t)RT_MIN(aSize, 32768); 6599 com::SafeArray<BYTE> logData(cbData);6590 aData.resize(cbData); 6600 6591 6601 6592 RTFILE LogFile; … … 6604 6595 if (RT_SUCCESS(vrc)) 6605 6596 { 6606 vrc = RTFileReadAt(LogFile, aOffset, logData.raw(), cbData, &cbData);6597 vrc = RTFileReadAt(LogFile, aOffset, cbData? &aData.front(): NULL, cbData, &cbData); 6607 6598 if (RT_SUCCESS(vrc)) 6608 logData.resize(cbData);6599 aData.resize(cbData); 6609 6600 else 6610 6601 rc = setError(VBOX_E_IPRT_ERROR, … … 6619 6610 6620 6611 if (FAILED(rc)) 6621 logData.resize(0); 6622 6623 aData.resize(logData.size()); 6624 for (size_t i = 0; i < logData.size(); ++i) 6625 aData[i] = logData[i]; 6612 aData.resize(0); 6626 6613 6627 6614 return rc; … … 6982 6969 { 6983 6970 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 6984 com::SafeArray<BYTE> icon(mUserData->mIcon.size()); 6985 aIcon.resize(mUserData->mIcon.size()); 6986 memcpy(icon.raw(), &mUserData->mIcon[0], mUserData->mIcon.size()); 6987 aIcon.resize(icon.size()); 6988 for (size_t i = 0; i < icon.size(); ++i) 6989 aIcon[i] = icon[i]; 6971 size_t cbIcon = mUserData->mIcon.size(); 6972 aIcon.resize(cbIcon); 6973 if (cbIcon) 6974 memcpy(&aIcon.front(), &mUserData->mIcon[0], cbIcon); 6990 6975 return S_OK; 6991 6976 } … … 6999 6984 i_setModified(IsModified_MachineData); 7000 6985 mUserData.backup(); 7001 com::SafeArray<BYTE> icon(aIcon); 7002 mUserData->mIcon.resize(aIcon.size()); 7003 memcpy(&mUserData->mIcon[0], icon.raw(), mUserData->mIcon.size()); 6986 size_t cbIcon = aIcon.size(); 6987 mUserData->mIcon.resize(cbIcon); 6988 if (cbIcon) 6989 memcpy(&mUserData->mIcon[0], &aIcon.front(), cbIcon); 7004 6990 } 7005 6991 return hrc; … … 7008 6994 HRESULT Machine::getUSBProxyAvailable(BOOL *aUSBProxyAvailable) 7009 6995 { 7010 7011 6996 #ifdef VBOX_WITH_USB 7012 6997 *aUSBProxyAvailable = true; … … 8424 8409 cbOut, 8425 8410 DECODE_STR_MAX); 8426 com::SafeArray<BYTE> iconByte(cbOut); 8427 int vrc = RTBase64Decode(pszStr, iconByte.raw(), cbOut, NULL, NULL); 8411 mUserData->mIcon.resize(cbOut); 8412 int vrc = VINF_SUCCESS; 8413 if (cbOut) 8414 vrc = RTBase64Decode(pszStr, &mUserData->mIcon.front(), cbOut, NULL, NULL); 8428 8415 if (RT_FAILURE(vrc)) 8416 { 8417 mUserData->mIcon.resize(0); 8429 8418 return setError(E_FAIL, 8430 8419 tr("Failure to Decode Icon Data. '%s' (%Rrc)"), 8431 8420 pszStr, 8432 8421 vrc); 8433 mUserData->mIcon.resize(iconByte.size()); 8434 memcpy(&mUserData->mIcon[0], iconByte.raw(), mUserData->mIcon.size()); 8422 } 8435 8423 8436 8424 // look up the object by Id to check it is valid … … 9821 9809 9822 9810 // Encode the Icon Override data from Machine and store on config userdata. 9823 com::SafeArray<BYTE> iconByte;9824 COMGETTER(Icon)(ComSafeArrayAsOutParam(iconByte));9811 std::vector<BYTE> iconByte; 9812 getIcon(iconByte); 9825 9813 ssize_t cbData = iconByte.size(); 9826 9814 if (cbData > 0) … … 9829 9817 Utf8Str strIconData; 9830 9818 strIconData.reserve(cchOut+1); 9831 int vrc = RTBase64Encode( iconByte.raw(), cbData,9819 int vrc = RTBase64Encode(&iconByte.front(), cbData, 9832 9820 strIconData.mutableRaw(), strIconData.capacity(), 9833 9821 NULL); -
trunk/src/VBox/Main/src-server/USBProxyService.cpp
r51498 r52934 133 133 * @remarks The caller must own the write lock of the host object. 134 134 */ 135 HRESULT USBProxyService::getDeviceCollection( ComSafeArrayOut(IHostUSBDevice *, aUSBDevices))135 HRESULT USBProxyService::getDeviceCollection(std::vector<ComPtr<IHostUSBDevice> > &aUSBDevices) 136 136 { 137 137 AssertReturn(isWriteLockOnCurrentThread(), E_FAIL); 138 CheckComArgOutSafeArrayPointerValid(aUSBDevices);139 138 140 139 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 141 140 142 SafeIfaceArray<IHostUSBDevice> Collection(mDevices); 143 Collection.detachTo(ComSafeArrayOutArg(aUSBDevices)); 141 aUSBDevices.resize(mDevices.size()); 142 size_t i = 0; 143 for (HostUSBDeviceList::const_iterator it = mDevices.begin(); it != mDevices.end(); ++it, ++i) 144 aUSBDevices[i] = *it; 144 145 145 146 return S_OK; -
trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp
r52615 r52934 3209 3209 * Takes a list of machine groups, and sanitizes/validates it. 3210 3210 * 3211 * @param aMachineGroups Safearray with the machine groups.3211 * @param aMachineGroups Array with the machine groups. 3212 3212 * @param pllMachineGroups Pointer to list of strings for the result. 3213 3213 *
Note:
See TracChangeset
for help on using the changeset viewer.