Simplify fix: only add isInt() check in refresh methods

Changed approach per maintainer feedback - instead of caching signal values,
just add isInt() check before accessing config_["signal"].asInt() in refresh()
methods. This is simpler and more minimal.

Co-authored-by: Alexays <13947260+Alexays@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-02-04 08:57:08 +00:00
parent 74fb2f252f
commit 0a8b7b096a
4 changed files with 4 additions and 9 deletions

View File

@ -42,7 +42,6 @@ class Custom : public ALabel {
int pid_;
util::command::res output_;
util::JsonParser parser_;
int signal_; // Cached signal value (-1 = disabled) to avoid JSON access in signal handler
util::SleeperThread thread_;
};

View File

@ -33,7 +33,6 @@ class Image : public AModule {
int size_;
std::chrono::milliseconds interval_;
util::command::res output_;
int signal_; // Cached signal value (-1 = disabled) to avoid JSON access in signal handler
util::SleeperThread thread_;
};

View File

@ -13,8 +13,7 @@ waybar::modules::Custom::Custom(const std::string& name, const std::string& id,
tooltip_format_enabled_{config_["tooltip-format"].isString()},
percentage_(0),
fp_(nullptr),
pid_(-1),
signal_(config_["signal"].isInt() ? config_["signal"].asInt() : -1) {
pid_(-1) {
if (config.isNull()) {
spdlog::warn("There is no configuration for 'custom/{}', element will be hidden", name);
}
@ -137,7 +136,7 @@ void waybar::modules::Custom::waitingWorker() {
}
void waybar::modules::Custom::refresh(int sig) {
if (signal_ != -1 && sig == SIGRTMIN + signal_) {
if (config_["signal"].isInt() && sig == SIGRTMIN + config_["signal"].asInt()) {
thread_.wake_up();
}
}

View File

@ -1,9 +1,7 @@
#include "modules/image.hpp"
waybar::modules::Image::Image(const std::string& id, const Json::Value& config)
: AModule(config, "image", id),
box_(Gtk::ORIENTATION_HORIZONTAL, 0),
signal_(config_["signal"].isInt() ? config_["signal"].asInt() : -1) {
: AModule(config, "image", id), box_(Gtk::ORIENTATION_HORIZONTAL, 0) {
box_.pack_start(image_);
box_.set_name("image");
if (!id.empty()) {
@ -43,7 +41,7 @@ void waybar::modules::Image::delayWorker() {
}
void waybar::modules::Image::refresh(int sig) {
if (signal_ != -1 && sig == SIGRTMIN + signal_) {
if (config_["signal"].isInt() && sig == SIGRTMIN + config_["signal"].asInt()) {
thread_.wake_up();
}
}