summaryrefslogtreecommitdiffstats
path: root/src/itdb_track.c
diff options
context:
space:
mode:
authorJorg Schuler <jcsjcs@users.sourceforge.net>2005-09-22 18:16:50 +0000
committerJorg Schuler <jcsjcs@users.sourceforge.net>2005-09-22 18:16:50 +0000
commita0b713da025da8d0a44af6ad2e81f7f1830fecc8 (patch)
treedd5f9c7eb78249d02e1a80a8a7447c2bcc0fd4c9 /src/itdb_track.c
parent87374282cb3848b0c26af89cdffff86002928196 (diff)
downloadlibgpod-a0b713da025da8d0a44af6ad2e81f7f1830fecc8.tar.gz
libgpod-a0b713da025da8d0a44af6ad2e81f7f1830fecc8.tar.xz
libgpod-a0b713da025da8d0a44af6ad2e81f7f1830fecc8.zip
* applied Christophe Fergeau's patch which adds cover art writing
support to libgpod -> bump to version 104 git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1098 f01d2545-417e-4e96-918e-98f8d0dbbcb6
Diffstat (limited to 'src/itdb_track.c')
-rw-r--r--src/itdb_track.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/itdb_track.c b/src/itdb_track.c
index 41372c0..9aa1b30 100644
--- a/src/itdb_track.c
+++ b/src/itdb_track.c
@@ -29,6 +29,7 @@
#include "itdb_private.h"
#include <string.h>
+#include <glib/gstdio.h>
/* Generate a new Itdb_Track structure */
Itdb_Track *itdb_track_new (void)
@@ -144,6 +145,22 @@ void itdb_track_add (Itdb_iTunesDB *itdb, Itdb_Track *track, gint32 pos)
else itdb->tracks = g_list_insert (itdb->tracks, track, pos);
}
+void
+itdb_track_free_generated_thumbnails (Itdb_Track *track)
+{
+ GList *it;
+
+ for (it = track->thumbnails; it != NULL; it = it->next) {
+ Itdb_Image *image;
+
+ image = (Itdb_Image *)it->data;
+ g_free (image->filename);
+ g_free (image);
+ }
+ g_list_free (track->thumbnails);
+ track->thumbnails = NULL;
+}
+
/* Free the memory taken by @track */
void itdb_track_free (Itdb_Track *track)
{
@@ -158,6 +175,8 @@ void itdb_track_free (Itdb_Track *track)
g_free (track->filetype);
g_free (track->grouping);
g_free (track->ipod_path);
+ itdb_track_free_generated_thumbnails (track);
+ g_free (track->orig_image_filename);
if (track->userdata && track->userdata_destroy)
(*track->userdata_destroy) (track->userdata);
g_free (track);
@@ -292,3 +311,30 @@ Itdb_Track *itdb_track_id_tree_by_id (GTree *idtree, guint32 id)
return (Itdb_Track *)g_tree_lookup (idtree, &id);
}
+
+void
+itdb_track_remove_thumbnail (Itdb_Track *song)
+{
+ itdb_track_free_generated_thumbnails (song);
+ g_free (song->orig_image_filename);
+ song->orig_image_filename = NULL;
+ song->image_id = 0;
+}
+
+
+int
+itdb_track_set_thumbnail (Itdb_Track *song, const char *filename)
+{
+ struct stat statbuf;
+
+ g_return_val_if_fail (song != NULL, -1);
+
+ if (g_stat (filename, &statbuf) != 0) {
+ return -1;
+ }
+ itdb_track_remove_thumbnail (song);
+ song->artwork_size = statbuf.st_size;
+ song->orig_image_filename = g_strdup (filename);
+
+ return 0;
+}