Index: rb-generic-player-plugin.c
===================================================================
--- rb-generic-player-plugin.c	(revision 5416)
+++ rb-generic-player-plugin.c	(working copy)
@@ -153,7 +153,7 @@
 
 		g_object_get (source, "entry-type", &entry_type, NULL);
 
-		playlist = rb_generic_player_playlist_source_new (plugin->shell, RB_GENERIC_PLAYER_SOURCE (source), NULL, entry_type);
+		playlist = rb_generic_player_playlist_source_new (plugin->shell, RB_GENERIC_PLAYER_SOURCE (source), NULL, NULL, entry_type);
 		g_boxed_free (RHYTHMDB_TYPE_ENTRY_TYPE, entry_type);
 
 		rb_generic_player_source_add_playlist (RB_GENERIC_PLAYER_SOURCE (source),
Index: rb-generic-player-playlist-source.c
===================================================================
--- rb-generic-player-playlist-source.c	(revision 5416)
+++ rb-generic-player-playlist-source.c	(working copy)
@@ -38,6 +38,7 @@
 typedef struct
 {
 	char *playlist_path;
+	char *device_root;
 	gint save_playlist_id;
 	RBGenericPlayerSource *player_source;
 	gboolean loading;
@@ -52,6 +53,7 @@
 enum {
 	PROP_0,
 	PROP_PLAYLIST_PATH,
+	PROP_DEVICE_ROOT,
 	PROP_PLAYER_SOURCE
 };
 
@@ -292,7 +294,7 @@
 	if (g_object_class_find_property (G_OBJECT_GET_CLASS (parser), "recurse"))
 		g_object_set (G_OBJECT (parser), "recurse", FALSE, NULL);
 
-	switch (totem_pl_parser_parse (parser, priv->playlist_path, FALSE)) {
+	switch (totem_pl_parser_parse_with_base (parser, priv->playlist_path, priv->device_root, FALSE)) {
 	case TOTEM_PL_PARSER_RESULT_SUCCESS:
 		rb_debug ("playlist parsed successfully");
 		result = TRUE;
@@ -342,6 +344,7 @@
 rb_generic_player_playlist_source_new (RBShell *shell,
 				       RBGenericPlayerSource *source,
 				       const char *playlist_file,
+				       const char *device_root,
 				       RhythmDBEntryType entry_type)
 {
 	return RB_SOURCE (g_object_new (RB_TYPE_GENERIC_PLAYER_PLAYLIST_SOURCE,
@@ -351,6 +354,7 @@
 					"source-group", RB_SOURCE_GROUP_DEVICES,
 					"player-source", source,
 					"playlist-path", playlist_file,
+					"device-root", device_root,
 					NULL));
 }
 
@@ -434,6 +438,9 @@
 	case PROP_PLAYLIST_PATH:
 		g_value_set_string (value, priv->playlist_path);
 		break;
+	case PROP_DEVICE_ROOT:
+		g_value_set_string (value, priv->device_root);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -452,6 +459,9 @@
 	case PROP_PLAYLIST_PATH:
 		priv->playlist_path = g_value_dup_string (value);
 		break;
+	case PROP_DEVICE_ROOT:
+		priv->device_root = g_value_dup_string (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -498,6 +508,14 @@
 							      NULL,
 							      G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
+	g_object_class_install_property (object_class,
+					 PROP_DEVICE_ROOT,
+					 g_param_spec_string ("device-root",
+						 	      "device-root",
+							      "path to root of the device",
+							      NULL,
+							      G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
 	g_type_class_add_private (klass, sizeof (RBGenericPlayerPlaylistSourcePrivate));
 }
 
Index: rb-generic-player-source.c
===================================================================
--- rb-generic-player-source.c	(revision 5416)
+++ rb-generic-player-source.c	(working copy)
@@ -932,6 +932,7 @@
 {
 	RhythmDBEntryType entry_type;
 	RBGenericPlayerPlaylistSource *playlist;
+	RBGenericPlayerSourcePrivate *priv = GENERIC_PLAYER_SOURCE_GET_PRIVATE (source);
 	RBShell *shell;
 
 	g_object_get (G_OBJECT (source),
@@ -944,6 +945,7 @@
 			rb_generic_player_playlist_source_new (shell,
 							       source,
 							       playlist_path,
+							       priv->mount_path,
 							       entry_type));
 	g_boxed_free (RHYTHMDB_TYPE_ENTRY_TYPE, entry_type);
 
Index: rb-generic-player-playlist-source.h
===================================================================
--- rb-generic-player-playlist-source.h	(revision 5416)
+++ rb-generic-player-playlist-source.h	(working copy)
@@ -48,6 +48,7 @@
 RBSource *	rb_generic_player_playlist_source_new (RBShell *shell,
 						       RBGenericPlayerSource *source,
 						       const char *playlist_file,
+						       const char *device_root,
 						       RhythmDBEntryType entry_type);
 void		rb_generic_player_playlist_delete_from_player (RBGenericPlayerPlaylistSource *source);
 
