Bug 133174

Summary: Missing covers in Context Browser
Product: [Applications] amarok Reporter: Curtis Walker <sultanoswing>
Component: generalAssignee: Amarok Developers <amarok-bugs-dist>
Status: RESOLVED FIXED    
Severity: normal CC: abdi.malek, mschiff, slashdevdsp
Priority: NOR    
Version: 1.4.2   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Curtis Walker 2006-08-29 11:29:03 UTC
Version:           1.4.2 and 1.4SVN (using KDE KDE 3.5.2)
Installed from:    Ubuntu Packages
Compiler:          g++ 4.0.3-1ubuntu5 
OS:                Linux

All of my album covers are no longer displaying in the context tab or when dragging and dropping from the collection tab into the playlist.

I'm running Ubuntu 6.06LTS, and used the following source (/etc/apt/sources.list):

deb http://imbrandon.com/packages dapper amarok
deb-src http://imbrandon.com/packages dapper amarok

The problem is also present in 1.4SVN (as of 28/8/2006), compiled using '--enable-mysql' and '--with-helix' options.

Versions 1.3.9 and 1.4.1 installed from John Riddell's packages (deb http://kubuntu.org/packages/amarok-141 dapper main), do not have this problem.

I've tried deleting ~/.kde/share/apps/amarok and the ~/.kde/share/apps/config/amarokrc files and also rebuilding the database, to no avail. I'm using MySQL 5.0.22 as the database (new databases tried too), but the problem also exists when using MySQL 4 and SQLite.  Only default plugins are installed. 

I have manually reinstalled the covers by 'use custom cover' in Cover Manager - but I'd hate to do that for 1200 albums again!

My music collection is all 'read only' as root is the group and owner - could this be a factor??

Should be reproducible on a stock Ubuntu 6.06 install, with the music as 'read only' e.g. /Music (in root of filesystem), using the above versions of amarok.
Comment 1 hads 2006-08-29 11:44:36 UTC
Same problem here with read/write access to the album directories so I don't believe it is related to permissions.
Comment 2 Keith 2006-08-29 14:29:04 UTC
I am having the same issue, using Ubuntu 6.06LTS and building from 1.4.2 source with mysql support.

The difference is that I use folder.jpg files in each album folder. 1.3.x and 1.4.1 had no issues displaying these covers. 1.4.2 is not displaying them.
Comment 3 Curtis Walker 2006-08-29 14:53:38 UTC
I also use folder.jpg in each album folder. Although I didn't specifically try compiling without mysql support, the problem exists, as I said above when using or not using mysql as the collection db.
Comment 4 Mark Kretschmann 2006-08-30 10:47:04 UTC
*** Bug 133055 has been marked as a duplicate of this bug. ***
Comment 5 Mark Kretschmann 2006-08-30 22:35:46 UTC
Hmm it's strange: I could reproduce the problem, but some other developers could not. We'll have to dig a bit deeper. I'll keep you informed..
Comment 6 Keith 2006-08-30 22:37:36 UTC
Thanks Mark. Let me know if I can do anything for you. I'm no programmer, but I can do some tests if you need a guinea pig.
Comment 7 Adam James 2006-09-02 13:13:43 UTC
I'm seeing this issue too. Does this post shed any light on the problem?: http://amarok.kde.org/forum/index.php/topic,12697.msg14073.html#msg14073
Comment 8 Maximilian Kossick 2006-09-02 15:33:19 UTC
SVN commit 580049 by mkossick:

folder album images were not displayed when Amarok was not able to identify the device they 
are stored on. Thanks to iain_benson for tracking down this bug.
BUG: 133174

 M  +1 -0      ChangeLog  
 M  +6 -22     src/collectiondb.cpp  
 M  +7 -6      src/mountpointmanager.h  


--- trunk/extragear/multimedia/amarok/ChangeLog #580048:580049
@@ -40,6 +40,7 @@
     * Sort numeric columns in flat collection view numerically. (BR 130667)
     * Dynamic Collection broke flat collection view when the Filename column
       was added (BR 132874)
+    * Cover images were not displayed in some cases (BR 133174)
 
 
 VERSION 1.4.2:
