diff options
Diffstat (limited to 'src/output_thread.c')
-rw-r--r-- | src/output_thread.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/output_thread.c b/src/output_thread.c index 60d008407..c3e064c3f 100644 --- a/src/output_thread.c +++ b/src/output_thread.c @@ -88,6 +88,20 @@ ao_disable(struct audio_output *ao) } } +static const struct audio_format * +ao_filter_open(struct audio_output *ao, + struct audio_format *audio_format, + GError **error_r) +{ + return filter_open(ao->filter, audio_format, error_r); +} + +static void +ao_filter_close(struct audio_output *ao) +{ + filter_close(ao->filter); +} + static void ao_open(struct audio_output *ao) { @@ -109,8 +123,7 @@ ao_open(struct audio_output *ao) /* open the filter */ - filter_audio_format = filter_open(ao->filter, &ao->in_audio_format, - &error); + filter_audio_format = ao_filter_open(ao, &ao->in_audio_format, &error); if (filter_audio_format == NULL) { g_warning("Failed to open filter for \"%s\" [%s]: %s", ao->name, ao->plugin->name, error->message); @@ -137,7 +150,7 @@ ao_open(struct audio_output *ao) ao->name, ao->plugin->name, error->message); g_error_free(error); - filter_close(ao->filter); + ao_filter_close(ao); ao->fail_timer = g_timer_new(); return; } @@ -176,7 +189,7 @@ ao_close(struct audio_output *ao, bool drain) ao_plugin_cancel(ao->plugin, ao->data); ao_plugin_close(ao->plugin, ao->data); - filter_close(ao->filter); + ao_filter_close(ao); g_mutex_lock(ao->mutex); @@ -189,9 +202,8 @@ ao_reopen_filter(struct audio_output *ao) const struct audio_format *filter_audio_format; GError *error = NULL; - filter_close(ao->filter); - filter_audio_format = filter_open(ao->filter, &ao->in_audio_format, - &error); + ao_filter_close(ao); + filter_audio_format = ao_filter_open(ao, &ao->in_audio_format, &error); if (filter_audio_format == NULL) { g_warning("Failed to open filter for \"%s\" [%s]: %s", ao->name, ao->plugin->name, error->message); |