From: Takashi Sakamoto Date: Mon, 18 Nov 2019 04:22:44 +0000 (+0900) Subject: ctl: add global method to get sysname of control device for sound card X-Git-Tag: v0.1.0~426 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=a465258a3d6266aa8582563e4bcadda53d8b4fb5;p=alsa-gobject.git ctl: add global method to get sysname of control device for sound card --- diff --git a/src/ctl/alsactl.map b/src/ctl/alsactl.map index c5f73b9..d88b1e7 100644 --- a/src/ctl/alsactl.map +++ b/src/ctl/alsactl.map @@ -8,6 +8,7 @@ ALSA_GOBJECT_0_0_0 { "alsactl_get_card_id_list"; "alsactl_get_card_sysname"; + "alsactl_get_control_sysname"; local: *; }; diff --git a/src/ctl/query.c b/src/ctl/query.c index 542f92b..1a8118d 100644 --- a/src/ctl/query.c +++ b/src/ctl/query.c @@ -10,6 +10,7 @@ #include #define CARD_SYSNAME_TEMPLATE "card%u" +#define CONTROL_SYSNAME_TEMPLATE "controlC%u" // For error handling. G_DEFINE_QUARK("alsactl-error", alsactl_error) @@ -248,3 +249,30 @@ void alsactl_get_card_sysname(guint card_id, char **sysname, GError **error) *sysname = name; } + +/** + * alsactl_get_control_sysname: + * @card_id: The numeridcal ID of sound card. + * @sysname: (out): The string for sysname of control device for the sound card. + * @error: A #GError. + * + * Allocate sysname of control device for the sound card and return it when + * it exists. + */ +void alsactl_get_control_sysname(guint card_id, char **sysname, GError **error) +{ + char *name; + + g_return_if_fail(sysname != NULL); + + allocate_sysname(&name, CONTROL_SYSNAME_TEMPLATE, card_id, error); + if (*error != NULL) + return; + + if (!check_existence(name, error)) { + g_free(name); + return; + } + + *sysname = name; +} diff --git a/src/ctl/query.h b/src/ctl/query.h index 724f53b..ef135d4 100644 --- a/src/ctl/query.h +++ b/src/ctl/query.h @@ -12,6 +12,8 @@ void alsactl_get_card_id_list(guint **entries, gsize *entry_count, void alsactl_get_card_sysname(guint card_id, char **sysname, GError **error); +void alsactl_get_control_sysname(guint card_id, char **sysname, GError **error); + G_END_DECLS #endif