summaryrefslogtreecommitdiffstats
path: root/src/pulsecore
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-08-12 02:19:36 +0000
committerLennart Poettering <lennart@poettering.net>2006-08-12 02:19:36 +0000
commit3aba099fc3e515db5c4b1f2990c48fdb4160ff52 (patch)
tree3886b2232a19aa8ba598c453b80c8141f82cabb4 /src/pulsecore
parent47d009afd69612aa97fd368fd481734f1c52909a (diff)
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
Diffstat (limited to 'src/pulsecore')
-rw-r--r--src/pulsecore/sink-input.c6
-rw-r--r--src/pulsecore/sink.c7
-rw-r--r--src/pulsecore/source-output.c6
-rw-r--r--src/pulsecore/source.c4
4 files changed, 22 insertions, 1 deletions
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) {