DBusMessage *reply = NULL;
pa_stream_manager *m = (pa_stream_manager*)userdata;
int ret = 0;
+ ret_msg_t ret_msg = RET_MSG_ERROR_INTERNAL;
pa_assert(conn);
pa_assert(msg);
else if (pa_safe_streq(direction, "out"))
stream_type = STREAM_SINK_INPUT;
else {
- pa_assert_se(dbus_message_append_args(reply, DBUS_TYPE_STRING, &stream_manager_dbus_ret_str[RET_MSG_ERROR_INTERNAL], DBUS_TYPE_INVALID));
+ pa_assert_se(dbus_message_append_args(reply, DBUS_TYPE_STRING, &stream_manager_dbus_ret_str[ret_msg], DBUS_TYPE_INVALID));
ret = -1;
goto finish;
}
/* check vconf update here, volume will not be set if update fails */
if ((ret = update_volume_vconf(type, level))) {
- pa_assert_se(dbus_message_append_args(reply, DBUS_TYPE_STRING, &stream_manager_dbus_ret_str[RET_MSG_ERROR_INTERNAL], DBUS_TYPE_INVALID));
+ pa_assert_se(dbus_message_append_args(reply, DBUS_TYPE_STRING, &stream_manager_dbus_ret_str[ret_msg], DBUS_TYPE_INVALID));
goto finish;
}
- if ((ret = set_volume_level_by_type(m, stream_type, type, level)))
- pa_assert_se(dbus_message_append_args(reply, DBUS_TYPE_STRING, &stream_manager_dbus_ret_str[RET_MSG_ERROR_INTERNAL], DBUS_TYPE_INVALID));
- else
+ if ((ret = set_volume_level_by_type(m, stream_type, type, level))) {
+ if (ret == -2)
+ ret_msg = RET_MSG_ERROR_INVALID_ARGUMENT;
+ pa_assert_se(dbus_message_append_args(reply, DBUS_TYPE_STRING, &stream_manager_dbus_ret_str[ret_msg], DBUS_TYPE_INVALID));
+ } else {
pa_assert_se(dbus_message_append_args(reply, DBUS_TYPE_STRING, &stream_manager_dbus_ret_str[RET_MSG_OK], DBUS_TYPE_INVALID));
+ }
finish:
pa_assert_se(dbus_connection_send(conn, reply, NULL));
if (!(value = pa_idxset_get_by_index(v->values[stream_type].idx_volume_values, volume_level))) {
pa_log_error("failed to pa_idxset_get_by_index()");
- return -1;
+ return -2;
}
volume_linear = *value;
void *s = NULL;
pa_hashmap *volumes = NULL;
pa_cvolume cv;
+ int ret = 0;
pa_assert(m);
pa_assert(m->volume_infos);
if (!(v = pa_hashmap_get(volumes, volume_type))) {
pa_log_error("could not get volume_info, stream_type[%d], volume_type[%s]", stream_type, volume_type);
- return -1;
+ return -2;
}
if (pa_safe_streq(volume_type, MASTER_VOLUME_TYPE) && MASTER_VOLUME_LEVEL_MAX < volume_level) {
if (!pa_safe_streq(volume_type, MASTER_VOLUME_TYPE)) {
/* Get volume value */
- if (get_volume_value(m, stream_type, is_hal_volume, volume_type, volume_level, &volume_linear))
- return -1;
+ if ((ret = get_volume_value(m, stream_type, is_hal_volume, volume_type, volume_level, &volume_linear)))
+ return ret;
PA_IDXSET_FOREACH(s, stream_type == STREAM_SINK_INPUT ? m->core->sink_inputs : m->core->source_outputs, idx) {
/* Update volume level of stream if it has requested the volume type */