[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/amarok/src/mediadevice
From:       Jeff Mitchell <kde-dev () emailgoeshere ! com>
Date:       2007-07-19 3:57:13
Message-ID: 1184817433.782020.29375.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 689763 by mitchell:

Port forward r686665, r686663, and r686662 by Erik Hovland.


 M  +22 -2     mtp/mtpmediadevice.cpp  
 M  +11 -1     njb/njbmediadevice.cpp  


--- trunk/extragear/multimedia/amarok/src/mediadevice/mtp/mtpmediadevice.cpp #689762:689763
@@ -891,6 +891,26 @@
     m_critical_mutex.lock();
     LIBMTP_playlist_t *metadata = LIBMTP_new_playlist_t();
     metadata->name = qstrdup( item->text( 0 ).toUtf8() );
+    const int trackCount = item->childCount();
+    if (trackCount > 0) {
+        uint32_t *tracks = ( uint32_t* )malloc( sizeof( uint32_t ) * trackCount );
+        uint32_t i = 0;
+        for( MtpMediaItem *it = dynamic_cast<MtpMediaItem *>(item->firstChild());
+                it;
+                it = dynamic_cast<MtpMediaItem *>(it->nextSibling()) )
+        {
+            tracks[i] = it->track()->id();
+            i++;
+        }
+        metadata->tracks = tracks;
+        metadata->no_tracks = i;
+    } else {
+        debug() << "no tracks available for playlist " << metadata->name
+            << endl;
+        metadata->no_tracks = 0;
+    }
+    QString genericError = i18n( "Could not save playlist." );
+
     uint32_t *tracks = ( uint32_t* )malloc( sizeof( uint32_t ) * item->childCount() );
     uint32_t i = 0;
     for( MtpMediaItem *it = dynamic_cast<MtpMediaItem *>(item->firstChild());
@@ -948,7 +968,7 @@
 {
 
     int result = 0;
-    if( isCanceled() )
+    if( isCanceled() || !item )
     {
         return -1;
     }
@@ -975,7 +995,7 @@
             if( item )
             {
                 MtpMediaItem *parent = dynamic_cast<MtpMediaItem *> ( item->parent() );
-                if( parent->type() == MediaItem::PLAYLIST ) {
+                if( parent && parent->type() == MediaItem::PLAYLIST ) {
                     delete( item );
                     playlistFromItem( parent );
                 }
--- trunk/extragear/multimedia/amarok/src/mediadevice/njb/njbmediadevice.cpp #689762:689763
@@ -265,7 +265,7 @@
 {
     DEBUG_BLOCK
     int result = 0;
-    if ( isCanceled() )
+    if ( isCanceled() || !item )
     {
         return -1;
     }
@@ -390,6 +390,10 @@
         if( (it->type() == MediaItem::TRACK) )
         {
             NjbMediaItem* auxItem = dynamic_cast<NjbMediaItem *>( (it) );
+            if( !auxItem ) {
+                debug() << "Dynamic cast to NJB Media Item failed." << endl;
+                return -1;
+            }
             QString track_id;
             track_id.setNum( auxItem->track()->id() );
             filepath = path + auxItem->bundle()->url().path();
@@ -807,6 +811,12 @@
 
     NjbMediaItem *it = dynamic_cast<NjbMediaItem *>( item );
 
+    if( !it )
+    {
+        debug() << "Dynamic cast to NJB media item failed" << endl;
+        return;
+    }
+
     switch( it->type() )
     {
         case MediaItem::ARTIST:
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic