diff options
author | Arun Raghavan <arun.raghavan@collabora.co.uk> | 2011-03-02 11:38:01 +0530 |
---|---|---|
committer | Arun Raghavan <arun.raghavan@collabora.co.uk> | 2011-05-02 11:54:48 +0530 |
commit | 658a9153f094db9a30ac94428f4e46985e7096eb (patch) | |
tree | 311b0ec6d6bc46547c9d9752620a65c103732b5e /src/pulsecore/sink-input.c | |
parent | 8b3e68a202084467086af6c83e89c07adb9aa18a (diff) |
sink-input: Kill passthrough streams if moving to an unsupported sink
This will eventually be replaced by a hook to let clients know that the
stream has moved so that they can gracefully reconnect and renegotiate a
supported format.
Diffstat (limited to 'src/pulsecore/sink-input.c')
-rw-r--r-- | src/pulsecore/sink-input.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c index 0f34e650..6e1b81f4 100644 --- a/src/pulsecore/sink-input.c +++ b/src/pulsecore/sink-input.c @@ -1552,6 +1552,11 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) { if (!pa_sink_input_may_move_to(i, dest)) return -PA_ERR_NOTSUPPORTED; + if (!pa_format_info_is_pcm(i->format) && !pa_sink_check_format(dest, i->format)) { + /* FIXME: Fire a message here so the client can renegotiate */ + return -PA_ERR_NOTSUPPORTED; + } + if (i->thread_info.resampler && pa_sample_spec_equal(pa_resampler_output_sample_spec(i->thread_info.resampler), &dest->sample_spec) && pa_channel_map_equal(pa_resampler_output_channel_map(i->thread_info.resampler), &dest->channel_map)) |