Blame SOURCES/0001-media-keys-Fix-mmkeys-D-Bus-API-to-match-API-docs.patch

dce4b5
From 12c92274bc118836d9c6dcb5262b82536ef2fe58 Mon Sep 17 00:00:00 2001
dce4b5
From: Bastien Nocera <hadess@hadess.net>
dce4b5
Date: Fri, 21 Apr 2017 15:30:47 +0200
dce4b5
Subject: [PATCH] media-keys: Fix mmkeys D-Bus API to match API docs
dce4b5
dce4b5
Bizarrely, since 2011, gnome-settings-daemon was documented as using
dce4b5
org.gnome.SettingsDaemon.MediaKeys D-Bus name, but everybody ended up
dce4b5
using the org.gnome.SettingsDaemon owned by the daemon instead, and
dce4b5
never reported the discrepancy.
dce4b5
dce4b5
This fixes the code to match the 6-year old API as documented by owning
dce4b5
the org.gnome.SettingsDaemon.MediaKeys.
dce4b5
dce4b5
The portion of this patch adding the org.gnome.SettingsDaemon.MediaKeys
dce4b5
name owning will need to be backported as far as reasonably possible by
dce4b5
distributions, and all users of the API changed before GNOME 3.26. This
dce4b5
would obviously have been easier if the problem was reported when
dce4b5
detected, committer of this fix included.
dce4b5
dce4b5
https://bugzilla.gnome.org/show_bug.cgi?id=781326
dce4b5
---
dce4b5
 plugins/media-keys/gsd-media-keys-manager.c | 12 ++++++++++++
dce4b5
 1 file changed, 12 insertions(+)
dce4b5
dce4b5
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
dce4b5
index 33b6762..bf79cd7 100644
dce4b5
--- a/plugins/media-keys/gsd-media-keys-manager.c
dce4b5
+++ b/plugins/media-keys/gsd-media-keys-manager.c
dce4b5
@@ -219,6 +219,8 @@ struct GsdMediaKeysManagerPrivate
dce4b5
 
dce4b5
         guint            start_idle_id;
dce4b5
 
dce4b5
+        /* Multimedia keys */
dce4b5
+        guint            mmkeys_name_id;
dce4b5
         MprisController *mpris_controller;
dce4b5
 };
dce4b5
 
dce4b5
@@ -2926,6 +2928,11 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
dce4b5
                 priv->start_idle_id = 0;
dce4b5
         }
dce4b5
 
dce4b5
+        if (priv->mmkeys_name_id > 0) {
dce4b5
+                g_bus_unown_name (priv->mmkeys_name_id);
dce4b5
+                priv->mmkeys_name_id = 0;
dce4b5
+        }
dce4b5
+
dce4b5
         if (priv->bus_cancellable != NULL) {
dce4b5
                 g_cancellable_cancel (priv->bus_cancellable);
dce4b5
                 g_object_unref (priv->bus_cancellable);
dce4b5
@@ -3227,6 +3234,11 @@ on_bus_gotten (GObject             *source_object,
dce4b5
                                            NULL,
dce4b5
                                            NULL);
dce4b5
 
dce4b5
+        manager->priv->mmkeys_name_id = g_bus_own_name_on_connection (manager->priv->connection,
dce4b5
+                                                                      "org.gnome.SettingsDaemon.MediaKeys",
dce4b5
+                                                                      G_BUS_NAME_OWNER_FLAGS_NONE,
dce4b5
+                                                                      NULL, NULL, NULL, NULL);
dce4b5
+
dce4b5
         g_dbus_proxy_new (manager->priv->connection,
dce4b5
                           G_DBUS_PROXY_FLAGS_NONE,
dce4b5
                           NULL,
dce4b5
-- 
dce4b5
2.9.3
dce4b5