Hi,

I'm sorry but for some reason, my nmudiff didn't reach the BTS in the
first place. Please find it attached.

Cheers,

-- 
Cyril Brulebois
diff -u gxmms2-0.6.4/gxmms2src/gxmms2.c gxmms2-0.6.4/gxmms2src/gxmms2.c
--- gxmms2-0.6.4/gxmms2src/gxmms2.c
+++ gxmms2-0.6.4/gxmms2src/gxmms2.c
@@ -113,7 +113,7 @@
 	guint32 volume;
 	gchar   buf[64];
 	
-	xmmsc_result_get_dict_entry_uint32(res, "left", &volume);
+	xmmsc_result_get_dict_entry_uint(res, "left", &volume);
 	wejpvolume_set_volume(WEJPVOLUME(wv), volume);
 	snprintf(buf, 63, "Volume: %d %%", volume);
 	wejpscroller_shortmessage_show(WEJPSCROLLER(scroller), buf, 50);
@@ -123,7 +123,7 @@
 {
 	guint32 volume;
 	
-	xmmsc_result_get_dict_entry_uint32(res, "left", &volume);
+	xmmsc_result_get_dict_entry_uint(res, "left", &volume);
 	wejpvolume_set_volume(WEJPVOLUME(wv), volume);
 	change_volume(0, volume);
 	xmmsc_result_unref(res);
@@ -659,7 +659,7 @@
 				m = 0;
 				/* decode %XX escape sequences to their corresponding chars: */
 				uri_conv = decode_string(buffer);
-				res = xmmsc_playlist_add(connection, uri_conv);
+				res = xmmsc_playlist_add_url(connection, NULL, uri_conv);
 				xmmsc_result_unref(res);
 				g_free(uri_conv);
 			} else if (((guchar *)data->data)[n] > 31) {
diff -u gxmms2-0.6.4/debian/rules gxmms2-0.6.4/debian/rules
--- gxmms2-0.6.4/debian/rules
+++ gxmms2-0.6.4/debian/rules
@@ -17,7 +17,7 @@
 	dh_testdir
 	dh_testroot
 	rm -f build-stamp
-	-$(MAKE) clean
+	[ ! -f Makefile ] || $(MAKE) clean
 	dh_clean 
 
 install:
diff -u gxmms2-0.6.4/debian/changelog gxmms2-0.6.4/debian/changelog
--- gxmms2-0.6.4/debian/changelog
+++ gxmms2-0.6.4/debian/changelog
@@ -1,3 +1,14 @@
+gxmms2 (0.6.4-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Added a patch by Olivier Tétard to fix the FTBFS due to an xmms2 API
+    change (Closes: #427199).
+  * That also makes the package installable again, since the dependencies get
+    updated (Closes: #441164).
+  * No longer ignore “make clean” errors, per lintian.
+
+ -- Cyril Brulebois <[EMAIL PROTECTED]>  Fri, 28 Sep 2007 18:07:30 +0200
+
 gxmms2 (0.6.4-1) unstable; urgency=low
 
   * New upstream release.
only in patch2:
unchanged:
--- gxmms2-0.6.4.orig/gmedialib/gmlbrowser.c
+++ gxmms2-0.6.4/gmedialib/gmlbrowser.c
@@ -160,9 +160,9 @@
 	gtk_tree_view_set_model(GTK_TREE_VIEW(gml->browser.list), NULL);
 
 	for (; xmmsc_result_list_valid(res); xmmsc_result_list_next(res)) {
-		xmmsc_result_get_dict_entry_str(res, "artist", &artist);
-		xmmsc_result_get_dict_entry_str(res, "album",  &album);
-		xmmsc_result_get_dict_entry_int32(res, "id", &id);
+		xmmsc_result_get_dict_entry_string(res, "artist", &artist);
+		xmmsc_result_get_dict_entry_string(res, "album",  &album);
+		xmmsc_result_get_dict_entry_int(res, "id", &id);
 		if (!artist)
 			artist = "Unknown";
 		if (g_ascii_strcasecmp(artist, artist_tmp) != 0) {
only in patch2:
unchanged:
--- gxmms2-0.6.4.orig/gmedialib/gmlsearch.c
+++ gxmms2-0.6.4/gmedialib/gmlsearch.c
@@ -28,6 +28,7 @@
 	gchar              *category;
 	gchar              *search_str;
 	gboolean            start;
+	xmmsc_coll_t       *coll_query;
 };
 
 void gml_search_do_search(GMedialib *gml, guint search_for, gchar* search_str)
@@ -56,7 +57,7 @@
 	if (gtk_tree_model_get_iter(model, &iter, path)) {
 		gtk_tree_model_get(model, &iter, 0, &id, -1);
 
-		res = xmmsc_playlist_add_id(connection, id);
+		res = xmmsc_playlist_add_id(connection, NULL, id);
 		xmmsc_result_unref(res);
 	}
 }
@@ -71,7 +72,7 @@
 
 	gtk_tree_model_get(model, selected_row, 0, &id, -1);
 
-	res = xmmsc_playlist_add_id(connection, id);
+	res = xmmsc_playlist_add_id(connection, NULL, id);
 	xmmsc_result_unref(res);
 }
 
@@ -97,7 +98,7 @@
 
 	gtk_tree_model_get(model, selected_row, 0, &id, -1);
 
-	res = xmmsc_playlist_insert_id(connection, pos + 1, id);
+	res = xmmsc_playlist_insert_id(connection, NULL, pos + 1, id);
 	xmmsc_result_unref(res);
 }
 
@@ -421,23 +422,23 @@
 	static gint           tmp_id = -1;
 	GtkTreeIter           iter;
 
-	xmmsc_result_get_dict_entry_int32(res, "id",      &id);
-	xmmsc_result_get_dict_entry_int32(res, "tracknr", &tracknr);
-	xmmsc_result_get_dict_entry_str(  res, "title",   &title);
-	xmmsc_result_get_dict_entry_int32(res, "rating",  &rating);
+	xmmsc_result_get_dict_entry_int(res,    "id",      &id);
+	xmmsc_result_get_dict_entry_int(res,    "tracknr", &tracknr);
+	xmmsc_result_get_dict_entry_string(res, "title",   &title);
+	xmmsc_result_get_dict_entry_int(res,    "rating",  &rating);
 	rating--;
 	if (title) {
-		xmmsc_result_get_dict_entry_str(res, "artist", &artist);
+		xmmsc_result_get_dict_entry_string(res, "artist", &artist);
 		if (!artist)
 			artist = "[Unknown Artist]";
 
-		xmmsc_result_get_dict_entry_str(res, "album", &album);
+		xmmsc_result_get_dict_entry_string(res, "album", &album);
 		if (!album)
 			album = "[Unknown Album]";
 	} else {
 		gchar       *url, *url_utf8;
 		const gchar *url_tmp;
-		xmmsc_result_get_dict_entry_str(res, "url", &url);
+		xmmsc_result_get_dict_entry_string(res, "url", &url);
 		if (url) {
 			url_tmp = xmmsc_result_decode_url(res, url);
 			url_utf8 = get_valid_utf8_str_alloc(url_tmp);
@@ -508,16 +509,17 @@
 	}
 
 	for (; xmmsc_result_list_valid(res); xmmsc_result_list_next(res)) {
-		gint32 *id = g_malloc(sizeof(gint32));
+		guint32 *id = g_malloc(sizeof(guint32));
 
-		xmmsc_result_get_dict_entry_int32(res, "id", id);
-		if (!id)
-			printf("broken resultset\n");
+		if (!xmmsc_result_get_uint(res, id)) {
+			printf("gxmms2: Broken resultset.\n");
+		}
 
 		n = g_list_prepend(n, id);
 	}
 
 	add_results(n, arg);
+	xmmsc_coll_unref(arg->coll_query);
 	xmmsc_result_unref(res);
 
 	gml_set_statusbar_text(arg->gml, "Ready.");
@@ -605,44 +607,29 @@
 void gmedialib_search(GMedialib *gml,  xmmsc_connection_t *conn, 
                       gchar *category, gchar *search_str, gboolean exact)
 {
-	gchar                        query[1024];
-	gchar                       *search_str_masked;
 	xmmsc_result_t              *res;
 	static struct search_params  p;
+	xmmsc_coll_t                 *coll_query;
+	gchar                         pattern[1024];
 
-	search_str_masked = mask_sql_quotes(search_str);
-
-	if (category != NULL && exact == FALSE)
-		g_snprintf(query, sizeof(query), 
-	               "SELECT id FROM Media WHERE LOWER(key) = LOWER('%s') " \
-	               "and LOWER(value) LIKE LOWER('%%%s%%') ORDER BY 1 DESC",
-	               category, search_str_masked);
-	else if (category != NULL && exact == TRUE)
-		g_snprintf(query, sizeof(query), 
-	               "SELECT id FROM Media WHERE LOWER(key) = LOWER('%s') " \
-	               "and LOWER(value) LIKE LOWER('%s') ORDER BY 1 DESC",
-	               category, search_str_masked);
-	else if (category == NULL && exact == FALSE)
-		g_snprintf(query, sizeof(query), 
-	               "SELECT id FROM Media WHERE LOWER(value) LIKE " \
-	               "LOWER('%%%s%%') ORDER BY 1 DESC",
-	               search_str_masked);
-	else if (category == NULL && exact == TRUE)
-		g_snprintf(query, sizeof(query), 
-	               "SELECT id FROM Media WHERE LOWER(value) LIKE " \
-	               "LOWER('%s') ORDER BY 1 DESC",
-	               search_str_masked);
+	if (category == NULL) category = "";
 
-	g_free(search_str_masked);
+	gml_set_statusbar_text(gml, "Searching...");
+	if (!exact)
+		snprintf(pattern, 1023, "%s:\"*%s*\"", category, search_str);
+	else
+		snprintf(pattern, 1023, "%s:\"%s\"", category, search_str);
+
+	if (!xmmsc_coll_parse(pattern, &coll_query))
+		printf("gxmms2: Unable to generate query: %s\n", pattern);
+	res = xmmsc_coll_query_ids(conn, coll_query, NULL, 0, 0);
 
 	p.gml = gml;
 	p.conn = connection;
 	p.category = category;
 	p.search_str = search_str;
+	p.coll_query = coll_query;
 
-	gml_set_statusbar_text(gml, "Searching...");
-
-	res = xmmsc_medialib_select(conn, query);
 	xmmsc_result_notifier_set(res, n_continue_search, &p);
 	xmmsc_result_unref(res);
 }
only in patch2:
unchanged:
--- gxmms2-0.6.4.orig/gmedialib/gmlplaylists.c
+++ gxmms2-0.6.4/gmedialib/gmlplaylists.c
@@ -29,13 +29,17 @@
 static void n_query_playlists(xmmsc_result_t *res, void *pt)
 {
 	struct pl_params *p = (struct pl_params *)pt;
+	xmmsc_coll_t 	*coll;
 	GtkTreeIter      iter;
 
 	if (xmmsc_result_iserror(res)) {
 		gml_set_statusbar_text(p->gml, (gchar *)xmmsc_result_get_error(res));
 	} else {
 		gint cnt = 0;
-		xmmsc_result_get_dict_entry_int32(res, "cnt", &cnt);
+
+		xmmsc_result_get_collection(res, &coll);
+		cnt = xmmsc_coll_idlist_get_size(coll);
+
 		/* Hide all lists that start with _ */
 		if (p->gml->playlists.ls != NULL && p->name[0] != '_') {
 			gtk_list_store_append(p->gml->playlists.ls, &iter);
@@ -61,22 +65,16 @@
 			gtk_list_store_clear(gml->playlists.ls);
 		for (; xmmsc_result_list_valid(res); xmmsc_result_list_next(res)) {
 			gchar          *name;
-			gint32         id = 0;
-			gchar          query[1024];
-			xmmsc_result_t *res2;
+			xmmsc_result_t 		*res2;
 
-			xmmsc_result_get_dict_entry_str(res,   "name", &name);
-			xmmsc_result_get_dict_entry_int32(res, "id",   &id);
+			xmmsc_result_get_string(res, &name);
 
 			p = g_malloc(sizeof(struct pl_params));
 			p->gml = gml;
 			g_strlcpy(p->name, name, sizeof(p->name));
 
-			g_snprintf(query, sizeof(query), 
-			           "SELECT entry, count(entry) AS cnt " \
-			           "FROM Playlistentries WHERE playlist_id = %d",
-			           id);
-			res2 = xmmsc_medialib_select(connection, query);
+			res2 = 	xmmsc_coll_get(connection, name, 
+					XMMS_COLLECTION_NS_PLAYLISTS);
 			xmmsc_result_notifier_set(res2, n_query_playlists, p);
 			xmmsc_result_unref(res2);
 		}
@@ -88,10 +86,8 @@
 void gml_playlists_update_playlists(GMedialib *gml)
 {
 	xmmsc_result_t *res;
-	gchar          *query = "SELECT name, id FROM Playlist ORDER BY name;";
-
 	gml_set_statusbar_text(gml, "Loading playlists...");
-	res = xmmsc_medialib_select(connection, query);
+	res = xmmsc_playlist_list(connection);
 	xmmsc_result_notifier_set(res, n_update_playlists, gml);
 	xmmsc_result_unref(res);
 }
@@ -101,6 +97,7 @@
 	GMedialib *gml = (GMedialib *)pt;
 
 	gml_set_statusbar_text(gml, "Ready.");
+	gml_pl_refresh_playlist(gml);
 	gtk_notebook_set_current_page(GTK_NOTEBOOK(gml->notebook), 4);
 	xmmsc_result_unref(res);
 }
@@ -122,10 +119,7 @@
 
 		gtk_tree_model_get(model, &iter, 0, &playlist, -1);
 
-		res = xmmsc_playlist_clear(connection);
-		xmmsc_result_unref(res);
-
-		res = xmmsc_medialib_playlist_load(connection, playlist);
+		res = xmmsc_playlist_load(connection, playlist);
 		xmmsc_result_notifier_set(res, n_playlist_load, gml);
 		xmmsc_result_unref(res);
 		g_free(playlist);
@@ -156,12 +150,9 @@
 		gchar          *playlist;
 		xmmsc_result_t *res;
 
-		res = xmmsc_playlist_clear(connection);
-		xmmsc_result_unref(res);
-
 		gtk_tree_model_get(model, &selected_row, 0, &playlist, -1);
 
-		res = xmmsc_medialib_playlist_remove(connection, playlist);
+		res = xmmsc_playlist_remove(connection, playlist);
 		xmmsc_result_notifier_set(res, n_playlist_delete, gml);
 		xmmsc_result_unref(res);
 		g_free(playlist);
@@ -183,24 +174,35 @@
 		gchar          *playlist;
 		xmmsc_result_t *res;
 
-		res = xmmsc_playlist_clear(connection);
-		xmmsc_result_unref(res);
-
 		gtk_tree_model_get(model, &selected_row, 0, &playlist, -1);
 
-		res = xmmsc_medialib_playlist_load(connection, playlist);
+		res = xmmsc_playlist_load(connection, playlist);
 		xmmsc_result_notifier_set(res, n_playlist_load, gml);
 		xmmsc_result_unref(res);
 		g_free(playlist);
 	}
 }
 
+static void n_playlist_add_collection(xmmsc_result_t *res, void *pt)
+{
+	GMedialib      *gml = (GMedialib *)pt;
+	xmmsc_coll_t   *playlist_coll;
+	xmmsc_result_t *res2;
+
+	xmmsc_result_get_collection(res, &playlist_coll);
+	res2 = xmmsc_playlist_add_collection(connection, "_active",
+	                                     playlist_coll, NULL);
+	xmmsc_result_notifier_set(res2, n_playlist_load, gml);
+	xmmsc_result_unref(res);
+
+}
+
 static void cb_playlists_button_add_pressed(GtkWidget *widget, gpointer pt)
 {
-	GMedialib			*gml = (GMedialib *)pt;
-	GtkTreeSelection	*sel;
-	GtkTreeModel		*model;
-	GtkTreeIter			selected_row;
+	GMedialib        *gml = (GMedialib *)pt;
+	GtkTreeSelection *sel;
+	GtkTreeModel     *model;
+	GtkTreeIter	      selected_row;
 
 	sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gml->playlists.list));
 
@@ -212,10 +214,9 @@
 
 		gtk_tree_model_get(model, &selected_row, 0, &playlist, -1);
 
-		res = xmmsc_medialib_playlist_load(connection, playlist);
-		xmmsc_result_notifier_set(res, n_playlist_load, gml);
+		res = xmmsc_coll_get(connection, playlist, "Playlists");
+		xmmsc_result_notifier_set(res, n_playlist_add_collection, gml);
 		xmmsc_result_unref(res);
-		gtk_notebook_set_current_page(GTK_NOTEBOOK(gml->notebook), 3);
 		g_free(playlist);
 	}
 }
