diff options
Diffstat (limited to 'src/itdb_itunesdb.c')
-rw-r--r-- | src/itdb_itunesdb.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/itdb_itunesdb.c b/src/itdb_itunesdb.c index 195321e..a74cf9c 100644 --- a/src/itdb_itunesdb.c +++ b/src/itdb_itunesdb.c @@ -1,4 +1,4 @@ -/* Time-stamp: <2005-11-20 16:06:58 jcs> +/* Time-stamp: <2005-11-27 18:31:02 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -2667,6 +2667,25 @@ static void mk_mhlt (FExport *fexp, guint32 num) } +static void update_artwork_info (Itdb_Track *track) +{ + GList *gl; + + track->artwork_count = 0; + /* count the number of valid thumbnails */ + for (gl=track->artwork->thumbnails; gl; gl=gl->next) + { + Itdb_Thumb *thumb = gl->data; + g_return_if_fail (thumb); + if (thumb->size != 0) ++track->artwork_count; + } + if (track->artwork_count != 0) + track->artwork_size = track->artwork->artwork_size; + else + track->artwork_size = 0; +} + + /* Write out the mhit header. Size will be written later */ static void mk_mhit (WContents *cts, Itdb_Track *track) { @@ -2711,6 +2730,7 @@ static void mk_mhit (WContents *cts, Itdb_Track *track) else put8int (cts, 0); put8int (cts, track->app_rating); put16lint (cts, track->BPM); + update_artwork_info (track); put16lint (cts, track->artwork_count); put16lint (cts, track->unk126); put32lint (cts, track->artwork_size); @@ -3578,6 +3598,10 @@ gboolean itdb_write_file (Itdb_iTunesDB *itdb, const gchar *filename, if (!filename) filename = itdb->filename; +#if HAVE_GDKPIXBUF + ipod_write_artwork_db (itdb); +#endif + fexp = g_new0 (FExport, 1); fexp->itdb = itdb; fexp->itunesdb = wcontents_new (filename); @@ -3650,9 +3674,6 @@ gboolean itdb_write (Itdb_iTunesDB *itdb, GError **error) * Errors happening during that operation are considered non fatal since * they shouldn't corrupt the main database. */ -#if HAVE_GDKPIXBUF - ipod_write_artwork_db (itdb); -#endif itunes_path = itdb_resolve_path (itdb->mountpoint, db); |