From c2f9d889f4cc1aa70fa77a6eec3eb63ff29b8f0f Mon Sep 17 00:00:00 2001 From: Skirmantas Kligys Date: Mon, 3 Jul 2023 13:46:50 -0700 Subject: [PATCH] Stop MPRIS module from updating every ~20ms as onPlayerMetadata(), onPlayerPlay() callbacks get triggered without regard for update interval. --- include/modules/mpris/mpris.hpp | 1 + src/modules/mpris/mpris.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/modules/mpris/mpris.hpp b/include/modules/mpris/mpris.hpp index ea5f7de6..3f2a6a63 100644 --- a/include/modules/mpris/mpris.hpp +++ b/include/modules/mpris/mpris.hpp @@ -80,6 +80,7 @@ class Mpris : public ALabel { std::string lastPlayer; util::SleeperThread thread_; + std::chrono::time_point last_update_; }; } // namespace waybar::modules::mpris diff --git a/src/modules/mpris/mpris.cpp b/src/modules/mpris/mpris.cpp index e4346941..7e8efee3 100644 --- a/src/modules/mpris/mpris.cpp +++ b/src/modules/mpris/mpris.cpp @@ -31,7 +31,8 @@ Mpris::Mpris(const std::string& id, const Json::Value& config) ellipsis_("\u2026"), player_("playerctld"), manager(), - player() { + player(), + last_update_(std::chrono::system_clock::now() - interval_) { if (config_["format-playing"].isString()) { format_playing_ = config_["format-playing"].asString(); } @@ -559,6 +560,10 @@ bool Mpris::handleToggle(GdkEventButton* const& e) { } auto Mpris::update() -> void { + const auto now = std::chrono::system_clock::now(); + if (now - last_update_ < interval_) return; + last_update_ = now; + auto opt = getPlayerInfo(); if (!opt) { event_box_.set_visible(false);