only in patch2:
unchanged:
--- gxmms2-0.6.4.orig/gmedialib/gmlplaylist.c
+++ gxmms2-0.6.4/gmedialib/gmlplaylist.c
@@ -15,6 +15,7 @@
 #include <gtk/gtksignal.h>
 #include <gtk/gtkdialog.h>
 #include <gdk/gdkkeysyms.h>
+#include "xmmsclient/xmmsclient.h"
 #include "gmedialib.h"
 #include "gtrackinfo/trackinfo.h"
 #include "gtrackinfo/gtrackinfo.h"
@@ -44,14 +45,14 @@
 	gint          tracknr = -1, rating = -1;
 	static gchar  last_title[256] = "", last_artist[256] = "";
 
-	xmmsc_result_get_dict_entry_str  (res,   "artist",  &artist_tmp);
-	xmmsc_result_get_dict_entry_str  (res,   "title",   &title_tmp);
-	xmmsc_result_get_dict_entry_str  (res,   "album",   &album);
-	xmmsc_result_get_dict_entry_int32(res,   "id",      &id);
-	xmmsc_result_get_dict_entry_str  (res,   "url",     &url);
-	xmmsc_result_get_dict_entry_int32(res,   "tracknr", &tracknr);
-	xmmsc_result_get_dict_entry_int32(res,   "rating",  &rating);
-	if (xmmsc_result_get_dict_entry_str(res, "channel", &channel)) {
+	xmmsc_result_get_dict_entry_string(res, "artist",  &artist_tmp);
+	xmmsc_result_get_dict_entry_string(res, "title",   &title_tmp);
+	xmmsc_result_get_dict_entry_string(res, "album",   &album);
+	xmmsc_result_get_dict_entry_int(res,    "id",      &id);
+	xmmsc_result_get_dict_entry_string(res, "url",     &url);
+	xmmsc_result_get_dict_entry_int(res,    "tracknr", &tracknr);
+	xmmsc_result_get_dict_entry_int(res,    "rating",  &rating);
+	if (xmmsc_result_get_dict_entry_string(res, "channel", &channel)) {
 		prefix = "[Stream] ";
 		album = channel;
 	} else if (album == NULL)
@@ -132,7 +133,7 @@
 
 	pos = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gml->playlist.ls), NULL);
 
