Stop MPRIS module from updating every ~20ms as onPlayerMetadata(), onPlayerPlay()

callbacks get triggered without regard for update interval.
pull/2276/head
Skirmantas Kligys 2023-07-03 13:46:50 -07:00
parent 91588fb8bb
commit c2f9d889f4
2 changed files with 7 additions and 1 deletions

View File

@ -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

View File

@ -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);