fix(Window): avoid concurrency

This commit is contained in:
Alex 2019-05-13 14:35:45 +02:00
parent b54160e02f
commit 0c3c548bc0
3 changed files with 5 additions and 3 deletions

View File

@ -6,8 +6,8 @@
#include "bar.hpp"
#include "client.hpp"
#include "modules/sway/ipc/client.hpp"
#include "util/sleeper_thread.hpp"
#include "util/json.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules::sway {
@ -27,10 +27,11 @@ class Window : public ALabel {
const Bar& bar_;
waybar::util::SleeperThread thread_;
Ipc ipc_;
std::mutex mutex_;
std::string window_;
int windowId_;
std::string app_id_;
util::JsonParser parser_;
util::JsonParser parser_;
};
} // namespace waybar::modules::sway

View File

@ -65,7 +65,7 @@ std::thread waybar::modules::MPD::event_listener() {
try {
if (connection_ == nullptr) {
// Retry periodically if no connection
update();
dp.emit();
std::this_thread::sleep_for(interval_);
} else {
waitForEvent();

View File

@ -25,6 +25,7 @@ void Window::onEvent(const struct Ipc::ipc_response& res) { getTree(); }
void Window::onCmd(const struct Ipc::ipc_response& res) {
try {
std::lock_guard<std::mutex> lock(mutex_);
auto payload = parser_.parse(res.payload);
auto [nb, id, name, app_id] = getFocusedNode(payload);
if (!app_id_.empty()) {