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:
parent
ae112fe077
commit
b49cfe96f4
@ -329,9 +329,6 @@ MainConfigured(const CommandLineOptions &options,
|
|||||||
Instance instance;
|
Instance instance;
|
||||||
global_instance = &instance;
|
global_instance = &instance;
|
||||||
|
|
||||||
instance.io_thread.Start();
|
|
||||||
instance.rtio_thread.Start();
|
|
||||||
|
|
||||||
#ifdef ENABLE_NEIGHBOR_PLUGINS
|
#ifdef ENABLE_NEIGHBOR_PLUGINS
|
||||||
instance.neighbors = std::make_unique<NeighborGlue>();
|
instance.neighbors = std::make_unique<NeighborGlue>();
|
||||||
instance.neighbors->Init(raw_config,
|
instance.neighbors->Init(raw_config,
|
||||||
|
@ -20,7 +20,9 @@ class EventThread final {
|
|||||||
public:
|
public:
|
||||||
explicit EventThread(bool _realtime=false)
|
explicit EventThread(bool _realtime=false)
|
||||||
:event_loop(ThreadId::Null()), thread(BIND_THIS_METHOD(Run)),
|
:event_loop(ThreadId::Null()), thread(BIND_THIS_METHOD(Run)),
|
||||||
realtime(_realtime) {}
|
realtime(_realtime) {
|
||||||
|
Start();
|
||||||
|
}
|
||||||
|
|
||||||
~EventThread() noexcept {
|
~EventThread() noexcept {
|
||||||
Stop();
|
Stop();
|
||||||
@ -30,11 +32,11 @@ public:
|
|||||||
return event_loop;
|
return event_loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
void Start();
|
void Start();
|
||||||
|
|
||||||
void Stop() noexcept;
|
void Stop() noexcept;
|
||||||
|
|
||||||
private:
|
|
||||||
void Run() noexcept;
|
void Run() noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,12 +28,6 @@ class GlobalInit {
|
|||||||
EventThread io_thread;
|
EventThread io_thread;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GlobalInit() {
|
|
||||||
io_thread.Start();
|
|
||||||
}
|
|
||||||
|
|
||||||
~GlobalInit() = default;
|
|
||||||
|
|
||||||
EventLoop &GetEventLoop() {
|
EventLoop &GetEventLoop() {
|
||||||
return io_thread.GetEventLoop();
|
return io_thread.GetEventLoop();
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,6 @@ try {
|
|||||||
const char *path = argv[1];
|
const char *path = argv[1];
|
||||||
|
|
||||||
EventThread io_thread;
|
EventThread io_thread;
|
||||||
io_thread.Start();
|
|
||||||
|
|
||||||
const ScopeInputPluginsInit input_plugins_init(ConfigData(),
|
const ScopeInputPluginsInit input_plugins_init(ConfigData(),
|
||||||
io_thread.GetEventLoop());
|
io_thread.GetEventLoop());
|
||||||
|
@ -84,8 +84,6 @@ public:
|
|||||||
input_plugins_init(config, io_thread.GetEventLoop()),
|
input_plugins_init(config, io_thread.GetEventLoop()),
|
||||||
decoder_plugins_init(config)
|
decoder_plugins_init(config)
|
||||||
{
|
{
|
||||||
io_thread.Start();
|
|
||||||
|
|
||||||
pcm_convert_global_init(config);
|
pcm_convert_global_init(config);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -47,7 +47,6 @@ try {
|
|||||||
const auto config = AutoLoadConfigFile(config_path);
|
const auto config = AutoLoadConfigFile(config_path);
|
||||||
|
|
||||||
EventThread io_thread;
|
EventThread io_thread;
|
||||||
io_thread.Start();
|
|
||||||
|
|
||||||
const ScopeInputPluginsInit input_plugins_init(config, io_thread.GetEventLoop());
|
const ScopeInputPluginsInit input_plugins_init(config, io_thread.GetEventLoop());
|
||||||
const ScopePlaylistPluginsInit playlist_plugins_init(config);
|
const ScopePlaylistPluginsInit playlist_plugins_init(config);
|
||||||
|
@ -34,7 +34,6 @@ public:
|
|||||||
explicit GlobalInit(Path config_path)
|
explicit GlobalInit(Path config_path)
|
||||||
:config(AutoLoadConfigFile(config_path))
|
:config(AutoLoadConfigFile(config_path))
|
||||||
{
|
{
|
||||||
io_thread.Start();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -86,7 +86,6 @@ try {
|
|||||||
const char *path = argv[2];
|
const char *path = argv[2];
|
||||||
|
|
||||||
EventThread io_thread;
|
EventThread io_thread;
|
||||||
io_thread.Start();
|
|
||||||
|
|
||||||
const ScopeInputPluginsInit input_plugins_init(ConfigData(),
|
const ScopeInputPluginsInit input_plugins_init(ConfigData(),
|
||||||
io_thread.GetEventLoop());
|
io_thread.GetEventLoop());
|
||||||
|
@ -91,7 +91,6 @@ public:
|
|||||||
input_plugins_init(config, io_thread.GetEventLoop()),
|
input_plugins_init(config, io_thread.GetEventLoop()),
|
||||||
decoder_plugins_init(config)
|
decoder_plugins_init(config)
|
||||||
{
|
{
|
||||||
io_thread.Start();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -130,7 +130,6 @@ public:
|
|||||||
explicit GlobalInit(Path config_path)
|
explicit GlobalInit(Path config_path)
|
||||||
:config(AutoLoadConfigFile(config_path))
|
:config(AutoLoadConfigFile(config_path))
|
||||||
{
|
{
|
||||||
io_thread.Start();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -158,7 +158,6 @@ try {
|
|||||||
const auto config = AutoLoadConfigFile(c.config_path);
|
const auto config = AutoLoadConfigFile(c.config_path);
|
||||||
|
|
||||||
EventThread io_thread;
|
EventThread io_thread;
|
||||||
io_thread.Start();
|
|
||||||
|
|
||||||
/* initialize the audio output */
|
/* initialize the audio output */
|
||||||
|
|
||||||
|
@ -114,7 +114,6 @@ public:
|
|||||||
GlobalInit(Path config_path)
|
GlobalInit(Path config_path)
|
||||||
:config(AutoLoadConfigFile(config_path))
|
:config(AutoLoadConfigFile(config_path))
|
||||||
{
|
{
|
||||||
io_thread.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EventLoop &GetEventLoop() noexcept {
|
EventLoop &GetEventLoop() noexcept {
|
||||||
|
@ -35,7 +35,6 @@ public:
|
|||||||
explicit GlobalInit(Path config_path)
|
explicit GlobalInit(Path config_path)
|
||||||
:config(AutoLoadConfigFile(config_path))
|
:config(AutoLoadConfigFile(config_path))
|
||||||
{
|
{
|
||||||
io_thread.Start();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user