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 | |
| 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')
| -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;              }          }      }  | 
