diff options
author | Colin Guthrie <cguthrie@mandriva.org> | 2009-10-01 22:12:16 +0100 |
---|---|---|
committer | Colin Guthrie <cguthrie@mandriva.org> | 2009-10-01 22:12:16 +0100 |
commit | 20eedb24163884612c0fe81846ccf2983f336b7c (patch) | |
tree | eafbb2ca1ce1873d862476a3caf14389854d5e48 /src/modules/module-device-manager.c | |
parent | 3a20cf0b9f69e5f9b1012cc46b0918dd5f8173dd (diff) |
device-manager: Misc fixes to co-exist with other stream management/routing modules.
* Do not read or set the save_sink/save_source flags. This seems to be for module-stream-restore only...
* Even if a sink is already set by an earlier module, still move it to the sink we dictate.
Diffstat (limited to 'src/modules/module-device-manager.c')
-rw-r--r-- | src/modules/module-device-manager.c | 70 |
1 files changed, 30 insertions, 40 deletions
diff --git a/src/modules/module-device-manager.c b/src/modules/module-device-manager.c index 5b5b6ca6..86ea95d0 100644 --- a/src/modules/module-device-manager.c +++ b/src/modules/module-device-manager.c @@ -510,9 +510,6 @@ static void route_sink_input(struct userdata *u, pa_sink_input *si) { pa_assert(u); pa_assert(u->do_routing); - if (si->save_sink) - return; - /* Skip this if it is already in the process of being moved anyway */ if (!si->sink) return; @@ -568,9 +565,6 @@ static void route_source_output(struct userdata *u, pa_source_output *so) { pa_assert(u); pa_assert(u->do_routing); - if (so->save_source) - return; - if (so->direct_on_input) return; @@ -779,6 +773,9 @@ static pa_hook_result_t source_new_hook_callback(pa_core *c, pa_source_new_data } static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_new_data *new_data, struct userdata *u) { + const char *role; + uint32_t role_index; + pa_assert(c); pa_assert(new_data); pa_assert(u); @@ -787,27 +784,22 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n return PA_HOOK_OK; if (new_data->sink) - pa_log_debug("Not restoring device for stream, because already set."); - else { - const char *role; - uint32_t role_index; + pa_log_debug("Overriding device for stream, even although it is already set. I am evil that way..."); - if (!(role = pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_ROLE))) - role_index = get_role_index(""); - else - role_index = get_role_index(role); + if (!(role = pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_ROLE))) + role_index = get_role_index("none"); + else + role_index = get_role_index(role); - if (PA_INVALID_INDEX != role_index) { - uint32_t device_index; + if (PA_INVALID_INDEX != role_index) { + uint32_t device_index; - device_index = u->preferred_sinks[role_index]; - if (PA_INVALID_INDEX != device_index) { - pa_sink *sink; + device_index = u->preferred_sinks[role_index]; + if (PA_INVALID_INDEX != device_index) { + pa_sink *sink; - if ((sink = pa_idxset_get_by_index(u->core->sinks, device_index))) { - new_data->sink = sink; - new_data->save_sink = TRUE; - } + if ((sink = pa_idxset_get_by_index(u->core->sinks, device_index))) { + new_data->sink = sink; } } } @@ -816,6 +808,9 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n } static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_output_new_data *new_data, struct userdata *u) { + const char *role; + uint32_t role_index; + pa_assert(c); pa_assert(new_data); pa_assert(u); @@ -827,27 +822,22 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou return PA_HOOK_OK; if (new_data->source) - pa_log_debug("Not restoring device for stream, because already set"); - else { - const char *role; - uint32_t role_index; + pa_log_debug("Overriding device for stream, even although it is already set. I am evil that way..."); - if (!(role = pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_ROLE))) - role_index = get_role_index(""); - else - role_index = get_role_index(role); + if (!(role = pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_ROLE))) + role_index = get_role_index("none"); + else + role_index = get_role_index(role); - if (PA_INVALID_INDEX != role_index) { - uint32_t device_index; + if (PA_INVALID_INDEX != role_index) { + uint32_t device_index; - device_index = u->preferred_sources[role_index]; - if (PA_INVALID_INDEX != device_index) { - pa_source *source; + device_index = u->preferred_sources[role_index]; + if (PA_INVALID_INDEX != device_index) { + pa_source *source; - if ((source = pa_idxset_get_by_index(u->core->sources, device_index))) { - new_data->source = source; - new_data->save_source = TRUE; - } + if ((source = pa_idxset_get_by_index(u->core->sources, device_index))) { + new_data->source = source; } } } |