diff options
Diffstat (limited to 'src/4a-internals-hal/4a-internals-hal-alsacore-link.c')
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-alsacore-link.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/4a-internals-hal/4a-internals-hal-alsacore-link.c b/src/4a-internals-hal/4a-internals-hal-alsacore-link.c index 902e5ad..e1ad6dd 100644 --- a/src/4a-internals-hal/4a-internals-hal-alsacore-link.c +++ b/src/4a-internals-hal/4a-internals-hal-alsacore-link.c @@ -287,7 +287,9 @@ int InternalHalUpdateAlsaCtlProperties(afb_api_t apiHandle, char *cardId, struct { int err = 0; - json_object *returnedDataJ; + char *name; + + json_object *returnedDataJ = NULL; err = InternalHalGetAlsaCtlInfo(apiHandle, cardId, currentAlsaCtl, &returnedDataJ); if(err) { @@ -295,7 +297,9 @@ int InternalHalUpdateAlsaCtlProperties(afb_api_t apiHandle, char *cardId, struct } // TBD JAI : get dblinear/dbminmax/... values else if(wrap_json_unpack(returnedDataJ, - "{s:{s?:i s?:i s?:i s?:i s?:i}}", + "{s:i s:s s:{s?:i s?:i s?:i s?:i s?:i}}", + "id", ¤tAlsaCtl->numid, + "name", &name, "ctl", "type", (int *) ¤tAlsaCtl->alsaCtlProperties.type, "count", ¤tAlsaCtl->alsaCtlProperties.count, @@ -310,6 +314,13 @@ int InternalHalUpdateAlsaCtlProperties(afb_api_t apiHandle, char *cardId, struct err = -9; } + else { + currentAlsaCtl->name = strdup(name); + if(! currentAlsaCtl->name) { + AFB_API_ERROR(apiHandle, "Didn't succeed to store (allocate) control 'name' string"); + err = -10; + } + } if(returnedDataJ) json_object_put(returnedDataJ); |