-	xmmsc_result_get_dict_entry_int32(res2, "id", &id);
+	xmmsc_result_get_dict_entry_int(res2, "id", &id);
 
 	if (gml->playlist.ls != NULL) {
 		gtk_list_store_append(gml->playlist.ls, &iter);
@@ -186,7 +187,8 @@
 			gtk_list_store_clear(gml->playlist.ls);
 		}
 
-		res = xmmsc_playlist_list(connection);
+		res = xmmsc_playlist_list_entries(connection, "_active");
+
 		xmmsc_result_notifier_set(res, n_pl_playlist_list, gml);
 		xmmsc_result_unref(res);
 	}
@@ -209,7 +211,7 @@
 {
 	xmmsc_result_t *res2;
 
-	res2 = xmmsc_playlist_current_pos(connection);
+	res2 = xmmsc_playlist_current_pos(connection, NULL);
 	xmmsc_result_notifier_set(res2, n_pl_update_current_pos, userdata);
 	xmmsc_result_unref(res2);
 }
@@ -235,10 +237,10 @@
 		gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gml->playlist.ls),
 		                               NULL);
 
-	xmmsc_result_get_dict_entry_int32(res, "type", &signal);
+	xmmsc_result_get_dict_entry_int(res, "type", &signal);
 	switch (signal) {
 		case XMMS_PLAYLIST_CHANGED_ADD:
-			xmmsc_result_get_dict_entry_uint32(res, "id", &id);
+			xmmsc_result_get_dict_entry_uint(res, "id", &id);
 
 			/* add item to gtk list */
 			if (gml->playlist.ls != NULL) {
@@ -249,8 +251,8 @@
 			}
 			break;
 		case XMMS_PLAYLIST_CHANGED_INSERT:
-			xmmsc_result_get_dict_entry_uint32(res, "id", &id);
-			xmmsc_result_get_dict_entry_int32(res, "position", &pos_ins);
+			xmmsc_result_get_dict_entry_uint(res, "id", &id);
+			xmmsc_result_get_dict_entry_int(res, "position", &pos_ins);
 			gtk_list_store_insert(gml->playlist.ls, &iter, pos_ins);
 			gtk_list_store_set(gml->playlist.ls, &iter, 
 			   	             0, pos_ins, 1, id, -1);
@@ -269,7 +271,7 @@
 			gml_pl_refresh_playlist(gml);
 			break;
 		case XMMS_PLAYLIST_CHANGED_REMOVE:
-			xmmsc_result_get_dict_entry_int32(res, "position", &pos_del);
+			xmmsc_result_get_dict_entry_int(res, "position", &pos_del);
 			model = GTK_TREE_MODEL(gml->playlist.ls);
 
 			if (gtk_tree_model_get_iter_first(model, &iter)) {
@@ -333,7 +335,7 @@
 {
 	xmmsc_result_t *res;
 
-	res = xmmsc_playlist_current_pos(connection);
+	res = xmmsc_playlist_current_pos(connection, NULL);
 	xmmsc_result_notifier_set(res, n_pl_update_current_pos, gml);
 	xmmsc_result_unref(res);
 }
@@ -554,7 +556,7 @@
 		g_list_foreach(list, (GFunc)gtk_tree_path_free, NULL);
 		g_list_free(list);
 
-		res = xmmsc_playlist_move(connection, pos, pos + direction);
+		res = xmmsc_playlist_move_entry(connection, NULL, pos, pos + direction);
 		xmmsc_result_notifier_set(res, n_playlist_move, p);
 		xmmsc_result_unref(res);
 	}
@@ -584,7 +586,7 @@
 	xmmsc_result_t *res;
 
 	if (gml->playlist.refresh_counter == 0) {
-		res = xmmsc_playlist_shuffle(connection);
+		res = xmmsc_playlist_shuffle(connection, NULL);
 		xmmsc_result_notifier_set(res, n_shuffle_or_sort_ready, userdata);
 		xmmsc_result_unref(res);
 	}
@@ -594,7 +596,7 @@
 {
 	xmmsc_result_t *res;
 	
-	res = xmmsc_playlist_sort(connection, "artist");
+	res = xmmsc_playlist_sort(connection, "artist", NULL);
 	xmmsc_result_notifier_set(res, n_shuffle_or_sort_ready, userdata);
 	xmmsc_result_unref(res);
 }
@@ -612,7 +614,7 @@
 
 	for (; xmmsc_result_list_valid(res); xmmsc_result_list_next(res)) {
 		gint32 id;
-		xmmsc_result_get_dict_entry_int32(res, "id", &id);
+		xmmsc_result_get_dict_entry_int(res, "id", &id);
 
 		/* get playlist length */
 		pl_length = 
@@ -620,7 +622,7 @@
 			                               NULL);
 
 		/* add id to playlist */
-		res2 = xmmsc_playlist_add_id(connection, id);
+		res2 = xmmsc_playlist_add_id(connection, NULL, id);
 		xmmsc_result_unref(res2);
 	}
 	xmmsc_result_unref(res);