--- trunk/extragear/multimedia/amarok/src/collectiondb.cpp #580048:580049
@@ -446,12 +446,7 @@
     foreach( result )
     {
         int id = (*it).toInt();
-        if ( MountPointManager::instance()->isMounted( id ) )
-        {
-            //KURL relativePath = KURL::fromPathOrURL( *(++it) );
-            values.append( ( MountPointManager::instance()->getAbsolutePath( id, *(++it) ) ) );
-        }
-        else ++it;
+        values.append( ( MountPointManager::instance()->getAbsolutePath( id, *(++it) ) ) );
     }
     return values;
 }
@@ -467,10 +462,7 @@
         const QString &rel = *it;
         it++;
         int id = (*it).toInt();
-        if ( MountPointManager::instance()->isMounted( id ) )
-        {
-            urls += KURL::fromPathOrURL( MountPointManager::instance()->getAbsolutePath( id, rel ) );
-        }
+        urls += KURL::fromPathOrURL( MountPointManager::instance()->getAbsolutePath( id, rel ) );
         for( int i = 0;
                 i < QueryBuilder::dragFieldCount-1 && it != values.end();
                 i++ )
@@ -1510,7 +1502,8 @@
                   .arg( discNumber ) );
     else
         rs = query( QString( "SELECT tags.deviceid, tags.url FROM tags, year WHERE tags.album = %1 AND "
-                           "tags.artist = %2 AND year.id = tags.year AND tags.discnumber = %3 ORDER BY tags.track;" )
+                           "tags.artist = %2 AND year.id = tags.year AND tags.discnumber = %3 "
+                           + deviceidSelection() + " ORDER BY tags.track;" )
                   .arg( album_id )
                   .arg( artist_id )
                   .arg( discNumber ) );
@@ -1518,11 +1511,7 @@
     foreach( rs )
     {
         int id = (*it).toInt();
-        if ( MountPointManager::instance()->isMounted( id ) )
-        {
-            result.append( ( MountPointManager::instance()->getAbsolutePath( id, *(++it) ) ) );
-        }
-        else ++it;
+        result.append( ( MountPointManager::instance()->getAbsolutePath( id, *(++it) ) ) );
         //PostGreSql requires a third column
         if ( getDbConnectionType() == DbConnection::postgresql ) ++it;
     }
@@ -1540,12 +1529,7 @@
     foreach( rs )
     {
         int id = (*it).toInt();
-        if ( MountPointManager::instance()->isMounted( id ) )
-        {
-            //KURL relativePath = KURL::fromPathOrURL( *(++it) );
-            result.append( ( MountPointManager::instance()->getAbsolutePath( id, *(++it) ) ) );
-        }
-        else ++it;
+        result.append( ( MountPointManager::instance()->getAbsolutePath( id, *(++it) ) ) );
     }
     return result;
 }
--- trunk/extragear/multimedia/amarok/src/mountpointmanager.h #580048:580049
@@ -163,12 +163,6 @@
     int getIdForUrl( KURL url );
     int getIdForUrl( QString url );
     /**
-     * checks whether a medium identified by its unique database id is currently mounted.
-     * @param deviceId the mediums unique id
-     * @return true if the medium is mounted, false otherwise
-     */
-    bool isMounted ( const int deviceId ) const;
-    /**
      *
      * @param id
      * @return
@@ -220,6 +214,13 @@
 
     ~MountPointManager();
 
+    /**
+     * checks whether a medium identified by its unique database id is currently mounted.
+     * Note: does not handle deviceId = -1! It only checks real devices
+     * @param deviceId the mediums unique id
+     * @return true if the medium is mounted, false otherwise
+     */
+    bool isMounted ( const int deviceId ) const;
     void init();
     void handleMissingMediaManager();
     /**
Comment 9 Alexandre Oliveira 2006-09-03 02:26:58 UTC
*** Bug 133465 has been marked as a duplicate of this bug. ***
Comment 10 Curtis Walker 2006-09-03 11:33:47 UTC
Bug is indeed fixed now on my machine, using the SVN (build as of Sept. 3rd). Many thanks!