From 64c03f31249810b26d2d177334d6539940540a05 Mon Sep 17 00:00:00 2001 From: elParaguayo Date: Thu, 16 Nov 2023 20:07:32 +0000 Subject: [PATCH] Prevent double hooks being fired on Mpris2 --- CHANGELOG | 1 + qtile_extras/widget/mpris2widget.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 69b24989..7f928901 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +2-23-11-17: [BUGFIX] Prevent double hooks for Mpris2 widget 2023-11-13: [BUGFIX] A neater fix for the `Visualiser` CPU bug 2023-11-13: [BUGFIX] Fix `fraction` KeyError in `UpowerWidget` 2023-11-13: [FEATURE] Add `invert` option to `Visualiser` to draw bars from top down diff --git a/qtile_extras/widget/mpris2widget.py b/qtile_extras/widget/mpris2widget.py index e2047a9f..4180638e 100644 --- a/qtile_extras/widget/mpris2widget.py +++ b/qtile_extras/widget/mpris2widget.py @@ -127,10 +127,14 @@ def __init__(self, **config): self.add_defaults(ExtendedPopupMixin.defaults) self.add_defaults(Mpris2.defaults) self._popup_values = {} + self._last_meta = {} + self._last_status = "" def get_track_info(self, metadata): result = widget.Mpris2.get_track_info(self, metadata) - hook.fire("mpris_new_track", self.metadata) + if self.metadata != self._last_meta: + hook.fire("mpris_new_track", self.metadata) + self._last_meta = self.metadata.copy() return result def parse_message(self, _interface_name, changed_properties, _invalidated_properties): @@ -139,7 +143,10 @@ def parse_message(self, _interface_name, changed_properties, _invalidated_proper self, _interface_name, changed_properties, _invalidated_properties ) if update_status: - hook.fire("mpris_status_change", changed_properties["PlaybackStatus"].value) + status = changed_properties["PlaybackStatus"].value + if status != self._last_status: + hook.fire("mpris_status_change", status) + self._last_status = status def bind_callbacks(self): self.extended_popup.bind_callbacks(