@@ -742,7 +744,7 @@
 		xmmsc_result_t *res;
 		guint           pos = *(guint *)(element->data);
 
-		res = xmmsc_playlist_remove(connection, pos);
+		res = xmmsc_playlist_remove_entry(connection, NULL, pos);
 		xmmsc_result_notifier_set(res, n_playlist_remove, NULL);
 		xmmsc_result_unref(res);
 
@@ -868,7 +870,7 @@
 	
 	if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(p->gml->playlist.ls),
 	                                  &(p->iter))) {
-		res = xmmsc_playlist_current_pos(connection);
+		res = xmmsc_playlist_current_pos(connection, NULL);
 		xmmsc_result_notifier_set(res, n_playlist_current_pos, p);
 		xmmsc_result_unref(res);
 	}
@@ -879,6 +881,7 @@
 static void n_playlist_clear(xmmsc_result_t *res, void *userdata)
 {
 	GMedialib *gml = (GMedialib *)userdata;
+	gml_pl_refresh_playlist(gml);
 	gml_set_statusbar_text(gml, "Ready.");
 }
 
@@ -907,7 +910,7 @@
 		gtk_widget_destroy(dialog);
 	}
 	if (result != GTK_RESPONSE_REJECT) {
-		res = xmmsc_playlist_clear(connection);
+		res = xmmsc_playlist_clear(connection, "_active");
 		xmmsc_result_notifier_set(res, n_playlist_clear, userdata);
 		xmmsc_result_unref(res);
 	}
