VirtualBox

Changeset 46465 in vbox for trunk/src/VBox/Main/src-server


Ignore:
Timestamp:
Jun 10, 2013 2:11:26 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
86308
Message:

Main/VPX: introduced onVideoCaptureChange event

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r46387 r46465  
    17211721STDMETHODIMP Machine::COMSETTER(VideoCaptureEnabled)(BOOL fEnabled)
    17221722{
    1723     AutoCaller autoCaller(this);
    1724     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1725 
     1723    HRESULT rc = S_OK;
     1724
     1725    AutoCaller autoCaller(this);
     1726    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    17261727    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     1728
     1729    rc = checkStateDependency(MutableStateDep);
     1730    if (FAILED(rc)) return rc;
     1731
     1732    setModified(IsModified_MachineData);
     1733    mHWData.backup();
     1734
    17271735    mHWData->mVideoCaptureEnabled = fEnabled;
    1728     return S_OK;
     1736
     1737    return rc;
    17291738}
    17301739
     
    17321741{
    17331742    CheckComArgOutSafeArrayPointerValid(aScreens);
     1743
     1744    AutoCaller autoCaller(this);
     1745    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     1746
     1747    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    17341748
    17351749    SafeArray<BOOL> screens(mHWData->mMonitorCount);
     
    17441758    SafeArray<BOOL> screens(ComSafeArrayInArg(aScreens));
    17451759    AssertReturn(screens.size() <= RT_ELEMENTS(mHWData->maVideoCaptureScreens), E_INVALIDARG);
     1760    bool fChanged = false;
     1761
     1762    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     1763
    17461764    for (unsigned i = 0; i < screens.size(); i++)
    1747         mHWData->maVideoCaptureScreens[i] = RT_BOOL(screens[i]);
     1765    {
     1766        if (mHWData->maVideoCaptureScreens[i] != RT_BOOL(screens[i]))
     1767        {
     1768            mHWData->maVideoCaptureScreens[i] = RT_BOOL(screens[i]);
     1769            fChanged = true;
     1770        }
     1771    }
     1772    if (fChanged)
     1773    {
     1774        alock.release();
     1775        HRESULT rc = onVideoCaptureChange();
     1776        alock.acquire();
     1777        if (FAILED(rc)) return rc;
     1778        setModified(IsModified_MachineData);
     1779        if (Global::IsOnline(mData->mMachineState))
     1780            saveSettings(NULL);
     1781    }
     1782
    17481783    return S_OK;
    17491784}
     
    17661801
    17671802    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     1803
     1804    HRESULT rc = checkStateDependency(MutableStateDep);
     1805    if (FAILED(rc)) return rc;
     1806
    17681807    if (strFile.isEmpty())
    17691808       strFile = "VideoCap.webm";
     1809
     1810    setModified(IsModified_MachineData);
     1811    mHWData.backup();
    17701812    mHWData->mVideoCaptureFile = strFile;
     1813
    17711814    return S_OK;
    17721815}
     
    17851828{
    17861829    AutoCaller autoCaller(this);
    1787     if (FAILED(autoCaller.rc()))
    1788     {
    1789         LogFlow(("Autolocked failed\n"));
    1790         return autoCaller.rc();
    1791     }
     1830    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    17921831
    17931832    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     1833
     1834    HRESULT rc = checkStateDependency(MutableStateDep);
     1835    if (FAILED(rc)) return rc;
     1836
     1837    setModified(IsModified_MachineData);
     1838    mHWData.backup();
    17941839    mHWData->mVideoCaptureWidth = aHorzRes;
     1840
    17951841    return S_OK;
    17961842}
     
    18111857    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    18121858
    1813     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     1859    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     1860
     1861    HRESULT rc = checkStateDependency(MutableStateDep);
     1862    if (FAILED(rc)) return rc;
     1863
     1864    setModified(IsModified_MachineData);
     1865    mHWData.backup();
    18141866    mHWData->mVideoCaptureHeight = aVertRes;
     1867
    18151868    return S_OK;
    18161869}
     
    18311884    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    18321885
    1833     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     1886    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     1887
     1888    HRESULT rc = checkStateDependency(MutableStateDep);
     1889    if (FAILED(rc)) return rc;
     1890
     1891    setModified(IsModified_MachineData);
     1892    mHWData.backup();
    18341893    mHWData->mVideoCaptureRate = aRate;
     1894
    18351895    return S_OK;
    18361896}
     
    18511911    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    18521912
    1853     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     1913    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     1914
     1915    HRESULT rc = checkStateDependency(MutableStateDep);
     1916    if (FAILED(rc)) return rc;
     1917
     1918    setModified(IsModified_MachineData);
     1919    mHWData.backup();
    18541920    mHWData->mVideoCaptureFps = aFps;
     1921
    18551922    return S_OK;
    18561923}
     
    1379813865
    1379913866/**
     13867 * @note Locks this object for reading.
     13868 */
     13869HRESULT SessionMachine::onVideoCaptureChange()
     13870{
     13871    LogFlowThisFunc(("\n"));
     13872
     13873    AutoCaller autoCaller(this);
     13874    AssertComRCReturn(autoCaller.rc(), autoCaller.rc());
     13875
     13876    ComPtr<IInternalSessionControl> directControl;
     13877    {
     13878        AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     13879        directControl = mData->mSession.mDirectControl;
     13880    }
     13881
     13882    /* ignore notifications sent after #OnSessionEnd() is called */
     13883    if (!directControl)
     13884        return S_OK;
     13885
     13886    return directControl->OnVideoCaptureChange();
     13887}
     13888
     13889/**
    1380013890 *  @note Locks this object for reading.
    1380113891 */
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