The Amarok package is compiled against libgpod 3.2 which is contained
in package libgpod0 when it should be compiled against the updated
libgpod 4.2 which is contained in package libgpod1.  It is a known
problem (google for "amarok libgpod crash" lists many results).

A patch needs to be applied to Amarok to compile against the libgpod1
Debian package.  A quick patch is included.

Tested against a 5g 80GB Ipod.  The crash is gone.

Glenn Wurster.
diff -Naur amarok-1.4.4/amarok/src/mediadevice/ipod/ipodmediadevice.cpp amarok-1.4.4-mod/amarok/src/mediadevice/ipod/ipodmediadevice.cpp
--- amarok/src/mediadevice/ipod/ipodmediadevice.cpp	2006-10-26 16:40:20.000000000 -0400
+++ amarok/src/mediadevice/ipod/ipodmediadevice.cpp	2007-03-26 00:05:05.000000000 -0400
@@ -302,7 +302,7 @@
     track->genre = g_strdup( metaBundle.genre()->utf8() );
 
 
-    track->unk208 = 0x01; // for audio
+    track->mediatype = 0x01; // for audio
     if(type=="wav")
     {
         track->filetype = g_strdup( "wav" );
@@ -323,7 +323,7 @@
 #else
         track->flag3 |= 0x01; // remember current position in track
 #endif
-        track->unk208 = 0x08; // for audiobooks
+        track->mediatype = 0x08; // for audiobooks
     }
     else if(type=="m4v" || type=="mp4v" || type=="mov" || type=="mpg" || type=="mp4")
     {
@@ -331,7 +331,7 @@
 #ifdef HAVE_ITDB_SKIP_SHUFFLE_FLAG
         track->movie_flag = 0x01; // for videos
 #endif
-        track->unk208 = 0x02; // for videos
+        track->mediatype = 0x02; // for videos
     }
     else if(type=="aa")
     {
@@ -341,7 +341,7 @@
 #else
         track->flag3 |= 0x01; // remember current position in track
 #endif
-        track->unk208 = 0x08; // for audiobooks
+        track->mediatype = 0x08; // for audiobooks
 
         TagLib::Audible::File f( QFile::encodeName( propertiesBundle.url().path() ) );
         TagLib::Audible::Tag *t = f.getAudibleTag();
@@ -384,7 +384,7 @@
 #ifdef HAVE_ITDB_MARK_UNPLAYED
         track->mark_unplayed = podcastInfo->listened ? 0x01 : 0x02;
 #endif
-        track->unk208 = track->unk208==0x02 ? 0x06 : 0x04; // video or audio podcast
+        track->mediatype = track->mediatype==0x02 ? 0x06 : 0x04; // video or audio podcast
         track->flag4 = 0x01; // also show description on iPod
         QString plaindesc = podcastInfo->description;
         plaindesc.replace( QRegExp("<[^>]*>"), "" );

Reply via email to