@@ -925,6 +928,32 @@
 	xmmsc_result_unref(res);
 }
 
+struct params_save_pl
+{
+	GMedialib *gml;
+	gchar     *pl_name_str;
+};
+
+static void n_coll_get(xmmsc_result_t *res, void *userdata)
+{
+	GMedialib *gml = ((struct params_save_pl *)userdata)->gml;;
+	if (xmmsc_result_iserror(res)) {
+		gml_set_statusbar_text(gml, (gchar *)xmmsc_result_get_error(res));
+	} else {
+		xmmsc_coll_t   *playlist_coll;
+		xmmsc_result_t *res2;
+
+		xmmsc_result_get_collection(res, &playlist_coll);
+		res2 = xmmsc_coll_save(connection, playlist_coll,
+		                       /*gtk_entry_get_text(GTK_ENTRY(entry))*/ ((struct params_save_pl *)userdata)->pl_name_str,
+		                       XMMS_COLLECTION_NS_PLAYLISTS);
+		xmmsc_result_notifier_set(res2, n_playlist_save, gml);
+		xmmsc_coll_unref(playlist_coll);
+	}
+	g_free(((struct params_save_pl *)userdata)->pl_name_str);
+	xmmsc_result_unref(res);
+}
+
 static void cb_pl_save_pl_button_pressed(GtkWidget *widget, gpointer userdata)
 {
 	xmmsc_result_t *res;
@@ -940,6 +969,7 @@
 	                                                     NULL);
 	GtkWidget      *label = gtk_label_new("Save as:");
 	GtkWidget      *entry = gtk_entry_new();
