- ctx->volume = volume;
- _alsa_set_volume (ctx->idx, ctx->volume);
-
- snprintf (volume_str, sizeof(volume_str), "%d", ctx->volume);
+ ctx->volume[0] = volume[0];
+ _alsa_set_volume (ctx->idx, 0, ctx->volume[0]);
+ snprintf (volume_str, sizeof(volume_str), "%d,", ctx->volume[0]);
+
+ for (i = 1; i < 8; i++) {
+ volume_i = strtok (NULL, ",");
+ /* if there is only one value, set all channels to this one */
+ if (!volume_i && i == 1)
+ _alsa_set_volume_all (ctx->idx, ctx->volume[0]);
+ if (!volume_i || 100 < atoi(volume_i) < 0) {
+ ctx->volume[i] = _alsa_get_volume (ctx->idx, i);
+ } else {
+ ctx->volume[i] = atoi(volume_i);
+ _alsa_set_volume (ctx->idx, i, ctx->volume[i]);
+ }
+ len_str = strlen(volume_str);
+ snprintf (volume_str+len_str, sizeof(volume_str)-len_str, "%d,", ctx->volume[i]);
+ }