diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2019-11-06 08:16:33 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2019-11-06 08:16:33 +0100 |
| commit | deb1b401cc0a00521e2fdea6b881f32e5a351b2c (patch) | |
| tree | f91f67150234093770200331508bc5c2b5a96db8 | |
| parent | 0add63c0435a896285ef7e08a5da1865fff456be (diff) | |
| download | wanda-deb1b401cc0a00521e2fdea6b881f32e5a351b2c.tar.xz wanda-deb1b401cc0a00521e2fdea6b881f32e5a351b2c.zip | |
wandac: don't stop the commander while handling events
| -rw-r--r-- | src/wanda/wandac.cpp | 12 |
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 +} |
