X-Git-Url: https://code.delx.au/pulseaudio/blobdiff_plain/d7ce59de88eda4eb638f977975374359254731f7..a4b8a9d5a2514f1c5303556390b224e2220bb2ee:/src/modules/module-intended-roles.c diff --git a/src/modules/module-intended-roles.c b/src/modules/module-intended-roles.c index d19444d2..a9704d18 100644 --- a/src/modules/module-intended-roles.c +++ b/src/modules/module-intended-roles.c @@ -24,16 +24,11 @@ #endif #include -#include -#include -#include -#include #include #include #include #include -#include #include #include #include @@ -41,9 +36,9 @@ #include "module-intended-roles-symdef.h" PA_MODULE_AUTHOR("Lennart Poettering"); -PA_MODULE_DESCRIPTION("Automatically set device of streams based of intended roles of devices"); +PA_MODULE_DESCRIPTION("Automatically set device of streams based on intended roles of devices"); PA_MODULE_VERSION(PACKAGE_VERSION); -PA_MODULE_LOAD_ONCE(TRUE); +PA_MODULE_LOAD_ONCE(true); PA_MODULE_USAGE( "on_hotplug= " "on_rescue="); @@ -66,29 +61,12 @@ struct userdata { *sink_unlink_hook_slot, *source_unlink_hook_slot; - pa_bool_t on_hotplug:1; - pa_bool_t on_rescue:1; + bool on_hotplug:1; + bool on_rescue:1; }; -static pa_bool_t role_match(pa_proplist *proplist, const char *role) { - const char *ir; - char *r; - const char *state = NULL; - - if (!(ir = pa_proplist_gets(proplist, PA_PROP_DEVICE_INTENDED_ROLES))) - return FALSE; - - while ((r = pa_split_spaces(ir, &state))) { - - if (pa_streq(role, r)) { - pa_xfree(r); - return TRUE; - } - - pa_xfree(r); - } - - return FALSE; +static bool role_match(pa_proplist *proplist, const char *role) { + return pa_str_in_list_spaces(pa_proplist_gets(proplist, PA_PROP_DEVICE_INTENDED_ROLES), role); } static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_new_data *new_data, struct userdata *u) { @@ -117,11 +95,8 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n /* Prefer the default sink over any other sink, just in case... */ if ((def = pa_namereg_get_default_sink(c))) - if (role_match(def->proplist, role)) { - new_data->sink = def; - new_data->save_sink = FALSE; + if (role_match(def->proplist, role) && pa_sink_input_new_data_set_sink(new_data, def, false)) return PA_HOOK_OK; - } /* @todo: favour the highest priority device, not the first one we find? */ PA_IDXSET_FOREACH(s, c->sinks, idx) { @@ -131,11 +106,8 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n if (!PA_SINK_IS_LINKED(pa_sink_get_state(s))) continue; - if (role_match(s->proplist, role)) { - new_data->sink = s; - new_data->save_sink = FALSE; + if (role_match(s->proplist, role) && pa_sink_input_new_data_set_sink(new_data, s, false)) return PA_HOOK_OK; - } } return PA_HOOK_OK; @@ -168,8 +140,7 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou /* Prefer the default source over any other source, just in case... */ if ((def = pa_namereg_get_default_source(c))) if (role_match(def->proplist, role)) { - new_data->source = def; - new_data->save_source = FALSE; + pa_source_output_new_data_set_source(new_data, def, false); return PA_HOOK_OK; } @@ -185,8 +156,7 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou /* @todo: favour the highest priority device, not the first one we find? */ if (role_match(s->proplist, role)) { - new_data->source = s; - new_data->save_source = FALSE; + pa_source_output_new_data_set_source(new_data, s, false); return PA_HOOK_OK; } } @@ -232,7 +202,7 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct if (!role_match(sink->proplist, role)) continue; - pa_sink_input_move_to(si, sink, FALSE); + pa_sink_input_move_to(si, sink, false); } return PA_HOOK_OK; @@ -282,7 +252,7 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source, if (!role_match(source->proplist, role)) continue; - pa_source_output_move_to(so, source, FALSE); + pa_source_output_move_to(so, source, false); } return PA_HOOK_OK; @@ -319,7 +289,7 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str /* Would the default sink fit? If so, let's use it */ if (def != sink && role_match(def->proplist, role)) - if (pa_sink_input_move_to(si, def, FALSE) >= 0) + if (pa_sink_input_move_to(si, def, false) >= 0) continue; /* Try to find some other fitting sink */ @@ -332,7 +302,7 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str continue; if (role_match(d->proplist, role)) - if (pa_sink_input_move_to(si, d, FALSE) >= 0) + if (pa_sink_input_move_to(si, d, false) >= 0) break; } } @@ -374,7 +344,7 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc /* Would the default source fit? If so, let's use it */ if (def != source && role_match(def->proplist, role) && !source->monitor_of == !def->monitor_of) { - pa_source_output_move_to(so, def, FALSE); + pa_source_output_move_to(so, def, false); continue; } @@ -389,7 +359,7 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc /* If moving from a monitor, move to another monitor */ if (!source->monitor_of == !d->monitor_of && role_match(d->proplist, role)) { - pa_source_output_move_to(so, d, FALSE); + pa_source_output_move_to(so, d, false); break; } } @@ -401,7 +371,7 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc int pa__init(pa_module*m) { pa_modargs *ma = NULL; struct userdata *u; - pa_bool_t on_hotplug = TRUE, on_rescue = TRUE; + bool on_hotplug = true, on_rescue = true; pa_assert(m);