Message ID | 20230113185019.1500147-1-cujomalainey@chromium.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] ucm: add existence checks to geti calls | expand |
On 13. 01. 23 19:50, cujomalainey@chromium.org wrote: > From: Curtis Malainey <cujomalainey@chromium.org> > > Right now in snd_use_case_geti you cannot tell if the item being queried > exists or not when being checked. This also means the only way to check > for the existence of something in the client of the library is to > iterate over the list of mods/devs even if we know exactly the name we > are looking for. We have functions that do exactly this internally so > lets return this information in a logical fashion through geti. The device_status/modifier_status functions are used internally, too. I would add the device validation only to the geti code. The other parts do this job already and expect just 0 or 1 return values. Jaroslav
On Fri, Jan 13, 2023 at 11:32 AM Jaroslav Kysela <perex@perex.cz> wrote: > > On 13. 01. 23 19:50, cujomalainey@chromium.org wrote: > > From: Curtis Malainey <cujomalainey@chromium.org> > > > > Right now in snd_use_case_geti you cannot tell if the item being queried > > exists or not when being checked. This also means the only way to check > > for the existence of something in the client of the library is to > > iterate over the list of mods/devs even if we know exactly the name we > > are looking for. We have functions that do exactly this internally so > > lets return this information in a logical fashion through geti. > > The device_status/modifier_status functions are used internally, too. > I would add the device validation only to the geti code. The other parts do > this job already and expect just 0 or 1 return values. > > Jaroslav Understood, I will move it back to geti directly, figured this was the cleanest place to put it but that makes sense if other places use those internal functions. > > -- > Jaroslav Kysela <perex@perex.cz> > Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
diff --git a/src/ucm/main.c b/src/ucm/main.c index 2ff4d3f3..adbddc26 100644 --- a/src/ucm/main.c +++ b/src/ucm/main.c @@ -1321,6 +1321,9 @@ long device_status(snd_use_case_mgr_t *uc_mgr, if (strcmp(dev->name, device_name) == 0) return 1; } + dev = find_device(uc_mgr, uc_mgr->active_verb, device_name, 0); + if (!dev) + return -ENOENT; return 0; } @@ -1335,6 +1338,9 @@ long modifier_status(snd_use_case_mgr_t *uc_mgr, if (strcmp(mod->name, modifier_name) == 0) return 1; } + mod = find_modifier(uc_mgr, uc_mgr->active_verb, modifier_name, 0); + if (!mod) + return -ENOENT; return 0; }