From: Mikel Astiz <mikel.astiz@xxxxxxxxxxxx> Wrap the moving sink-input and source-outputs into two helper functions. --- src/modules/bluetooth/module-bluetooth-device.c | 51 ++++++++++++++++--------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c index ea31fa3..badf296 100644 --- a/src/modules/bluetooth/module-bluetooth-device.c +++ b/src/modules/bluetooth/module-bluetooth-device.c @@ -2188,10 +2188,39 @@ static void restore_sco_volume_callbacks(struct userdata *u) { } /* Run from main thread */ +static void move_all_start(struct userdata *u, pa_queue **inputs, pa_queue **outputs) { + *inputs = NULL; + *outputs = NULL; + + if (u->sink) + *inputs = pa_sink_move_all_start(u->sink, NULL); + + if (u->source) + *outputs = pa_source_move_all_start(u->source, NULL); +} + +/* Run from main thread */ +static void move_all_end(struct userdata *u, pa_queue *inputs, pa_queue *outputs) { + if (inputs) { + if (u->sink) + pa_sink_move_all_finish(u->sink, inputs, FALSE); + else + pa_sink_move_all_fail(inputs); + } + + if (outputs) { + if (u->source) + pa_source_move_all_finish(u->source, outputs, FALSE); + else + pa_source_move_all_fail(outputs); + } +} + +/* Run from main thread */ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) { struct userdata *u; enum profile *d; - pa_queue *inputs = NULL, *outputs = NULL; + pa_queue *inputs, *outputs; pa_assert(c); pa_assert(new_profile); @@ -2222,11 +2251,7 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) { } } - if (u->sink) - inputs = pa_sink_move_all_start(u->sink, NULL); - - if (u->source) - outputs = pa_source_move_all_start(u->source, NULL); + move_all_start(u, &inputs, &outputs); stop_thread(u); @@ -2245,19 +2270,7 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) { if (u->sink || u->source) start_thread(u); - if (inputs) { - if (u->sink) - pa_sink_move_all_finish(u->sink, inputs, FALSE); - else - pa_sink_move_all_fail(inputs); - } - - if (outputs) { - if (u->source) - pa_source_move_all_finish(u->source, outputs, FALSE); - else - pa_source_move_all_fail(outputs); - } + move_all_end(u, inputs, outputs); return 0; } -- 1.7.11.4