+	static struct   params_save_pl p;
 
 	gtk_widget_set_size_request(GTK_WIDGET(dialog), 300, 100);
 	gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
@@ -949,11 +979,14 @@
 
 	result = gtk_dialog_run(GTK_DIALOG(dialog));
 	if (result == GTK_RESPONSE_ACCEPT) {
+		gint   len = strlen(gtk_entry_get_text(GTK_ENTRY(entry)));
+		gchar *pl_name_str = g_malloc(len);
+		strncpy(pl_name_str, gtk_entry_get_text(GTK_ENTRY(entry)), len);
 		/* save the playlist */
-		res = xmmsc_medialib_playlist_save_current(connection, 
-		                                           gtk_entry_get_text(
-		                                           GTK_ENTRY(entry)));
-		xmmsc_result_notifier_set(res, n_playlist_save, userdata);
+		res = xmmsc_coll_get(connection, "_active", "Playlists");
+		p.gml = (GMedialib *)userdata;
+		p.pl_name_str = pl_name_str;
+		xmmsc_result_notifier_set(res, n_coll_get, &p);
 		xmmsc_result_unref(res);
 	}
 	gtk_widget_destroy(dialog);
only in patch2:
unchanged:
--- gxmms2-0.6.4.orig/gtrackinfo/trackinfo.c
+++ gxmms2-0.6.4/gtrackinfo/trackinfo.c
@@ -33,43 +33,43 @@
 	track->no_samplerate = FALSE;
 	track->no_filesize   = FALSE;
 
