  <?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.alsa-project.org/main/index.php?action=history&amp;feed=atom&amp;title=Detailed_changes_v1.2.1_v1.2.1.1</id>
	<title>Detailed changes v1.2.1 v1.2.1.1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.alsa-project.org/main/index.php?action=history&amp;feed=atom&amp;title=Detailed_changes_v1.2.1_v1.2.1.1"/>
	<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.1_v1.2.1.1&amp;action=history"/>
	<updated>2026-04-07T20:08:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.1_v1.2.1.1&amp;diff=7337&amp;oldid=prev</id>
		<title>Perex: 1 revision</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.1_v1.2.1.1&amp;diff=7337&amp;oldid=prev"/>
		<updated>2019-11-25T10:53:30Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:53, 25 November 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Perex</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.1_v1.2.1.1&amp;diff=7336&amp;oldid=prev</id>
		<title>Perex at 10:53, 25 November 2019</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.1_v1.2.1.1&amp;diff=7336&amp;oldid=prev"/>
		<updated>2019-11-25T10:53:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
=Detailed changelog between 1.2.1 and 1.2.1.1 releases=&lt;br /&gt;
=Changelog between 1.2.1 and 1.2.1.1 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
- Release v1.2.1.1&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===PCM API===&lt;br /&gt;
- pcm: add braces to condition (coverity)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
- ucm: quick fix for the previous commit when ALSA_CONFIG_UCM_VAR is set&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix again the long name configuration filename lookup&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 The fix in commit 77119d83a1f4 assumes that both ucm1 / ucm2 directories&lt;br /&gt;
 have the configurations for the long name in the same directory. For v2&lt;br /&gt;
 we changed the location to card_name/card_long_name aka&lt;br /&gt;
 driver_name/driver_long_name to make the directory layout more structured.&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm: parser: Fix snprintf usage&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 There is no need to manually 0 terminate the buffer with snprintf,&lt;br /&gt;
 only strncpy has the very unfortunate behavior of not guaranteeing 0&lt;br /&gt;
 termination.&lt;br /&gt;
 &lt;br /&gt;
 Likewise there is no need to substract one from the buffer size of&lt;br /&gt;
 the buffer passed to snprintf.&amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm: Only look in ucm[1] or ucm2 dir once we've found a config file in one&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Unless environment variables are set, then configuration_filename()&lt;br /&gt;
 when initially called by load_master_config() will first try to find&lt;br /&gt;
 the requested master-config under &amp;amp;lt;prefix&amp;amp;gt;/alsa/ucm2 and then under&lt;br /&gt;
 &amp;amp;lt;prefix&amp;amp;gt;/alsa/ucm.&lt;br /&gt;
 &lt;br /&gt;
 Once a master-config is found this way, we should set conf_format to&lt;br /&gt;
 match, so that subsequent lookups only look under the same directory&lt;br /&gt;
 as where the master-config was found.&lt;br /&gt;
 &lt;br /&gt;
 This fixes 2 problems:&lt;br /&gt;
 1. uc_mgr_config_load() looking under &amp;amp;lt;prefix&amp;amp;gt;/alsa/ucm for includes for&lt;br /&gt;
    UCM2 profiles because it is called with uc_mgr-&amp;amp;gt;conf_format as format&lt;br /&gt;
    and before this commit that would stay 0 when autodetecion is used.&lt;br /&gt;
 &lt;br /&gt;
 2. parse_verb_file() possibly loading an UCM2 verb-file for an UCM1 profile,&lt;br /&gt;
    the chance of this happening is small as this means that even though&lt;br /&gt;
    there is no UCM2 master-config there is an UCM2 profile dir matching&lt;br /&gt;
    uc_mgr-&amp;amp;gt;conf_file_name, which would be weird.&amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm: Fix fallback to card_name (shortname) config for ucm1 profiles&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 uc_mgr_import_master_config() first calls load_master_config()&lt;br /&gt;
 with the card's longname and if that fails then calls it again with the&lt;br /&gt;
 card_name.&lt;br /&gt;
 &lt;br /&gt;
 Before this commit configuration_filename() would force conf_format to 2&lt;br /&gt;
 when it the access(fn, R_OK) test failed for the ucm1 longname&lt;br /&gt;
 master-config filename.&lt;br /&gt;
 &lt;br /&gt;
 This would cause configuration_filename() to blindly return a filename&lt;br /&gt;
 under &amp;amp;lt;prefix&amp;amp;gt;/ucm2 without seeing if that is actually there and without&lt;br /&gt;
 trying to fallback to the old profiles under &amp;amp;lt;prefix&amp;amp;gt;/ucm, breaking the&lt;br /&gt;
 loading of UCM1 profiles by card_name.&lt;br /&gt;
 &lt;br /&gt;
 This commit fixes this by modifying configuration_filename() to not set&lt;br /&gt;
 conf_format when checking for the UCM1 config filename fails.&lt;br /&gt;
 Instead, to make sure that any errors about opening the file still report&lt;br /&gt;
 the new path, configuration_filename() now resets the filename to the UCM2&lt;br /&gt;
 path if the access() check has failed for both the UCM2 and UCM1 paths,&lt;br /&gt;
 without touching conf_format.&amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm: Fix opening of master-configs by the card's longname&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Prior to commit aba2260ae7b5 (&amp;quot;ucm: switch to ucm2 directory and v2 format,&lt;br /&gt;
 keep backward compatibility&amp;quot;).&lt;br /&gt;
 &lt;br /&gt;
 The filename build in parse_verb_file() was build like this:&lt;br /&gt;
 &amp;amp;lt;prefix&amp;amp;gt;/&amp;amp;lt;uc_mgr-&amp;amp;gt;conf_file_name&amp;amp;gt;/&amp;amp;lt;file&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Where uc_mgr-&amp;amp;gt;conf_file_name would contain either the card_name or the&lt;br /&gt;
 card's longname depending on the detection of a longname based config in&lt;br /&gt;
 uc_mgr_import_master_config().&lt;br /&gt;
 &lt;br /&gt;
 While the filename used in load_master_config() was build like this:&lt;br /&gt;
 &amp;amp;lt;prefix&amp;amp;gt;/&amp;amp;lt;card_name&amp;amp;gt;/&amp;amp;lt;card_name&amp;amp;gt;.conf&lt;br /&gt;
 &lt;br /&gt;
 And uc_mgr_import_master_config() first calls load_master_config()&lt;br /&gt;
 with the card's longname and if that succeeds it overwrites&lt;br /&gt;
 uc_mgr-&amp;amp;gt;conf_file_name with the longname so that the subsequent uses&lt;br /&gt;
 of uc_mgr-&amp;amp;gt;conf_file_name in parse_verb_file() correctly use the longname.&lt;br /&gt;
 &lt;br /&gt;
 But the new configuration_filename() helper added in commit aba2260ae7b5&lt;br /&gt;
 _always_ builds the filename like this:&lt;br /&gt;
 &amp;amp;lt;prefix&amp;amp;gt;/&amp;amp;lt;uc_mgr-&amp;amp;gt;conf_file_name&amp;amp;gt;/&amp;amp;lt;file&amp;amp;gt;&amp;amp;lt;suffix&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 This breaks the loading of the master-config by its longname, as when&lt;br /&gt;
 the longname is tried uc_mgr-&amp;amp;gt;conf_file_name still contains the card_name.&lt;br /&gt;
 &lt;br /&gt;
 This commit fixes this by adding a dir parameter to configuration_filename()&lt;br /&gt;
 and restoring the old behavior by passing card_name as dir in&lt;br /&gt;
 load_master_config().&amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm: fix memory leaks detected by the coverity checker&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===Configuration===&lt;br /&gt;
- conf: check for include path duplicates&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- conf: fix the include paths support&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 I omitted to use parent paths and the proper error code&lt;br /&gt;
 when no paths are defined.&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Perex</name></author>
	</entry>
</feed>