add `waitingWorker()` to `Custom`
This commit is contained in:
		
							parent
							
								
									7c28ffc856
								
							
						
					
					
						commit
						bf371f70d1
					
				| 
						 | 
					@ -22,6 +22,7 @@ class Custom : public ALabel {
 | 
				
			||||||
 private:
 | 
					 private:
 | 
				
			||||||
  void delayWorker();
 | 
					  void delayWorker();
 | 
				
			||||||
  void continuousWorker();
 | 
					  void continuousWorker();
 | 
				
			||||||
 | 
					  void waitingWorker();
 | 
				
			||||||
  void parseOutputRaw();
 | 
					  void parseOutputRaw();
 | 
				
			||||||
  void parseOutputJson();
 | 
					  void parseOutputJson();
 | 
				
			||||||
  void handleEvent();
 | 
					  void handleEvent();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,9 @@ waybar::modules::Custom::Custom(const std::string& name, const std::string& id,
 | 
				
			||||||
      fp_(nullptr),
 | 
					      fp_(nullptr),
 | 
				
			||||||
      pid_(-1) {
 | 
					      pid_(-1) {
 | 
				
			||||||
  dp.emit();
 | 
					  dp.emit();
 | 
				
			||||||
  if (interval_.count() > 0) {
 | 
					  if (!config_["signal"].empty() && config_["interval"].empty()) {
 | 
				
			||||||
 | 
					    waitingWorker();
 | 
				
			||||||
 | 
					  } else if (interval_.count() > 0) {
 | 
				
			||||||
    delayWorker();
 | 
					    delayWorker();
 | 
				
			||||||
  } else if (config_["exec"].isString()) {
 | 
					  } else if (config_["exec"].isString()) {
 | 
				
			||||||
    continuousWorker();
 | 
					    continuousWorker();
 | 
				
			||||||
| 
						 | 
					@ -92,6 +94,26 @@ void waybar::modules::Custom::continuousWorker() {
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void waybar::modules::Custom::waitingWorker() {
 | 
				
			||||||
 | 
					  thread_ = [this] {
 | 
				
			||||||
 | 
					    bool can_update = true;
 | 
				
			||||||
 | 
					    if (config_["exec-if"].isString()) {
 | 
				
			||||||
 | 
					      output_ = util::command::execNoRead(config_["exec-if"].asString());
 | 
				
			||||||
 | 
					      if (output_.exit_code != 0) {
 | 
				
			||||||
 | 
					        can_update = false;
 | 
				
			||||||
 | 
					        dp.emit();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (can_update) {
 | 
				
			||||||
 | 
					      if (config_["exec"].isString()) {
 | 
				
			||||||
 | 
					        output_ = util::command::exec(config_["exec"].asString());
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      dp.emit();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    thread_.sleep();
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void waybar::modules::Custom::refresh(int sig) {
 | 
					void waybar::modules::Custom::refresh(int sig) {
 | 
				
			||||||
  if (sig == SIGRTMIN + config_["signal"].asInt()) {
 | 
					  if (sig == SIGRTMIN + config_["signal"].asInt()) {
 | 
				
			||||||
    thread_.wake_up();
 | 
					    thread_.wake_up();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue