diff -u -r1.49 rb-playlist-manager.c
--- shell/rb-playlist-manager.c	15 Aug 2005 13:18:02 -0000	1.49
+++ shell/rb-playlist-manager.c	16 Aug 2005 18:32:09 -0000
@@ -508,6 +508,24 @@
 			     NULL);
 }
 
+static void
+playlist_load_start_cb (TotemPlParser *parser, const char *title, RBPlaylistManager *mgr)
+{
+	rb_debug ("loading new playlist %s", title);
+
+	if (!mgr->priv->loading_playlist) {
+		mgr->priv->loading_playlist =
+			RB_PLAYLIST_SOURCE (rb_playlist_manager_new_playlist (mgr, title, FALSE));
+	}
+}
+
+static void
+playlist_load_end_cb (TotemPlParser *parser, const char *title, RBPlaylistManager *mgr)
+{
+	rb_debug ("finished loading playlist %s", title);
+	mgr->priv->loading_playlist = NULL;
+}
+
 const char *
 rb_playlist_manager_parse_file (RBPlaylistManager *mgr, const char *uri)
 {
@@ -525,6 +543,14 @@
 					 G_CALLBACK (handle_playlist_entry_into_playlist_cb),
 					 mgr, 0);
 
+		g_signal_connect_object (G_OBJECT (parser), "playlist-start",
+					 G_CALLBACK (playlist_load_start_cb),
+					 mgr, 0);
+
+		g_signal_connect_object (G_OBJECT (parser), "playlist-end",
+					 G_CALLBACK (playlist_load_end_cb),
+					 mgr, 0);
+
 		if (totem_pl_parser_parse (parser, uri, FALSE) != TOTEM_PL_PARSER_RESULT_SUCCESS)
 			rb_error_dialog (NULL, _("Couldn't read playlist"),
 					 _("The playlist file may be in an unknown format or corrupted."));
@@ -913,11 +939,8 @@
 	}
 
 	rhythmdb_add_uri (mgr->priv->db, uri);
-
-	/* REWRITEFIXME */
-#if 0
 	rb_playlist_source_add_location (playlist, uri);
-#endif
+
 out:
 	gnome_vfs_uri_unref (vfsuri);
 }
diff -u -r1.63 rb-playlist-source.c
--- sources/rb-playlist-source.c	14 Aug 2005 02:49:06 -0000	1.63
+++ sources/rb-playlist-source.c	16 Aug 2005 18:32:13 -0000
@@ -773,13 +773,17 @@
 {
 	TotemPlParser *playlist;
 	GError *error = NULL;
-	rb_debug ("saving playlist");
+	char *name;
+
 
+	rb_debug ("saving playlist");
 	playlist = totem_pl_parser_new ();
 
-	totem_pl_parser_write (playlist, GTK_TREE_MODEL (source->priv->model),
-			       playlist_iter_func, uri, TOTEM_PL_PARSER_PLS,
-			       NULL, &error);
+	g_object_get (G_OBJECT (source), "name", &name, NULL);
+
+	totem_pl_parser_write_with_title (playlist, GTK_TREE_MODEL (source->priv->model),
+					  playlist_iter_func, uri, name,
+					  TOTEM_PL_PARSER_PLS, NULL, &error);
 	if (error != NULL)
 		rb_error_dialog (NULL, _("Couldn't save playlist"),
 				 "%s", error->message);
