Index: gnome-settings-multimedia-keys.c
===================================================================
--- gnome-settings-multimedia-keys.c	(revision 7251)
+++ gnome-settings-multimedia-keys.c	(working copy)
@@ -558,13 +558,13 @@ do_sound_action (Acme *acme, int type)
 	dialog_show (acme);
 }
 
-static void
+static gboolean
 do_multimedia_player_action (Acme *acme, const gchar *key)
 {
-	gnome_settings_server_media_player_key_pressed (acme->server, key);
+	return gnome_settings_server_media_player_key_pressed (acme->server, key);
 }
 
-static void
+static gboolean
 do_action (Acme *acme, int type)
 {
 	gchar *cmd;
@@ -608,23 +608,25 @@ do_action (Acme *acme, int type)
 		do_www_action (acme, NULL);
 		break;
 	case PLAY_KEY:
-		do_multimedia_player_action (acme, "Play");
+		return do_multimedia_player_action (acme, "Play");
 		break;
 	case PAUSE_KEY:
-		do_multimedia_player_action (acme, "Pause");
+		return do_multimedia_player_action (acme, "Pause");
 		break;
 	case STOP_KEY:
-		do_multimedia_player_action (acme, "Stop");
+		return do_multimedia_player_action (acme, "Stop");
 		break;
 	case PREVIOUS_KEY:
-		do_multimedia_player_action (acme, "Previous");
+		return do_multimedia_player_action (acme, "Previous");
 		break;
 	case NEXT_KEY:
-		do_multimedia_player_action (acme, "Next");
+		return do_multimedia_player_action (acme, "Next");
 		break;
 	default:
 		g_assert_not_reached ();
 	}
+
+	return FALSE;
 }
 
 static GdkScreen *
@@ -689,8 +691,10 @@ acme_filter_events (GdkXEvent *xevent, G
 			acme->current_screen = acme_get_screen_from_event
 				(acme, xanyev);
 
-			do_action (acme, keys[i].key_type);
-			return GDK_FILTER_REMOVE;
+			if (do_action (acme, keys[i].key_type) == FALSE)
+				return GDK_FILTER_REMOVE;
+			else
+				return GDK_FILTER_CONTINUE;
 		}
 	}
 
Index: gnome-settings-dbus.c
===================================================================
--- gnome-settings-dbus.c	(revision 7251)
+++ gnome-settings-dbus.c	(working copy)
@@ -134,16 +134,19 @@ gnome_settings_server_get (void)
 	return g_object_new (GNOME_SETTINGS_TYPE_SERVER, NULL);
 }
 
-void
+gboolean
 gnome_settings_server_media_player_key_pressed (GObject *server, const gchar *key)
 {
 	const gchar *application = NULL;
+	gboolean have_listeners = (GNOME_SETTINGS_SERVER (server)->media_players != NULL);
 
-	if (GNOME_SETTINGS_SERVER (server)->media_players != NULL) {
+	if (have_listeners) {
 		application = ((MediaPlayer *)GNOME_SETTINGS_SERVER (server)->media_players->data)->application;
 	}
 
 	g_signal_emit (server, signals[MEDIA_PLAYER_KEY_PRESSED], 0, application, key);
+
+	return have_listeners;
 }
 
 static GObject*
Index: gnome-settings-dbus.h
===================================================================
--- gnome-settings-dbus.h	(revision 7251)
+++ gnome-settings-dbus.h	(working copy)
@@ -27,7 +27,7 @@
 G_BEGIN_DECLS
 
 GObject *gnome_settings_server_get                      (void);
-void     gnome_settings_server_media_player_key_pressed (GObject *server, const gchar *key);
+gboolean gnome_settings_server_media_player_key_pressed (GObject *server, const gchar *key);
 
 G_END_DECLS
 