-	if (!xmmsc_result_get_dict_entry_str(res, "artist", &artist)) {
+	if (!xmmsc_result_get_dict_entry_string(res, "artist", &artist)) {
 		artist = "Unknown";
 		track->no_artist = TRUE;
 	}
-	if (!xmmsc_result_get_dict_entry_str(res, "title",  &title)) {
+	if (!xmmsc_result_get_dict_entry_string(res, "title",  &title)) {
 		title = "Unknown";
 		track->no_title = TRUE;
 	}
-	if (!xmmsc_result_get_dict_entry_str(res, "album", &album)) {
+	if (!xmmsc_result_get_dict_entry_string(res, "album", &album)) {
 		album = "Unknown";
 		track->no_album = TRUE;
 	}
-	if (!xmmsc_result_get_dict_entry_str(res, "comment", &comment))
+	if (!xmmsc_result_get_dict_entry_string(res, "comment", &comment))
 		comment = "";
-	if (!xmmsc_result_get_dict_entry_int32(res, "duration", &playtime))
+	if (!xmmsc_result_get_dict_entry_int(res, "duration", &playtime))
 		track->no_playtime = TRUE;
-	if (!xmmsc_result_get_dict_entry_int32(res, "id", &id))
+	if (!xmmsc_result_get_dict_entry_int(res, "id", &id))
 		id = 0;
-	if (!xmmsc_result_get_dict_entry_str(res, "mime", &mime))
+	if (!xmmsc_result_get_dict_entry_string(res, "mime", &mime))
 		mime = "Unknown";
-	if (!xmmsc_result_get_dict_entry_str(res, "genre", &genre))
+	if (!xmmsc_result_get_dict_entry_string(res, "genre", &genre))
 		genre = "";
-	if (!xmmsc_result_get_dict_entry_int32(res, "bitrate", &bitrate))
+	if (!xmmsc_result_get_dict_entry_int(res, "bitrate", &bitrate))
 		track->no_bitrate = TRUE;
-	if (!xmmsc_result_get_dict_entry_int32(res, "samplerate", &samplerate))
+	if (!xmmsc_result_get_dict_entry_int(res, "samplerate", &samplerate))
 		track->no_samplerate = TRUE;
-	if (!xmmsc_result_get_dict_entry_int32(res, "size", &filesize))
+	if (!xmmsc_result_get_dict_entry_int(res, "size", &filesize))
 		track->no_filesize = TRUE;
-	if (!xmmsc_result_get_dict_entry_str(res, "url", &url))
+	if (!xmmsc_result_get_dict_entry_string(res, "url", &url))
 		url = "";
-	if (!xmmsc_result_get_dict_entry_str(res, "date", &date))
+	if (!xmmsc_result_get_dict_entry_string(res, "date", &date))
 		date = "";
-	if (!xmmsc_result_get_dict_entry_str(res, "channel", &channel))
+	if (!xmmsc_result_get_dict_entry_string(res, "channel", &channel))
 		channel = "";
 	else
 		track->stream = TRUE;
-	xmmsc_result_get_dict_entry_int32(res, "isvbr", &vbr);
+	xmmsc_result_get_dict_entry_int(res, "isvbr", &vbr);
 	if (vbr == 1) track->vbr = TRUE;
 
 	url_tmp = xmmsc_result_decode_url(res, url);

Attachment: pgpcNKUg6qkdG.pgp
Description: PGP signature

Reply via email to