Dne 23. 04. 20 v 15:06 Pierre-Louis Bossart napsal(a):
On 4/22/20 8:58 PM, libin.yang@xxxxxxxxxxxxxxx wrote:
From: Libin Yang <libin.yang@xxxxxxxxx>
UCMv2 supports "If" statement and will merge the same items with
compound_merge(). If the items have the same id, it will fail to
add the config items. And the id of the item in an array is
automatically generated with the increased number. It is probably
that some items to be merged have the same id. Let's add prefix
in the id to avoid such situation.
For example:
If.seq1 {
Condition {
Type ControlExists
Control "name='PGA1.0 1 Master Playback Volume'"
}
True {
EnableSequence [
cset "name='PGA1.0 1 Master Playback Volume' 50"
]
}
}
If.seq2 {
Condition {
Type ControlExists
Control "name='PGA2.0 2 Master Playback Volume'"
}
True {
EnableSequence [
cset "name='PGA2.0 2 Master Playback Volume' 50"
]
}
}
If.seq3 {
Condition {
Type ControlExists
Control "name='PGA3.0 3 Master Playback Volume'"
}
True {
EnableSequence [
cset "name='PGA3.0 3 Master Playback Volume' 50"
]
}
}
If seq1, seq2 and seq3 conditions are true, UCM will fail to initialize.
This patch rename the config id to avoid the same id conflict.
The example confuses me completely, I checked three times and the seq1,
seq2 and seq3 parts configure different controls.
Can you clarify what the conflict is and what id you were referring to?
The arrays in the ALSA configs are represented like:
User syntax:
name [
value0
value1
]
Internal tree:
name.0 value0
name.1 value1
or
name {
0 value0
1 value1
}
(all three syntaxes are equal, the array just removes the indexes for the
readability)
This patch tries to change name.0 to something like name.unique-0 or so which
is not so much pretty.
You can just declare the new sequences like this to avoid clash:
EnableSequence.seq3.cset "name='PGA3.0 3 Master Playback Volume' 50"
Jaroslav
--
Jaroslav Kysela <perex@xxxxxxxx>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.