HRESULT SystemProperties::loadSettings(const settings::SystemProperties &data) { AutoCaller autoCaller(this); if (FAILED(autoCaller.rc())) return autoCaller.rc(); AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); HRESULT rc = S_OK; rc = setDefaultMachineFolder(data.strDefaultMachineFolder); if (FAILED(rc)) return rc; rc = setLoggingLevel(data.strLoggingLevel); if (FAILED(rc)) return rc; rc = setDefaultHardDiskFormat(data.strDefaultHardDiskFormat); if (FAILED(rc)) return rc; rc = setVRDEAuthLibrary(data.strVRDEAuthLibrary); if (FAILED(rc)) return rc; rc = setWebServiceAuthLibrary(data.strWebServiceAuthLibrary); if (FAILED(rc)) return rc; rc = setDefaultVRDEExtPack(data.strDefaultVRDEExtPack); if (FAILED(rc)) return rc; m->ulLogHistoryCount = data.ulLogHistoryCount; m->fExclusiveHwVirt = data.fExclusiveHwVirt; rc = setAutostartDatabasePath(data.strAutostartDatabasePath); if (FAILED(rc)) return rc; { /* must ignore errors signalled here, because the guest additions * file may not exist, and in this case keep the empty string */ ErrorInfoKeeper eik; (void)setDefaultAdditionsISO(data.strDefaultAdditionsISO); } rc = setDefaultFrontend(data.strDefaultFrontend); if (FAILED(rc)) return rc; return S_OK; }
HRESULT SystemProperties::setDefaultAdditionsISO(const com::Utf8Str &aDefaultAdditionsISO) { /** @todo not yet implemented, settings handling is missing */ ReturnComNotImplemented(); AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); HRESULT rc = setDefaultAdditionsISO(aDefaultAdditionsISO); alock.release(); if (SUCCEEDED(rc)) { // VirtualBox::i_saveSettings() needs vbox write lock AutoWriteLock vboxLock(mParent COMMA_LOCKVAL_SRC_POS); rc = mParent->i_saveSettings(); } return rc; }
HRESULT SystemProperties::getDefaultAdditionsISO(com::Utf8Str &aDefaultAdditionsISO) { AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); if (m->strDefaultAdditionsISO.isEmpty()) { /* no guest additions, check if it showed up in the mean time */ alock.release(); { AutoWriteLock wlock(this COMMA_LOCKVAL_SRC_POS); ErrorInfoKeeper eik; (void)setDefaultAdditionsISO(""); } alock.acquire(); } aDefaultAdditionsISO = m->strDefaultAdditionsISO; return S_OK; }
STDMETHODIMP SystemProperties::COMSETTER(DefaultAdditionsISO)(IN_BSTR aDefaultAdditionsISO) { AutoCaller autoCaller(this); if (FAILED(autoCaller.rc())) return autoCaller.rc(); /** @todo not yet implemented, settings handling is missing */ ReturnComNotImplemented(); AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); HRESULT rc = setDefaultAdditionsISO(aDefaultAdditionsISO); alock.release(); if (SUCCEEDED(rc)) { // VirtualBox::saveSettings() needs vbox write lock AutoWriteLock vboxLock(mParent COMMA_LOCKVAL_SRC_POS); rc = mParent->saveSettings(); } return rc; }
STDMETHODIMP SystemProperties::COMGETTER(DefaultAdditionsISO)(BSTR *aDefaultAdditionsISO) { CheckComArgOutPointerValid(aDefaultAdditionsISO); AutoCaller autoCaller(this); if (FAILED(autoCaller.rc())) return autoCaller.rc(); AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); if (m->strDefaultAdditionsISO.isEmpty()) { /* no guest additions, check if it showed up in the mean time */ alock.release(); { AutoWriteLock wlock(this COMMA_LOCKVAL_SRC_POS); ErrorInfoKeeper eik; (void)setDefaultAdditionsISO(""); } alock.acquire(); } m->strDefaultAdditionsISO.cloneTo(aDefaultAdditionsISO); return S_OK; }