diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-03-21 02:45:31 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-03-21 02:45:31 +0100 |
commit | b3675c28fa1c4bc4707e5700bc618240fc10e212 (patch) | |
tree | 47d64c4c3806a350101dc0584a4671ad8e31249c /src/pulsecore/source.c | |
parent | 8d5b375f67d1f414c0faa3e7810dc63b6e48b6a8 (diff) |
add functions that modules can call whenever they now the volume changed
Diffstat (limited to 'src/pulsecore/source.c')
-rw-r--r-- | src/pulsecore/source.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index cc6dfc40..ac1ef1e7 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -675,6 +675,19 @@ const pa_cvolume *pa_source_get_volume(pa_source *s, pa_bool_t force_refresh) { } /* Called from main thread */ +void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume) { + pa_source_assert_ref(s); + + /* The source implementor may call this if the volume changed to make sure everyone is notified */ + + if (pa_cvolume_equal(&s->virtual_volume, new_volume)) + return; + + s->virtual_volume = *new_volume; + pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); +} + +/* Called from main thread */ void pa_source_set_mute(pa_source *s, pa_bool_t mute) { pa_bool_t old_muted; @@ -695,7 +708,6 @@ void pa_source_set_mute(pa_source *s, pa_bool_t mute) { /* Called from main thread */ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) { - pa_source_assert_ref(s); pa_assert(PA_SOURCE_IS_LINKED(s->state)); @@ -715,6 +727,19 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) { } /* Called from main thread */ +void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted) { + pa_source_assert_ref(s); + + /* The source implementor may call this if the mute state changed to make sure everyone is notified */ + + if (s->muted == new_muted) + return; + + s->muted = new_muted; + pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); +} + +/* Called from main thread */ pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p) { pa_source_assert_ref(s); pa_assert(p); |