Changeset 46465 in vbox for trunk/src/VBox/Main/src-server
- Timestamp:
- Jun 10, 2013 2:11:26 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 86308
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-server/MachineImpl.cpp
r46387 r46465 1721 1721 STDMETHODIMP Machine::COMSETTER(VideoCaptureEnabled)(BOOL fEnabled) 1722 1722 { 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(); 1726 1727 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 1727 1735 mHWData->mVideoCaptureEnabled = fEnabled; 1728 return S_OK; 1736 1737 return rc; 1729 1738 } 1730 1739 … … 1732 1741 { 1733 1742 CheckComArgOutSafeArrayPointerValid(aScreens); 1743 1744 AutoCaller autoCaller(this); 1745 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1746 1747 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 1734 1748 1735 1749 SafeArray<BOOL> screens(mHWData->mMonitorCount); … … 1744 1758 SafeArray<BOOL> screens(ComSafeArrayInArg(aScreens)); 1745 1759 AssertReturn(screens.size() <= RT_ELEMENTS(mHWData->maVideoCaptureScreens), E_INVALIDARG); 1760 bool fChanged = false; 1761 1762 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 1763 1746 1764 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 1748 1783 return S_OK; 1749 1784 } … … 1766 1801 1767 1802 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 1803 1804 HRESULT rc = checkStateDependency(MutableStateDep); 1805 if (FAILED(rc)) return rc; 1806 1768 1807 if (strFile.isEmpty()) 1769 1808 strFile = "VideoCap.webm"; 1809 1810 setModified(IsModified_MachineData); 1811 mHWData.backup(); 1770 1812 mHWData->mVideoCaptureFile = strFile; 1813 1771 1814 return S_OK; 1772 1815 } … … 1785 1828 { 1786 1829 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(); 1792 1831 1793 1832 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(); 1794 1839 mHWData->mVideoCaptureWidth = aHorzRes; 1840 1795 1841 return S_OK; 1796 1842 } … … 1811 1857 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1812 1858 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(); 1814 1866 mHWData->mVideoCaptureHeight = aVertRes; 1867 1815 1868 return S_OK; 1816 1869 } … … 1831 1884 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1832 1885 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(); 1834 1893 mHWData->mVideoCaptureRate = aRate; 1894 1835 1895 return S_OK; 1836 1896 } … … 1851 1911 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1852 1912 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(); 1854 1920 mHWData->mVideoCaptureFps = aFps; 1921 1855 1922 return S_OK; 1856 1923 } … … 13798 13865 13799 13866 /** 13867 * @note Locks this object for reading. 13868 */ 13869 HRESULT 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 /** 13800 13890 * @note Locks this object for reading. 13801 13891 */
Note:
See TracChangeset
for help on using the changeset viewer.