mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-11-04 01:32:42 +01:00 
			
		
		
		
	Stop MPRIS module from updating every ~20ms as onPlayerMetadata(), onPlayerPlay()
callbacks get triggered without regard for update interval.
This commit is contained in:
		@@ -80,6 +80,7 @@ class Mpris : public ALabel {
 | 
				
			|||||||
  std::string lastPlayer;
 | 
					  std::string lastPlayer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  util::SleeperThread thread_;
 | 
					  util::SleeperThread thread_;
 | 
				
			||||||
 | 
					  std::chrono::time_point<std::chrono::system_clock> last_update_;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}  // namespace waybar::modules::mpris
 | 
					}  // namespace waybar::modules::mpris
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,8 @@ Mpris::Mpris(const std::string& id, const Json::Value& config)
 | 
				
			|||||||
      ellipsis_("\u2026"),
 | 
					      ellipsis_("\u2026"),
 | 
				
			||||||
      player_("playerctld"),
 | 
					      player_("playerctld"),
 | 
				
			||||||
      manager(),
 | 
					      manager(),
 | 
				
			||||||
      player() {
 | 
					      player(),
 | 
				
			||||||
 | 
					      last_update_(std::chrono::system_clock::now() - interval_) {
 | 
				
			||||||
  if (config_["format-playing"].isString()) {
 | 
					  if (config_["format-playing"].isString()) {
 | 
				
			||||||
    format_playing_ = config_["format-playing"].asString();
 | 
					    format_playing_ = config_["format-playing"].asString();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -559,6 +560,10 @@ bool Mpris::handleToggle(GdkEventButton* const& e) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
auto Mpris::update() -> void {
 | 
					auto Mpris::update() -> void {
 | 
				
			||||||
 | 
					  const auto now = std::chrono::system_clock::now();
 | 
				
			||||||
 | 
					  if (now - last_update_ < interval_) return;
 | 
				
			||||||
 | 
					  last_update_ = now;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  auto opt = getPlayerInfo();
 | 
					  auto opt = getPlayerInfo();
 | 
				
			||||||
  if (!opt) {
 | 
					  if (!opt) {
 | 
				
			||||||
    event_box_.set_visible(false);
 | 
					    event_box_.set_visible(false);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user