diff --git a/src/libtomahawk/database/databasecommand_setdynamicplaylistrevision.h b/src/libtomahawk/database/databasecommand_setdynamicplaylistrevision.h index 92eb5c2bc..284e477e2 100644 --- a/src/libtomahawk/database/databasecommand_setdynamicplaylistrevision.h +++ b/src/libtomahawk/database/databasecommand_setdynamicplaylistrevision.h @@ -60,7 +60,7 @@ public: virtual void exec( DatabaseImpl* lib ); virtual void postCommitHook(); virtual bool doesMutates() const { return true; } - virtual bool groupable() const { return true; } + virtual bool groupable() const { return false; } void setControlsV( const QVariantList& vlist ) { diff --git a/src/libtomahawk/database/databasecommand_setplaylistrevision.cpp b/src/libtomahawk/database/databasecommand_setplaylistrevision.cpp index 21e6e14f5..ed761dc99 100644 --- a/src/libtomahawk/database/databasecommand_setplaylistrevision.cpp +++ b/src/libtomahawk/database/databasecommand_setplaylistrevision.cpp @@ -104,6 +104,7 @@ DatabaseCommand_SetPlaylistRevision::exec( DatabaseImpl* lib ) } else { + tDebug() << "Playlist:" << m_playlistguid << m_currentRevision << source()->friendlyName() << source()->id(); throw "No such playlist, WTF?"; return; } diff --git a/src/libtomahawk/playlist.cpp b/src/libtomahawk/playlist.cpp index c813514a8..ae12bbb47 100644 --- a/src/libtomahawk/playlist.cpp +++ b/src/libtomahawk/playlist.cpp @@ -294,6 +294,7 @@ void Playlist::createNewRevision( const QString& newrev, const QString& oldrev, const QList< plentry_ptr >& entries ) { tDebug() << Q_FUNC_INFO << newrev << oldrev << entries.count(); + Q_ASSERT( m_source->isLocal() || newrev == oldrev ); if ( busy() ) { diff --git a/src/libtomahawk/playlist/dynamic/DynamicPlaylist.cpp b/src/libtomahawk/playlist/dynamic/DynamicPlaylist.cpp index 9358d2a88..5f986662a 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicPlaylist.cpp +++ b/src/libtomahawk/playlist/dynamic/DynamicPlaylist.cpp @@ -185,6 +185,8 @@ DynamicPlaylist::createNewRevision( const QString& newrev, const QList< dyncontrol_ptr>& controls, const QList< plentry_ptr >& entries ) { + Q_ASSERT( m_source->isLocal() || newrev == oldrev ); + if ( busy() ) { m_revisionQueue.enqueue( DynQueueItem( newrev, oldrev, type, controls, (int)Static, entries, oldrev == currentrevision() ) ); @@ -230,6 +232,8 @@ DynamicPlaylist::createNewRevision( const QString& newrev, const QString& type, const QList< dyncontrol_ptr>& controls ) { + Q_ASSERT( m_source->isLocal() || newrev == oldrev ); + if ( busy() ) { m_revisionQueue.enqueue( DynQueueItem( newrev, oldrev, type, controls, (int)OnDemand, QList< plentry_ptr >(), oldrev == currentrevision() ) ); @@ -533,8 +537,15 @@ DynamicPlaylist::checkRevisionQueue() if ( item.oldRev != currentrevision() && item.applyToTip ) { // this was applied to the then-latest, but the already-running operation changed it so it's out of date now. fix it + if ( item.oldRev == item.newRev ) + { + checkRevisionQueue(); + return; + } + item.oldRev = currentrevision(); } + if( item.mode == Static ) createNewRevision( item.newRev, item.oldRev, item.type, item.controls, item.entries ); else diff --git a/src/main.cpp b/src/main.cpp index 57c708631..a8baed756 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,11 +20,11 @@ #include "tomahawkapp.h" #include "thirdparty/kdsingleapplicationguard/kdsingleapplicationguard.h" +#include "ubuntuunityhack.h" + #include -#include "ubuntuunityhack.h" - #ifdef Q_WS_MAC #include "tomahawkapp_mac.h" #include @@ -70,7 +70,6 @@ main( int argc, char *argv[] ) a.init(); QString locale = QLocale::system().name(); - QTranslator translator; translator.load( QString( ":/lang/tomahawk_" ) + locale ); a.installTranslator( &translator );