diff options
Diffstat (limited to 'src/4a-internals-hal/4a-internals-hal-cb.c')
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-cb.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/4a-internals-hal/4a-internals-hal-cb.c b/src/4a-internals-hal/4a-internals-hal-cb.c index 4c5fb68..10ed6c0 100644 --- a/src/4a-internals-hal/4a-internals-hal-cb.c +++ b/src/4a-internals-hal/4a-internals-hal-cb.c @@ -338,6 +338,7 @@ int InternalHalProcessAllHalMap(afb_api_t apiHandle, json_object *AlsaMapJ, stru struct InternalHalAlsaMap *ctlMaps; + json_object *currentAlsaMapJ; json_type alsaMapType; alsaMapType = json_object_get_type(AlsaMapJ); @@ -363,8 +364,18 @@ int InternalHalProcessAllHalMap(afb_api_t apiHandle, json_object *AlsaMapJ, stru return -2; } - for(idx = 0; idx < currentInternalHalAlsaMapT->ctlsCount; idx++) - err += InternalHalProcessOneHalMapObject(apiHandle, &ctlMaps[idx], alsaMapType == json_type_array ? json_object_array_get_idx(AlsaMapJ, idx) : AlsaMapJ); + for(idx = 0; idx < currentInternalHalAlsaMapT->ctlsCount; idx++) { + currentAlsaMapJ = (alsaMapType == json_type_array) ? json_object_array_get_idx(AlsaMapJ, idx) : AlsaMapJ; + err = InternalHalProcessOneHalMapObject(apiHandle, &ctlMaps[idx], currentAlsaMapJ); + if(err) { + AFB_API_ERROR(apiHandle, + "Didn't succeed to proccess halmap object %i ('%s')", + idx, + json_object_get_string(currentAlsaMapJ)); + HalUtlFreeAlsaCtlsMap(currentInternalHalAlsaMapT); + return -3; + } + } currentInternalHalAlsaMapT->ctls = ctlMaps; @@ -381,8 +392,16 @@ int InternalHalHandleAllHalMap(afb_api_t apiHandle, int sndCardId, struct Intern InternalHalSubscribeToAlsaCardEvent(apiHandle, cardIdString); - for(idx = 0; idx < currentInternalHalAlsaMapT->ctlsCount; idx++) - err += InternalHalHandleOneHalMapObject(apiHandle, cardIdString, ¤tInternalHalAlsaMapT->ctls[idx]); + for(idx = 0; idx < currentInternalHalAlsaMapT->ctlsCount; idx++) { + err = InternalHalHandleOneHalMapObject(apiHandle, cardIdString, ¤tInternalHalAlsaMapT->ctls[idx]); + if(err) { + AFB_API_ERROR(apiHandle, + "Didn't succeed to handle halmap object %i ('%s')", + idx, + json_object_get_string(currentInternalHalAlsaMapT->ctls[idx].actionJ)); + return -3; + } + } return err; } |