File 0006-fix_playerctld_incorrect_properties.patch of Package aylurs-gtk-shell

From 60c4fdcca841b9375bca68ce14b4dbac07f7c503 Mon Sep 17 00:00:00 2001
From: Mono <boyhuanggordon@gmail.com>
Date: Wed, 17 Jul 2024 23:06:41 +0800
Subject: [PATCH] Fix playerctld incorrect properties (#496)

---
 src/service/mpris.ts | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/service/mpris.ts b/src/service/mpris.ts
index b34c3b5a..adb6d776 100644
--- a/src/service/mpris.ts
+++ b/src/service/mpris.ts
@@ -113,7 +113,7 @@ export class MprisPlayer extends Service {
     private _loopStatus!: LoopStatus | null;
     private _length!: number;
 
-    private _binding = { mpris: 0, player: 0 };
+    private _binding = { mpris: [0, 0], player: 0 };
     private _mprisProxy: MprisProxy;
     private _playerProxy: PlayerProxy;
 
@@ -138,18 +138,21 @@ export class MprisPlayer extends Service {
     }
 
     close() {
-        this._mprisProxy?.disconnect(this._binding.mpris);
+        this._mprisProxy?.disconnect(this._binding.mpris[0]);
+        this._mprisProxy?.disconnect(this._binding.mpris[1]);
         this._playerProxy?.disconnect(this._binding.player);
         this.emit('closed');
     }
 
     private _onMprisProxyReady() {
-        this._binding.mpris = this._mprisProxy.connect(
+        this._binding.mpris[0] = this._mprisProxy.connect(
             'notify::g-name-owner',
             () => {
                 if (!this._mprisProxy.g_name_owner)
                     this.close();
             });
+        this._binding.mpris[1] = this._mprisProxy.connect(
+            'g-properties-changed', () => this._updateState());
 
         this._identity = this._mprisProxy.Identity;
         this._entry = this._mprisProxy.DesktopEntry;
@@ -201,6 +204,7 @@ export class MprisPlayer extends Service {
         this.updateProperty('track-cover-url', trackCoverUrl);
         this.updateProperty('length', length);
         this.updateProperty('identity', this._mprisProxy.Identity);
+        this.updateProperty('entry', this._mprisProxy.DesktopEntry);
         this._cacheCoverArt();
         this.emit('changed');
     }
openSUSE Build Service is sponsored by