decoder/List: add RAII class

This commit is contained in:
Max Kellermann
2019-02-05 22:11:45 +01:00
parent e85b24bee0
commit 7a23c123c8
7 changed files with 21 additions and 23 deletions

View File

@@ -65,7 +65,7 @@ try {
const Path path = Path::FromFS(argv[1]);
decoder_plugin_init_all(ConfigData());
const ScopeDecoderPluginsInit decoder_plugins_init({});
const auto *plugin = FindContainerDecoderPlugin(path);
if (plugin == nullptr) {
@@ -87,8 +87,6 @@ try {
bos.Flush();
decoder_plugin_deinit_all();
return EXIT_SUCCESS;
} catch (...) {
PrintException(std::current_exception());

View File

@@ -91,22 +91,18 @@ class GlobalInit {
const ConfigData config;
EventThread io_thread;
const ScopeInputPluginsInit input_plugins_init;
const ScopeDecoderPluginsInit decoder_plugins_init;
public:
explicit GlobalInit(Path config_path)
:config(AutoLoadConfigFile(config_path)),
input_plugins_init(config, io_thread.GetEventLoop())
input_plugins_init(config, io_thread.GetEventLoop()),
decoder_plugins_init(config)
{
io_thread.Start();
decoder_plugin_init_all(config);
pcm_convert_global_init(config);
}
~GlobalInit() {
decoder_plugin_deinit_all();
}
};
class ChromaprintDecoderClient final : public DecoderClient {

View File

@@ -66,7 +66,7 @@ try {
const ScopeInputPluginsInit input_plugins_init(config, io_thread.GetEventLoop());
playlist_list_global_init(config);
decoder_plugin_init_all(config);
const ScopeDecoderPluginsInit decoder_plugins_init(config);
/* open the playlist */
@@ -116,7 +116,6 @@ try {
playlist.reset();
is.reset();
decoder_plugin_deinit_all();
playlist_list_global_finish();
return EXIT_SUCCESS;

View File

@@ -96,8 +96,7 @@ try {
const ScopeInputPluginsInit input_plugins_init(ConfigData(),
io_thread.GetEventLoop());
decoder_plugin_init_all(ConfigData());
AtScopeExit() { decoder_plugin_deinit_all(); };
const ScopeDecoderPluginsInit decoder_plugins_init({});
plugin = decoder_plugin_from_name(decoder_name);
if (plugin == NULL) {

View File

@@ -89,19 +89,15 @@ class GlobalInit {
const ConfigData config;
EventThread io_thread;
const ScopeInputPluginsInit input_plugins_init;
const ScopeDecoderPluginsInit decoder_plugins_init;
public:
explicit GlobalInit(Path config_path)
:config(AutoLoadConfigFile(config_path)),
input_plugins_init(config, io_thread.GetEventLoop())
input_plugins_init(config, io_thread.GetEventLoop()),
decoder_plugins_init(config)
{
io_thread.Start();
decoder_plugin_init_all(config);
}
~GlobalInit() {
decoder_plugin_deinit_all();
}
};