[pulseaudio-discuss] [PATCH 1/2] sink, source: Add a flag to inhibit suspend
Arun Raghavan
arun.raghavan at collabora.co.uk
Wed Aug 7 22:23:23 PDT 2013
This adds the ability to inhibit the suspending of a sink/source. Policy
modules may override this, but should avoid doing so if they can.
---
src/pulse/def.h | 6 ++++++
src/pulsecore/sink.c | 3 +++
src/pulsecore/source.c | 3 +++
3 files changed, 12 insertions(+)
diff --git a/src/pulse/def.h b/src/pulse/def.h
index 58190cb..11f5cb2 100644
--- a/src/pulse/def.h
+++ b/src/pulse/def.h
@@ -795,6 +795,9 @@ typedef enum pa_sink_flags {
PA_SINK_DEFERRED_VOLUME = 0x2000000U,
/**< The HW volume changes are syncronized with SW volume. */
+
+ PA_SINK_ALWAYS_RUNNING = 0x4000000U,
+ /**< The sink should not be automatically suspended. */
/** \endcond */
#endif
@@ -914,6 +917,9 @@ typedef enum pa_source_flags {
PA_SOURCE_DEFERRED_VOLUME = 0x2000000U,
/**< The HW volume changes are syncronized with SW volume. */
+
+ PA_SOURCE_ALWAYS_RUNNING = 0x4000000U,
+ /**< The source should not be automatically suspended. */
#endif
} pa_source_flags_t;
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 00bc29a..9ebf4ce 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -834,6 +834,9 @@ int pa_sink_suspend(pa_sink *s, bool suspend, pa_suspend_cause_t cause) {
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(cause != 0);
+ if ((s->flags & PA_SINK_ALWAYS_RUNNING) && (cause == PA_SUSPEND_IDLE))
+ return 0;
+
if (suspend) {
s->suspend_cause |= cause;
s->monitor_source->suspend_cause |= cause;
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index b14b9c8..e141649 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -751,6 +751,9 @@ int pa_source_suspend(pa_source *s, bool suspend, pa_suspend_cause_t cause) {
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert(cause != 0);
+ if ((s->flags & PA_SINK_ALWAYS_RUNNING) && (cause == PA_SUSPEND_IDLE))
+ return 0;
+
if (s->monitor_of && cause != PA_SUSPEND_PASSTHROUGH)
return -PA_ERR_NOTSUPPORTED;
--
1.8.2.1
More information about the pulseaudio-discuss
mailing list