rhythmbox r5572 - in trunk: . plugins/mmkeys



Author: jmatthew
Date: Sat Feb  9 23:46:32 2008
New Revision: 5572
URL: http://svn.gnome.org/viewvc/rhythmbox?rev=5572&view=rev

Log:
2008-02-10  Jonathan Matthew  <jonathan d14n org>

	* plugins/mmkeys/rb-mmkeys-plugin.c: (impl_activate):
	Try the new interface/path names for the media player keys interface
	first, falling back if that doesn't work.  Fixes #510406.


Modified:
   trunk/ChangeLog
   trunk/plugins/mmkeys/rb-mmkeys-plugin.c

Modified: trunk/plugins/mmkeys/rb-mmkeys-plugin.c
==============================================================================
--- trunk/plugins/mmkeys/rb-mmkeys-plugin.c	(original)
+++ trunk/plugins/mmkeys/rb-mmkeys-plugin.c	Sat Feb  9 23:46:32 2008
@@ -294,21 +294,49 @@
 	if (plugin->grab_type == NONE && bus != NULL) {
 		GError *error = NULL;
 
-		plugin->proxy = dbus_g_proxy_new_for_name (bus,
-				"org.gnome.SettingsDaemon",
-				"/org/gnome/SettingsDaemon",
-				"org.gnome.SettingsDaemon");
-		if (plugin->proxy != NULL) {
+		plugin->proxy = dbus_g_proxy_new_for_name_owner (bus,
+								 "org.gnome.SettingsDaemon",
+								 "/org/gnome/SettingsDaemon/MediaKeys",
+								 "org.gnome.SettingsDaemon.MediaKeys",
+								 &error);
+		if (plugin->proxy == NULL) {
+			g_warning ("Unable to grab media player keys: %s", error->message);
+			g_error_free (error);
+		} else {
 			dbus_g_proxy_call (plugin->proxy,
 					   "GrabMediaPlayerKeys", &error,
 					   G_TYPE_STRING, "Rhythmbox",
 					   G_TYPE_UINT, 0,
 					   G_TYPE_INVALID,
 					   G_TYPE_INVALID);
+
+			/* if the method doesn't exist, try the old interface/path */
+			if (error != NULL &&
+			    error->domain == DBUS_GERROR &&
+			    error->code == DBUS_GERROR_UNKNOWN_METHOD) {
+				g_clear_error (&error);
+				g_object_unref (plugin->proxy);
+
+				rb_debug ("trying old dbus interface/path");
+				plugin->proxy = dbus_g_proxy_new_for_name_owner (bus,
+										 "org.gnome.SettingsDaemon",
+										 "/org/gnome/SettingsDaemon",
+										 "org.gnome.SettingsDaemon",
+										 &error);
+				if (plugin->proxy != NULL) {
+					dbus_g_proxy_call (plugin->proxy,
+							   "GrabMediaPlayerKeys", &error,
+							   G_TYPE_STRING, "Rhythmbox",
+							   G_TYPE_UINT, 0,
+							   G_TYPE_INVALID,
+							   G_TYPE_INVALID);
+				}
+			}
+
 			if (error == NULL) {
 				GtkWindow *window;
 
-				rb_debug ("created dbus proxy for org.gnome.SettingsDaemon; grabbing keys");
+				rb_debug ("created dbus proxy for org.gnome.SettingsDaemon.MediaKeys; grabbing keys");
 				dbus_g_object_register_marshaller (rb_marshal_VOID__STRING_STRING,
 						G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
 
@@ -329,15 +357,6 @@
 				g_object_unref (window);
 
 				plugin->grab_type = SETTINGS_DAEMON;
-
-			} else if (error->domain == DBUS_GERROR &&
-				   (error->code != DBUS_GERROR_NAME_HAS_NO_OWNER ||
-				   error->code != DBUS_GERROR_SERVICE_UNKNOWN)) {
-				/* settings daemon dbus service doesn't exist.
-				 * just silently fail.
-				 */
-				rb_debug ("org.gnome.SettingsDaemon dbus service not found");
-				g_error_free (error);
 			} else {
 				g_warning ("Unable to grab media player keys: %s", error->message);
 				g_error_free (error);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]