event/Thread: start the thread in the constructor

This is the proper fix for the e309941646e0ff1b6 regression; see
commit abc84206977744f30f528f2ef27d87220266276d
This commit is contained in:
Max Kellermann 2025-01-30 10:53:20 +01:00
parent ae112fe077
commit b49cfe96f4
13 changed files with 4 additions and 22 deletions

@ -329,9 +329,6 @@ MainConfigured(const CommandLineOptions &options,
Instance instance;
global_instance = &instance;
instance.io_thread.Start();
instance.rtio_thread.Start();
#ifdef ENABLE_NEIGHBOR_PLUGINS
instance.neighbors = std::make_unique<NeighborGlue>();
instance.neighbors->Init(raw_config,

@ -20,7 +20,9 @@ class EventThread final {
public:
explicit EventThread(bool _realtime=false)
:event_loop(ThreadId::Null()), thread(BIND_THIS_METHOD(Run)),
realtime(_realtime) {}
realtime(_realtime) {
Start();
}
~EventThread() noexcept {
Stop();
@ -30,11 +32,11 @@ public:
return event_loop;
}
private:
void Start();
void Stop() noexcept;
private:
void Run() noexcept;
};

@ -28,12 +28,6 @@ class GlobalInit {
EventThread io_thread;
public:
GlobalInit() {
io_thread.Start();
}
~GlobalInit() = default;
EventLoop &GetEventLoop() {
return io_thread.GetEventLoop();
}

@ -24,7 +24,6 @@ try {
const char *path = argv[1];
EventThread io_thread;
io_thread.Start();
const ScopeInputPluginsInit input_plugins_init(ConfigData(),
io_thread.GetEventLoop());

@ -84,8 +84,6 @@ public:
input_plugins_init(config, io_thread.GetEventLoop()),
decoder_plugins_init(config)
{
io_thread.Start();
pcm_convert_global_init(config);
}
};

@ -47,7 +47,6 @@ try {
const auto config = AutoLoadConfigFile(config_path);
EventThread io_thread;
io_thread.Start();
const ScopeInputPluginsInit input_plugins_init(config, io_thread.GetEventLoop());
const ScopePlaylistPluginsInit playlist_plugins_init(config);

@ -34,7 +34,6 @@ public:
explicit GlobalInit(Path config_path)
:config(AutoLoadConfigFile(config_path))
{
io_thread.Start();
}
};

@ -86,7 +86,6 @@ try {
const char *path = argv[2];
EventThread io_thread;
io_thread.Start();
const ScopeInputPluginsInit input_plugins_init(ConfigData(),
io_thread.GetEventLoop());

@ -91,7 +91,6 @@ public:
input_plugins_init(config, io_thread.GetEventLoop()),
decoder_plugins_init(config)
{
io_thread.Start();
}
};

@ -130,7 +130,6 @@ public:
explicit GlobalInit(Path config_path)
:config(AutoLoadConfigFile(config_path))
{
io_thread.Start();
}
};

@ -158,7 +158,6 @@ try {
const auto config = AutoLoadConfigFile(c.config_path);
EventThread io_thread;
io_thread.Start();
/* initialize the audio output */

@ -114,7 +114,6 @@ public:
GlobalInit(Path config_path)
:config(AutoLoadConfigFile(config_path))
{
io_thread.Start();
}
EventLoop &GetEventLoop() noexcept {

@ -35,7 +35,6 @@ public:
explicit GlobalInit(Path config_path)
:config(AutoLoadConfigFile(config_path))
{
io_thread.Start();
}
};