aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2019-11-06 08:16:33 +0100
committerFelix Morgner <felix.morgner@gmail.com>2019-11-06 08:16:33 +0100
commitdeb1b401cc0a00521e2fdea6b881f32e5a351b2c (patch)
treef91f67150234093770200331508bc5c2b5a96db8
parent0add63c0435a896285ef7e08a5da1865fff456be (diff)
downloadwanda-deb1b401cc0a00521e2fdea6b881f32e5a351b2c.tar.xz
wanda-deb1b401cc0a00521e2fdea6b881f32e5a351b2c.zip
wandac: don't stop the commander while handling events
-rw-r--r--src/wanda/wandac.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/wanda/wandac.cpp b/src/wanda/wandac.cpp
index 1d317db..0d329a4 100644
--- a/src/wanda/wandac.cpp
+++ b/src/wanda/wandac.cpp
@@ -51,8 +51,9 @@ struct cli
struct listener : wanda::commander::listener
{
- listener(::cli & cli)
+ listener(::cli & cli, asio::io_service & service)
: m_cli{cli}
+ , m_service{service}
{
}
@@ -61,12 +62,15 @@ struct listener : wanda::commander::listener
if (m_cli.command == "change")
{
commander.send(wanda::make_change_command());
- commander.stop();
+ m_service.post([&]{
+ commander.stop();
+ });
}
}
private:
::cli & m_cli;
+ asio::io_service & m_service;
};
int main(int argc, char const * const * argv)
@@ -86,7 +90,7 @@ int main(int argc, char const * const * argv)
auto interface = wanda::xdg_path_for(wanda::xdg_directory::runtime_dir, wanda::environment{}) / ".wanda_interface";
auto service = asio::io_service{};
- auto listener = ::listener{cli};
+ auto listener = ::listener{cli, service};
auto commander = wanda::commander{service, interface, listener};
@@ -94,4 +98,4 @@ int main(int argc, char const * const * argv)
commander.start();
service.run();
-} \ No newline at end of file
+}