feat: use interval thread until got inotify event

This commit is contained in:
Alexis 2018-10-25 17:39:15 +02:00
parent 7f1f217d84
commit 9fae5efc06
2 changed files with 7 additions and 0 deletions

View File

@ -24,6 +24,7 @@ class Battery : public ALabel {
void worker();
util::SleeperThread thread_;
util::SleeperThread threadTimer_;
std::vector<fs::path> batteries_;
int fd_;
};

View File

@ -47,12 +47,18 @@ void waybar::modules::Battery::worker()
{
// Trigger first values
update();
uint32_t interval = config_["interval"] ? config_["interval"].asUInt() : 60;
threadTimer_ = [this, interval] {
thread_.sleep_for(chrono::seconds(interval));
dp.emit();
};
thread_ = [this] {
struct inotify_event event = {0};
int nbytes = read(fd_, &event, sizeof(event));
if (nbytes != sizeof(event)) {
return;
}
threadTimer_.stop();
dp.emit();
};
}