Changeset 89724 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Jun 15, 2021 11:34:15 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 145175
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
r89723 r89724 682 682 static uint16_t ichac97MixerGet(PAC97STATE pThis, uint32_t uMixerIdx); 683 683 #ifdef IN_RING3 684 static void ichac97R3StreamLock(PAC97STREAMR3 pStreamCC); 685 static void ichac97R3StreamUnlock(PAC97STREAMR3 pStreamCC); 686 684 DECLINLINE(void) ichac97R3StreamLock(PAC97STREAMR3 pStreamCC); 685 DECLINLINE(void) ichac97R3StreamUnlock(PAC97STREAMR3 pStreamCC); 687 686 static void ichac97R3DbgPrintBdl(PPDMDEVINS pDevIns, PAC97STATE pThis, PAC97STREAM pStream, 688 687 PCDBGFINFOHLP pHlp, const char *pszPrefix); … … 1794 1793 * Adds a driver stream to a specific mixer sink. 1795 1794 * 1795 * Called by ichac97R3MixerAddDrvStreams() and ichac97R3MixerAddDrv(). 1796 * 1796 1797 * @returns VBox status code. 1797 1798 * @param pDevIns The device instance. … … 1842 1843 } 1843 1844 1845 1844 1846 /** 1845 1847 * Adds all current driver streams to a specific mixer sink. 1848 * 1849 * Called by ichac97R3StreamOpen(). 1846 1850 * 1847 1851 * @returns VBox status code. … … 1881 1885 } 1882 1886 1883 /**1884 * Adds a specific AC'97 driver to the driver chain.1885 *1886 * Only called from ichac97R3Attach().1887 *1888 * @returns VBox status code.1889 * @param pDevIns The device instance.1890 * @param pThisCC The ring-3 AC'97 device state.1891 * @param pDrv The AC'97 driver to add.1892 */1893 static int ichac97R3MixerAddDrv(PPDMDEVINS pDevIns, PAC97STATER3 pThisCC, PAC97DRIVER pDrv)1894 {1895 int rc = VINF_SUCCESS;1896 1897 if (AudioHlpStreamCfgIsValid(&pThisCC->aStreams[AC97SOUNDSOURCE_PI_INDEX].State.Cfg))1898 rc = ichac97R3MixerAddDrvStream(pDevIns, pThisCC->pSinkLineIn,1899 &pThisCC->aStreams[AC97SOUNDSOURCE_PI_INDEX].State.Cfg, pDrv);1900 1901 if (AudioHlpStreamCfgIsValid(&pThisCC->aStreams[AC97SOUNDSOURCE_PO_INDEX].State.Cfg))1902 {1903 int rc2 = ichac97R3MixerAddDrvStream(pDevIns, pThisCC->pSinkOut,1904 &pThisCC->aStreams[AC97SOUNDSOURCE_PO_INDEX].State.Cfg, pDrv);1905 if (RT_SUCCESS(rc))1906 rc = rc2;1907 }1908 1909 if (AudioHlpStreamCfgIsValid(&pThisCC->aStreams[AC97SOUNDSOURCE_MC_INDEX].State.Cfg))1910 {1911 int rc2 = ichac97R3MixerAddDrvStream(pDevIns, pThisCC->pSinkMicIn,1912 &pThisCC->aStreams[AC97SOUNDSOURCE_MC_INDEX].State.Cfg, pDrv);1913 if (RT_SUCCESS(rc))1914 rc = rc2;1915 }1916 1917 return rc;1918 }1919 1920 /**1921 * Removes a specific AC'97 driver from the driver chain and destroys its1922 * associated streams.1923 *1924 * Only called from ichac97R3Detach().1925 *1926 * @param pDevIns The device instance.1927 * @param pThisCC The ring-3 AC'97 device state.1928 * @param pDrv AC'97 driver to remove.1929 */1930 static void ichac97R3MixerRemoveDrv(PPDMDEVINS pDevIns, PAC97STATER3 pThisCC, PAC97DRIVER pDrv)1931 {1932 if (pDrv->MicIn.pMixStrm)1933 {1934 AudioMixerSinkRemoveStream(pThisCC->pSinkMicIn, pDrv->MicIn.pMixStrm);1935 AudioMixerStreamDestroy(pDrv->MicIn.pMixStrm, pDevIns, true /*fImmediate*/);1936 pDrv->MicIn.pMixStrm = NULL;1937 }1938 1939 if (pDrv->LineIn.pMixStrm)1940 {1941 AudioMixerSinkRemoveStream(pThisCC->pSinkLineIn, pDrv->LineIn.pMixStrm);1942 AudioMixerStreamDestroy(pDrv->LineIn.pMixStrm, pDevIns, true /*fImmediate*/);1943 pDrv->LineIn.pMixStrm = NULL;1944 }1945 1946 if (pDrv->Out.pMixStrm)1947 {1948 AudioMixerSinkRemoveStream(pThisCC->pSinkOut, pDrv->Out.pMixStrm);1949 AudioMixerStreamDestroy(pDrv->Out.pMixStrm, pDevIns, true /*fImmediate*/);1950 pDrv->Out.pMixStrm = NULL;1951 }1952 1953 RTListNodeRemove(&pDrv->Node);1954 }1955 1887 1956 1888 /** 1957 1889 * Removes a driver stream from a specific mixer sink. 1890 * 1891 * Worker for ichac97R3MixerRemoveDrvStreams. 1958 1892 * 1959 1893 * @param pDevIns The device instance. … … 1981 1915 /** 1982 1916 * Removes all driver streams from a specific mixer sink. 1917 * 1918 * Called by ichac97R3StreamOpen() and ichac97R3StreamsDestroy(). 1983 1919 * 1984 1920 * @param pDevIns The device instance. … … 4021 3957 4022 3958 /** 3959 * Adds a specific AC'97 driver to the driver chain. 3960 * 3961 * Only called from ichac97R3Attach(). 3962 * 3963 * @returns VBox status code. 3964 * @param pDevIns The device instance. 3965 * @param pThisCC The ring-3 AC'97 device state. 3966 * @param pDrv The AC'97 driver to add. 3967 */ 3968 static int ichac97R3MixerAddDrv(PPDMDEVINS pDevIns, PAC97STATER3 pThisCC, PAC97DRIVER pDrv) 3969 { 3970 int rc = VINF_SUCCESS; 3971 3972 if (AudioHlpStreamCfgIsValid(&pThisCC->aStreams[AC97SOUNDSOURCE_PI_INDEX].State.Cfg)) 3973 rc = ichac97R3MixerAddDrvStream(pDevIns, pThisCC->pSinkLineIn, 3974 &pThisCC->aStreams[AC97SOUNDSOURCE_PI_INDEX].State.Cfg, pDrv); 3975 3976 if (AudioHlpStreamCfgIsValid(&pThisCC->aStreams[AC97SOUNDSOURCE_PO_INDEX].State.Cfg)) 3977 { 3978 int rc2 = ichac97R3MixerAddDrvStream(pDevIns, pThisCC->pSinkOut, 3979 &pThisCC->aStreams[AC97SOUNDSOURCE_PO_INDEX].State.Cfg, pDrv); 3980 if (RT_SUCCESS(rc)) 3981 rc = rc2; 3982 } 3983 3984 if (AudioHlpStreamCfgIsValid(&pThisCC->aStreams[AC97SOUNDSOURCE_MC_INDEX].State.Cfg)) 3985 { 3986 int rc2 = ichac97R3MixerAddDrvStream(pDevIns, pThisCC->pSinkMicIn, 3987 &pThisCC->aStreams[AC97SOUNDSOURCE_MC_INDEX].State.Cfg, pDrv); 3988 if (RT_SUCCESS(rc)) 3989 rc = rc2; 3990 } 3991 3992 return rc; 3993 } 3994 3995 3996 /** 4023 3997 * Worker for ichac97R3Construct() and ichac97R3Attach(). 4024 3998 * … … 4105 4079 4106 4080 return rc; 4081 } 4082 4083 4084 /** 4085 * Removes a specific AC'97 driver from the driver chain and destroys its 4086 * associated streams. 4087 * 4088 * Only called from ichac97R3Detach(). 4089 * 4090 * @param pDevIns The device instance. 4091 * @param pThisCC The ring-3 AC'97 device state. 4092 * @param pDrv AC'97 driver to remove. 4093 */ 4094 static void ichac97R3MixerRemoveDrv(PPDMDEVINS pDevIns, PAC97STATER3 pThisCC, PAC97DRIVER pDrv) 4095 { 4096 if (pDrv->MicIn.pMixStrm) 4097 { 4098 AudioMixerSinkRemoveStream(pThisCC->pSinkMicIn, pDrv->MicIn.pMixStrm); 4099 AudioMixerStreamDestroy(pDrv->MicIn.pMixStrm, pDevIns, true /*fImmediate*/); 4100 pDrv->MicIn.pMixStrm = NULL; 4101 } 4102 4103 if (pDrv->LineIn.pMixStrm) 4104 { 4105 AudioMixerSinkRemoveStream(pThisCC->pSinkLineIn, pDrv->LineIn.pMixStrm); 4106 AudioMixerStreamDestroy(pDrv->LineIn.pMixStrm, pDevIns, true /*fImmediate*/); 4107 pDrv->LineIn.pMixStrm = NULL; 4108 } 4109 4110 if (pDrv->Out.pMixStrm) 4111 { 4112 AudioMixerSinkRemoveStream(pThisCC->pSinkOut, pDrv->Out.pMixStrm); 4113 AudioMixerStreamDestroy(pDrv->Out.pMixStrm, pDevIns, true /*fImmediate*/); 4114 pDrv->Out.pMixStrm = NULL; 4115 } 4116 4117 RTListNodeRemove(&pDrv->Node); 4107 4118 } 4108 4119
Note:
See TracChangeset
for help on using the changeset viewer.