summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Raghavan <arun.raghavan@collabora.co.uk>2011-03-28 08:46:40 +0530
committerArun Raghavan <arun.raghavan@collabora.co.uk>2011-05-15 10:09:34 +0530
commit53091cc5f0a766e0bff36b59600f99cd2771bbd6 (patch)
tree6b2ea98faa0ddcb20cca17520c5ca6a893905c88
parentcb3dcb14f868e10c0fde582e9284561af974fab4 (diff)
sink-input: Add a format-lost event
This event is emitted if the sink-input could not be moved to a new sink because it doesn't support the format of the sink-input. Clients can reconnect their stream with a different format if they wish or gracefully exit.
-rw-r--r--src/pulse/def.h7
-rw-r--r--src/pulsecore/sink-input.c3
2 files changed, 9 insertions, 1 deletions
diff --git a/src/pulse/def.h b/src/pulse/def.h
index 91a027e3..e01e667f 100644
--- a/src/pulse/def.h
+++ b/src/pulse/def.h
@@ -912,6 +912,13 @@ typedef void (*pa_free_cb_t)(void *p);
* information, \since 0.9.15 */
#define PA_STREAM_EVENT_REQUEST_UNCORK "request-uncork"
+/** A stream event notifying that the stream is going to be
+ * disconnected because the underlying sink changed and no longer
+ * supports the format that was originally negotiated. Clients need
+ * to connect a new stream to renegotiate a format and continue
+ * playback, \since 1.0 */
+#define PA_STREAM_EVENT_FORMAT_LOST "format-lost"
+
PA_C_DECL_END
#endif
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 196d7712..f0558f40 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -1594,7 +1594,8 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
return -PA_ERR_NOTSUPPORTED;
if (pa_sink_input_is_passthrough(i) && !pa_sink_check_format(dest, i->format)) {
- /* FIXME: Fire a message here so the client can renegotiate */
+ pa_log_debug("New sink doesn't support stream format, sending format-changed and killing");
+ pa_sink_input_send_event(i, PA_STREAM_EVENT_FORMAT_LOST, NULL);
return -PA_ERR_NOTSUPPORTED;
}