diff options
| -rw-r--r-- | src/pulse/format.c | 13 | ||||
| -rw-r--r-- | src/pulsecore/sink-input.c | 3 | 
2 files changed, 9 insertions, 7 deletions
diff --git a/src/pulse/format.c b/src/pulse/format.c index a1a0981b..b256d72f 100644 --- a/src/pulse/format.c +++ b/src/pulse/format.c @@ -193,11 +193,9 @@ pa_bool_t pa_format_info_to_sample_spec(pa_format_info *f, pa_sample_spec *ss, p      if (map) {          pa_channel_map_init(map); -        if (!pa_format_info_get_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, &m)) -            goto out; - -        if (m && pa_channel_map_parse(map, m) == NULL) -            goto out; +        if (pa_format_info_get_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, &m)) +            if (pa_channel_map_parse(map, m) == NULL) +                goto out;      }      ret = TRUE; @@ -281,7 +279,10 @@ pa_bool_t pa_format_info_get_prop_string(pa_format_info *f, const char *key, cha      pa_assert(key);      pa_assert(v); -    pa_return_val_if_fail(str = pa_proplist_gets(f->plist, key), FALSE); +    str = pa_proplist_gets(f->plist, key), FALSE; +    if (!str) +        return FALSE; +      o = json_tokener_parse(str);      pa_return_val_if_fail(!is_error(o), FALSE);      if (json_object_get_type(o) != json_type_string) { diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c index 300b7286..f4f3258f 100644 --- a/src/pulsecore/sink-input.c +++ b/src/pulsecore/sink-input.c @@ -262,7 +262,8 @@ int pa_sink_input_new(           * to using the sample spec and channel map after all decisions w.r.t.           * routing are complete. */          pa_idxset *tmp = pa_idxset_new(NULL, NULL); -        pa_format_info *f = pa_format_info_from_sample_spec(&data->sample_spec, &data->channel_map); +        pa_format_info *f = pa_format_info_from_sample_spec(&data->sample_spec, +                data->channel_map_is_set ? &data->channel_map : NULL);          pa_idxset_put(tmp, f, NULL);          pa_sink_input_new_data_set_formats(data, tmp);      }  | 
