diff options
author | wiz <wiz@pkgsrc.org> | 2010-03-16 19:28:50 +0000 |
---|---|---|
committer | wiz <wiz@pkgsrc.org> | 2010-03-16 19:28:50 +0000 |
commit | 36293c3898ccae40e1c6c91610aa1d9850fedd3d (patch) | |
tree | ff05c392460db458d1ec30b9e82e989a9b2ed500 /audio/amarok/patches | |
parent | 61a7416b5726b42a0e129d092de5b596a0e4f48e (diff) | |
download | pkgsrc-36293c3898ccae40e1c6c91610aa1d9850fedd3d.tar.gz |
Update to 2.3.0, switch to mysql51-server for providing the embedded
mysql server.
Changes:
Team Amarok is proud to announce Amarok 2.3.0. It contains many
improvements and bugfixes over Amarok 2.2.2 as well as many new
features. Areas such as podcast support and saved playlists have
seen huge improvements, as has the support for USB mass storage
devices (including generic MP3 players).
With large parts of Amarok 2 becoming quite mature, it was also
time to start looking forward again. Therefore, this release also
contains a number of new features of a slightly more experimental
nature. These include a new main toolbar and a rewritten and much
simpler file browser. These parts are brand new and based on user
feedback, and they will change and improve over the next few
releases. The old slim toolbar is still available should you prefer
that, but we encourage you to try out the new toolbar and tell us
what you think. The file browser's look and feel now aligns more
closely with the rest of Amarok with improvements such as breadcrumb
navigation, and it is now focused on being a way to find and play
music instead of being a multi-purpose file manager.
The context menu of tracks in your playlist now offers a "show in
media sources" option, making it easier to find the same track
again in the collection browser for editing, moving or deleting
the file.
Podcasts have received a configuration dialog allowing you to change
the update interval as well as the location to store new downloaded
episodes. Podcasts and saved playlists are now also grouped by
source, and a merged view is available just like in your local
collection - perfect for those that don't care where their music
is coming from but simply want to listen to it. Now, when a new
source of playlists or podcasts becomes available, Amarok will
switch off merged view and show a collapsible list of your new
listening sources.
The Wikipedia applet now looks better and links have been fixed.
Internal links to other pages on Wikipedia will display in the
applet, and external links open a browser window.
In short, Team Amarok has been focusing hard on furthering our
long-term goal: making Amarok the best tool for immersing yourself
in music, no matter where it comes from.
Diffstat (limited to 'audio/amarok/patches')
-rw-r--r-- | audio/amarok/patches/patch-aa | 369 | ||||
-rw-r--r-- | audio/amarok/patches/patch-ab | 10 | ||||
-rw-r--r-- | audio/amarok/patches/patch-ac | 14 |
3 files changed, 5 insertions, 388 deletions
diff --git a/audio/amarok/patches/patch-aa b/audio/amarok/patches/patch-aa deleted file mode 100644 index f82c07575cc..00000000000 --- a/audio/amarok/patches/patch-aa +++ /dev/null @@ -1,369 +0,0 @@ -$NetBSD: patch-aa,v 1.15 2010/02/16 09:01:46 wiz Exp $ - -post-2.2.2 patch from upstream - ---- src/collection/sqlcollection/ScanResultProcessor.cpp.orig 2010-01-06 22:19:46.000000000 +0000 -+++ src/collection/sqlcollection/ScanResultProcessor.cpp -@@ -42,19 +42,59 @@ ScanResultProcessor::ScanResultProcessor - ScanResultProcessor::~ScanResultProcessor() - { - //everything has a URL, so enough to just delete from here -+ QSet<QStringList*> currSet; //prevent double deletes - foreach( QStringList *list, m_urlsHashByUid ) -- delete list; -+ { -+ if( list ) -+ { -+ if( !currSet.contains( list ) ) -+ { -+ delete list; -+ currSet.insert( list ); -+ } -+ } -+ else -+ debug() << "GAAH! Tried to double-delete a value in m_urlsHashByUid"; -+ } - foreach( QLinkedList<QStringList*> *list, m_albumsHashByName ) - { -- foreach( QStringList *slist, *list ) -- delete slist; -- delete list; -+ if( list ) -+ { -+ foreach( QStringList *slist, *list ) -+ { -+ if( slist ) -+ { -+ if( !currSet.contains( slist ) ) -+ { -+ delete slist; -+ currSet.insert( slist ); -+ } -+ else -+ debug() << "GAAH! Tried to double-delete a value in m_albumsHashByName"; -+ } -+ } -+ delete list; -+ } - } - foreach( QLinkedList<QStringList*> *list, m_tracksHashByAlbum ) - { -- foreach( QStringList *slist, *list ) -- delete slist; -- delete list; -+ if( list ) -+ { -+ foreach( QStringList *slist, *list ) -+ { -+ if( slist ) -+ { -+ if( !currSet.contains( slist ) ) -+ { -+ delete slist; -+ currSet.insert( slist ); -+ } -+ else -+ debug() << "GAAH! Tried to double-delete a value in m_tracksHashByAlbum"; -+ } -+ } -+ delete list; -+ } - } - } - -@@ -67,11 +107,11 @@ ScanResultProcessor::setScanType( ScanTy - void - ScanResultProcessor::addDirectory( const QString &dir, uint mtime ) - { -- DEBUG_BLOCK -- debug() << "SRP::addDirectory on " << dir << " with mtime " << mtime; -+ //DEBUG_BLOCK -+ //debug() << "SRP::addDirectory on " << dir << " with mtime " << mtime; - if( dir.isEmpty() ) - { -- debug() << "got directory with no path from the scanner, not adding"; -+ //debug() << "got directory with no path from the scanner, not adding"; - return; - } - setupDatabase(); -@@ -254,7 +294,7 @@ ScanResultProcessor::rollback() - void - ScanResultProcessor::processDirectory( const QList<QVariantMap > &data ) - { --// DEBUG_BLOCK -+ //DEBUG_BLOCK - setupDatabase(); - //using the following heuristics: - //if more than one album is in the dir, use the artist of each track as albumartist -@@ -274,24 +314,54 @@ ScanResultProcessor::processDirectory( c - if( row.value( Field::ALBUM ).toString() != album ) - multipleAlbums = true; - } -+ - if( multipleAlbums || album.isEmpty() || artists.size() == 1 ) - { - foreach( const QVariantMap &row, data ) - { -- int artist = genericId( &m_artists, row.value( Field::ARTIST ).toString(), &m_nextArtistNum ); -- addTrack( row, artist ); -+ QString uid = row.value( Field::UNIQUEID ).toString(); -+ if( m_uidsSeenThisScan.contains( uid ) ) -+ { -+ QString originalLocation = ( ( m_urlsHashByUid.contains( uid ) && -+ m_urlsHashByUid[uid] != 0 ) ? -+ MountPointManager::instance()->getAbsolutePath( m_urlsHashByUid[uid]->at( 1 ).toInt(), m_urlsHashByUid[uid]->at( 2 ) ) : "(unknown)" ); -+ debug() << "Skipping file with uniqueid " << uid << " as it was already seen this scan," << -+ "file is at " << row.value( Field::URL ).toString() << ", original file is at " << originalLocation; -+ } -+ else -+ { -+ int artist = genericId( &m_artists, row.value( Field::ARTIST ).toString(), &m_nextArtistNum ); -+ //debug() << "artist found = " << artist; -+ addTrack( row, artist ); -+ m_uidsSeenThisScan.insert( uid ); -+ } - } - } - else - { - QString albumArtist = findAlbumArtist( artists, data.count() ); -+ //debug() << "albumArtist found = " << albumArtist; - //an empty string means that no albumartist was found - int artist = albumArtist.isEmpty() ? 0 : genericId( &m_artists, albumArtist, &m_nextArtistNum ); -+ //debug() << "artist found = " << artist; - - //debug() << "albumartist " << albumArtist << "for artists" << artists; - foreach( const QVariantMap &row, data ) - { -- addTrack( row, artist ); -+ QString uid = row.value( Field::UNIQUEID ).toString(); -+ if( m_uidsSeenThisScan.contains( uid ) ) -+ { -+ QString originalLocation = ( ( m_urlsHashByUid.contains( uid ) && -+ m_urlsHashByUid[uid] != 0 ) ? -+ MountPointManager::instance()->getAbsolutePath( m_urlsHashByUid[uid]->at( 1 ).toInt(), m_urlsHashByUid[uid]->at( 2 ) ) : "(unknown)" ); -+ debug() << "Skipping file with uniqueid " << uid << " as it was already seen this scan," << -+ "file is at " << row.value( Field::URL ).toString() << ", original file is at " << originalLocation; -+ } -+ else -+ { -+ addTrack( row, artist ); -+ m_uidsSeenThisScan.insert( uid ); -+ } - } - } - } -@@ -299,6 +369,7 @@ ScanResultProcessor::processDirectory( c - QString - ScanResultProcessor::findAlbumArtist( const QSet<QString> &artists, int trackCount ) const - { -+ //DEBUG_BLOCK - QMap<QString, int> artistCount; - bool featuring; - QStringList trackArtists; -@@ -371,6 +442,7 @@ void - ScanResultProcessor::addTrack( const QVariantMap &trackData, int albumArtistId ) - { - //DEBUG_BLOCK -+ //debug() << "albumArtistId = " << albumArtistId; - //amarok 1 stored all tracks of a compilation in different directories. - //when using its "Organize Collection" feature - //try to detect these cases -@@ -419,7 +491,15 @@ ScanResultProcessor::addTrack( const QVa - - //urlId will take care of the urls table part of AFT - int url = urlId( path, uid ); -- -+/* -+ foreach( QString key, m_urlsHashByUid.keys() ) -+ debug() << "Key: " << key << ", list: " << *m_urlsHashByUid[key]; -+ foreach( int key, m_urlsHashById.keys() ) -+ debug() << "Key: " << key << ", list: " << *m_urlsHashById[key]; -+ typedef QPair<int, QString> blahType; //QFOREACH is stupid when it comes to QPairs -+ foreach( blahType key, m_urlsHashByLocation.keys() ) -+ debug() << "Key: " << key << ", list: " << *m_urlsHashByLocation[key]; -+*/ - QStringList *trackList = new QStringList(); - int id = m_nextTrackNum; - //debug() << "Appending new track number with tracknum: " << id; -@@ -470,7 +550,7 @@ ScanResultProcessor::addTrack( const QVa - //insert into hashes - if( m_tracksHashByUrl.contains( url ) && m_tracksHashByUrl[url] != 0 ) - { -- //debug() << "m_tracksHashByUrl contains the url!"; -+ //debug() << "m_tracksHashByUrl already contains url " << url; - //need to replace, not overwrite/add a new one - QStringList *oldValues = m_tracksHashByUrl[url]; - QString oldId = oldValues->at( 0 ); -@@ -490,8 +570,24 @@ ScanResultProcessor::addTrack( const QVa - m_tracksHashById.insert( id, trackList ); - } - -+ //debug() << "album = " << album; -+ - if( m_tracksHashByAlbum.contains( album ) && m_tracksHashByAlbum[album] != 0 ) -- m_tracksHashByAlbum[album]->append( trackList ); -+ { -+ //contains isn't the fastest on linked lists, but in reality this is on the order of maybe -+ //ten quick pointer comparisons per track on average...probably lower -+ //debug() << "trackList is " << trackList; -+ if( !m_tracksHashByAlbum[album]->contains( trackList ) ) -+ { -+ //debug() << "appending trackList to m_tracksHashByAlbum"; -+ m_tracksHashByAlbum[album]->append( trackList ); -+ } -+ else -+ { -+ //debug() << "not appending trackList to m_tracksHashByAlbum"; -+ } -+ -+ } - else - { - QLinkedList<QStringList*> *list = new QLinkedList<QStringList*>(); -@@ -595,6 +691,8 @@ ScanResultProcessor::albumId( const QStr - QLinkedList<QStringList*> *list = m_albumsHashByName[album]; - foreach( QStringList *slist, *list ) - { -+ //debug() << "albumArtistId = " << albumArtistId; -+ //debug() << "Checking list: " << *slist; - if( slist->at( 2 ).isEmpty() && albumArtistId == 0 ) - { - //debug() << "artist is empty and albumArtistId = 0, returning " << slist->at( 0 ); -@@ -631,7 +729,10 @@ ScanResultProcessor::albumInsert( const - albumList->append( QString() ); - m_albumsHashById[returnedNum] = albumList; - if( m_albumsHashByName.contains( album ) && m_albumsHashByName[album] != 0 ) -- m_albumsHashByName[album]->append( albumList ); -+ { -+ if( !m_albumsHashByName[album]->contains( albumList ) ) -+ m_albumsHashByName[album]->append( albumList ); -+ } - else - { - QLinkedList<QStringList*> *list = new QLinkedList<QStringList*>(); -@@ -645,7 +746,7 @@ ScanResultProcessor::albumInsert( const - int - ScanResultProcessor::urlId( const QString &url, const QString &uid ) - { -- /* -+/* - DEBUG_BLOCK - foreach( QString key, m_urlsHashByUid.keys() ) - debug() << "Key: " << key << ", list: " << *m_urlsHashByUid[key]; -@@ -654,8 +755,7 @@ ScanResultProcessor::urlId( const QStrin - typedef QPair<int, QString> blahType; //QFOREACH is stupid when it comes to QPairs - foreach( blahType key, m_urlsHashByLocation.keys() ) - debug() << "Key: " << key << ", list: " << *m_urlsHashByLocation[key]; -- */ -- -+*/ - QFileInfo fileInfo( url ); - const QString dir = fileInfo.absoluteDir().absolutePath(); - int dirId = directoryId( dir ); -@@ -665,6 +765,7 @@ ScanResultProcessor::urlId( const QStrin - QPair<int, QString> locationPair( deviceId, rpath ); - //debug() << "in urlId with url = " << url << " and uid = " << uid; - //debug() << "checking locationPair " << locationPair; -+/* - if( m_urlsHashByLocation.contains( locationPair ) ) - { - QStringList values; -@@ -674,6 +775,7 @@ ScanResultProcessor::urlId( const QStrin - values << "zero"; - //debug() << "m_urlsHashByLocation contains it! It is " << values; - } -+*/ - QStringList currUrlIdValues; - if( m_urlsHashByUid.contains( uid ) && m_urlsHashByUid[uid] != 0 ) - currUrlIdValues = *m_urlsHashByUid[uid]; -@@ -717,6 +819,7 @@ ScanResultProcessor::urlId( const QStrin - //debug() << "m_urlsHashByUid contains this UID, updating deviceId and path"; - QStringList *list = m_urlsHashByUid[uid]; - //debug() << "list from UID hash is " << list << " with values " << *list; -+ QPair<int, QString> oldLocationPair( list->at( 1 ).toInt(), list->at( 2 ) ); - list->replace( 1, QString::number( deviceId ) ); - list->replace( 2, rpath ); - list->replace( 3, QString::number( dirId ) ); -@@ -737,6 +840,7 @@ ScanResultProcessor::urlId( const QStrin - delete oldList; - } - m_urlsHashByLocation[locationPair] = list; -+ m_urlsHashByLocation.remove( oldLocationPair ); - } - m_permanentTablesUrlUpdates.insert( uid, url ); - m_changedUrls.insert( uid, QPair<QString, QString>( MountPointManager::instance()->getAbsolutePath( currUrlIdValues[1].toInt(), currUrlIdValues[2] ), url ) ); -@@ -751,6 +855,7 @@ ScanResultProcessor::urlId( const QStrin - { - QStringList *list = m_urlsHashByLocation[locationPair]; - //debug() << "Replacing hash " << list->at( 4 ) << " with " << uid; -+ QString oldId = list->at( 4 ); - list->replace( 4, uid ); - if( m_urlsHashByUid.contains( uid ) - && m_urlsHashByUid[uid] != 0 -@@ -762,6 +867,7 @@ ScanResultProcessor::urlId( const QStrin - delete oldList; - } - m_urlsHashByUid[uid] = list; -+ m_urlsHashByUid.remove( oldId ); - } - m_permanentTablesUidUpdates.insert( url, uid ); - m_changedUids.insert( currUrlIdValues[4], uid ); -@@ -855,7 +961,8 @@ ScanResultProcessor::directoryId( const - int - ScanResultProcessor::checkExistingAlbums( const QString &album ) - { --// DEBUG_BLOCK -+ //DEBUG_BLOCK -+ //debug() << "looking for album " << album; - // "Unknown" albums shouldn't be handled as compilations - if( album.isEmpty() ) - return 0; -@@ -865,7 +972,10 @@ ScanResultProcessor::checkExistingAlbums - //it's probably a compilation. - //this handles A1 compilations that were automatically organized by Amarok - if( !m_albumsHashByName.contains( album ) || m_albumsHashByName[album] == 0 ) -+ { -+ //debug() << "hashByName doesn't contain album, or it's zero"; - return 0; -+ } - - QStringList trackIds; - QLinkedList<QStringList*> *llist = m_albumsHashByName[album]; -@@ -915,8 +1025,10 @@ ScanResultProcessor::checkExistingAlbums - } - } - -+ //debug() << "trackIds = " << trackIds; - if( trackIds.isEmpty() ) - { -+ //debug() << "trackIds empty, returning zero"; - return 0; - } - else -@@ -933,6 +1045,7 @@ ScanResultProcessor::checkExistingAlbums - list->replace( 3, compilationString ); - } - } -+ //debug() << "returning " << compilationId; - return compilationId; - } - } -@@ -1167,6 +1280,17 @@ ScanResultProcessor::copyHashesToTempTab - foreach( blahType key, m_urlsHashByLocation.keys() ) - debug() << "Key: " << key << ", list: " << *m_urlsHashByLocation[key]; - debug() << "Next album num: " << m_nextAlbumNum; -+ -+ foreach( int key, m_tracksHashById.keys() ) -+ debug() << "Key: " << key << ", list: " << *m_tracksHashById[key]; -+ foreach( int key, m_tracksHashByUrl.keys() ) -+ debug() << "Key: " << key << ", list: " << *m_tracksHashByUrl[key]; -+ foreach( int key, m_tracksHashByAlbum.keys() ) -+ { -+ debug() << "Key: " << key; -+ foreach( QStringList* item, *m_tracksHashByAlbum[key] ) -+ debug() << "list: " << item << " is " << *item; -+ } - */ - - DEBUG_BLOCK diff --git a/audio/amarok/patches/patch-ab b/audio/amarok/patches/patch-ab index 0a0fd5b541e..6fff12da192 100644 --- a/audio/amarok/patches/patch-ab +++ b/audio/amarok/patches/patch-ab @@ -1,12 +1,12 @@ -$NetBSD: patch-ab,v 1.4 2010/02/16 09:01:46 wiz Exp $ +$NetBSD: patch-ab,v 1.5 2010/03/16 19:28:50 wiz Exp $ ---- src/collection/mysqlecollection/CMakeLists.txt.orig 2009-09-28 17:34:03.000000000 +0000 -+++ src/collection/mysqlecollection/CMakeLists.txt -@@ -82,6 +82,7 @@ if(APPLE) +--- src/collection/sqlcollection/mysqlecollection/CMakeLists.txt.orig 2010-03-10 23:12:15.000000000 +0000 ++++ src/collection/sqlcollection/mysqlecollection/CMakeLists.txt +@@ -49,6 +49,7 @@ if(APPLE) SET_TARGET_PROPERTIES(amarok_collection-mysqlecollection PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") endif(APPLE) +SET_TARGET_PROPERTIES(amarok_collection-mysqlecollection PROPERTIES LINK_FLAGS "@@WLR@@") install(TARGETS amarok_collection-mysqlecollection DESTINATION ${PLUGIN_INSTALL_DIR} ) - install(FILES ../sqlcollection/org.kde.amarok.SqlCollection.xml DESTINATION ${DBUS_INTERFACES_INSTALL_DIR}) + install(FILES amarok_collection-mysqlecollection.desktop DESTINATION ${SERVICES_INSTALL_DIR}) diff --git a/audio/amarok/patches/patch-ac b/audio/amarok/patches/patch-ac deleted file mode 100644 index 93b725d6642..00000000000 --- a/audio/amarok/patches/patch-ac +++ /dev/null @@ -1,14 +0,0 @@ -$NetBSD: patch-ac,v 1.4 2010/02/16 09:01:46 wiz Exp $ - -post-2.2.2 patch from upstream - ---- src/collection/sqlcollection/ScanResultProcessor.h.orig 2010-01-06 22:19:46.000000000 +0000 -+++ src/collection/sqlcollection/ScanResultProcessor.h -@@ -94,6 +94,7 @@ class ScanResultProcessor : public QObje - QMap<QString, int> m_directories; - QMap<QString, QList< QPair< QString, QString > > > m_imageMap; - -+ QSet<QString> m_uidsSeenThisScan; - QHash<QString, uint> m_filesInDirs; - - TrackUrls m_changedUids; //not really track urls |