diff --git a/src/playlist.c b/src/playlist.c
index e2530435e37bd432c1921cda53caebcc672d0ad0..19a1b419cc08f8ac8f08cce603d647c73bae9606 100644 (file)
--- a/src/playlist.c
+++ b/src/playlist.c
/*
- * $Id$
- *
* (c) 2004 by Kalle Wallin <kaw@linux.se>
* (c) 2008 Max Kellermann <max@duempel.org>
*
#include "playlist.h"
#include "mpdclient.h"
-#include "ncmpc.h"
#include <string.h>
#define MPD_ERROR(c) (c==NULL || c->connection==NULL || c->connection->error)
-gint
-mpdclient_playlist_free(mpdclient_playlist_t *playlist)
+void
+playlist_init(struct mpdclient_playlist *playlist)
+{
+ playlist->id = 0;
+ playlist->list = g_ptr_array_sized_new(1024);
+}
+
+void
+playlist_clear(struct mpdclient_playlist *playlist)
{
guint i;
+ playlist->id = 0;
+
for (i = 0; i < playlist->list->len; ++i) {
- struct mpd_song *song = g_array_index(playlist->list, struct mpd_song *, i);
+ struct mpd_song *song = playlist_get(playlist, i);
+
mpd_freeSong(song);
}
- g_array_free(playlist->list, TRUE);
+ g_ptr_array_set_size(playlist->list, 0);
+}
+
+gint
+mpdclient_playlist_free(mpdclient_playlist_t *playlist)
+{
+ if (playlist->list != NULL) {
+ playlist_clear(playlist);
+ g_ptr_array_free(playlist->list, TRUE);
+ }
+
memset(playlist, 0, sizeof(mpdclient_playlist_t));
return 0;
}
if (idx < 0 || (guint)idx >= c->playlist.list->len)
return NULL;
- return g_array_index(c->playlist.list, struct mpd_song *, idx);
+ return playlist_get(&c->playlist, idx);
}
struct mpd_song *
guint i;
for (i = 0; i < c->playlist.list->len; ++i) {
- struct mpd_song *song = g_array_index(c->playlist.list,
- struct mpd_song *, i);
+ struct mpd_song *song = playlist_get(&c->playlist, i);
if (song->id == id)
return song;
}
guint i;
for (i = 0; i < c->playlist.list->len; ++i) {
- if (g_array_index(c->playlist.list, struct mpd_song *, i)
- == song)
+ if (playlist_get(&c->playlist, i) == song)
return (gint)i;
}
guint i;
for (i = 0; i < c->playlist.list->len; ++i) {
- struct mpd_song *song = g_array_index(c->playlist.list,
- struct mpd_song *, i);
+ struct mpd_song *song = playlist_get(&c->playlist, i);
if (song->id == id)
return (gint)i;
}
guint i;
for (i = 0; i < c->playlist.list->len; ++i) {
- struct mpd_song *song = g_array_index(c->playlist.list,
- struct mpd_song *, i);
+ struct mpd_song *song = playlist_get(&c->playlist, i);
if(strcmp(song->file, filename) == 0)
return (gint)i;
}