From 3aba099fc3e515db5c4b1f2990c48fdb4160ff52 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 12 Aug 2006 02:19:36 +0000 Subject: clean up event generation a little: suppress unnecessary events and generate new ones on owner change git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1212 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/pulsecore/sink-input.c | 6 ++++++ src/pulsecore/sink.c | 7 ++++++- src/pulsecore/source-output.c | 6 ++++++ src/pulsecore/source.c | 4 ++++ 4 files changed, 22 insertions(+), 1 deletion(-) (limited to 'src/pulsecore') diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c index b89210f4..701d7f6c 100644 --- a/src/pulsecore/sink-input.c +++ b/src/pulsecore/sink-input.c @@ -437,6 +437,12 @@ void pa_sink_input_set_name(pa_sink_input *i, const char *name) { assert(i); assert(i->ref >= 1); + if (!i->name && !name) + return; + + if (i->name && name && !strcmp(i->name, name)) + return; + pa_xfree(i->name); i->name = pa_xstrdup(name); diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c index eecf89cc..d1d9785a 100644 --- a/src/pulsecore/sink.c +++ b/src/pulsecore/sink.c @@ -446,11 +446,16 @@ pa_usec_t pa_sink_get_latency(pa_sink *s) { void pa_sink_set_owner(pa_sink *s, pa_module *m) { assert(s); assert(s->ref >= 1); - + + if (s->owner == m) + return; + s->owner = m; if (s->monitor_source) pa_source_set_owner(s->monitor_source, m); + + pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); } void pa_sink_set_volume(pa_sink *s, pa_mixer_t m, const pa_cvolume *volume) { diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c index 1ffaedae..36ea420c 100644 --- a/src/pulsecore/source-output.c +++ b/src/pulsecore/source-output.c @@ -208,6 +208,12 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) { void pa_source_output_set_name(pa_source_output *o, const char *name) { assert(o); assert(o->ref >= 1); + + if (!o->name && !name) + return; + + if (o->name && name && !strcmp(o->name, name)) + return; pa_xfree(o->name); o->name = pa_xstrdup(name); diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index f9c0703d..903de88b 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -225,8 +225,12 @@ void pa_source_post(pa_source*s, const pa_memchunk *chunk) { void pa_source_set_owner(pa_source *s, pa_module *m) { assert(s); assert(s->ref >= 1); + + if (m == s->owner) + return; s->owner = m; + pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); } pa_usec_t pa_source_get_latency(pa_source *s) { -- cgit