public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/amarok] epel10.2: 2.5.96 (2.6rc1)
@ 2026-07-06 18:31 Rex Dieter
  0 siblings, 0 replies; only message in thread
From: Rex Dieter @ 2026-07-06 18:31 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/amarok
Branch : epel10.2
Commit : 82423e3c26471b0cf050be8b36a1c0531562e447
Author : Rex Dieter <rdieter@fedoraproject.org>
Date   : 2012-08-02T07:56:15-05:00
Stats  : +723/-837 in 6 file(s)
URL    : https://src.fedoraproject.org/rpms/amarok/c/82423e3c26471b0cf050be8b36a1c0531562e447?branch=epel10.2

Log:
2.5.96 (2.6rc1)

---
diff --git a/.gitignore b/.gitignore
index cf2003d..e63266d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 /amarok-2.5.0.tar.bz2
-/amarok-2.5.90.tar.bz2
+/amarok-2.5.96.tar.bz2

diff --git a/amarok-2.5.96-liblastfm1.patch b/amarok-2.5.96-liblastfm1.patch
new file mode 100644
index 0000000..3881559
--- /dev/null
+++ b/amarok-2.5.96-liblastfm1.patch
@@ -0,0 +1,706 @@
+diff -up amarok-2.5.96/CMakeLists.txt.liblastfm1 amarok-2.5.96/CMakeLists.txt
+--- amarok-2.5.96/CMakeLists.txt.liblastfm1	2012-07-31 05:17:20.000000000 -0500
++++ amarok-2.5.96/CMakeLists.txt	2012-08-02 07:52:13.653187743 -0500
+@@ -129,7 +129,7 @@ if( WITH_PLAYER )
+     # macro_log_feature( STRIGI_FOUND "strigi" "Index metadata of files" "http://strigi.sourceforge.net" FALSE "" "" )
+ 
+     macro_optional_find_package(LibLastFm)
+-    macro_log_feature( LIBLASTFM_FOUND "liblastfm" "Enable Last.Fm service, including scrobbling, song submissions, and suggested song dynamic playlists" "http://cdn.last.fm/src/liblastfm-0.3.0.tar.bz2" FALSE "" "version 0.3.x (versions 1.0 or higher are incompatible)" )
++    macro_log_feature( LIBLASTFM_FOUND "liblastfm" "Enable Last.Fm service, including scrobbling, song submissions, and suggested song dynamic playlists" "http://cdn.last.fm/src/liblastfm-1.0.0.tar.gz" FALSE "1.0.0" "" )
+     macro_bool_to_01( LIBLASTFM_FOUND HAVE_LIBLASTFM )
+ 
+     macro_optional_find_package( FFmpeg )
+diff -up amarok-2.5.96/cmake/modules/FindLibLastFm.cmake.liblastfm1 amarok-2.5.96/cmake/modules/FindLibLastFm.cmake
+--- amarok-2.5.96/cmake/modules/FindLibLastFm.cmake.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/cmake/modules/FindLibLastFm.cmake	2012-08-02 07:38:24.317555869 -0500
+@@ -6,7 +6,7 @@
+ # LIBLASTFM_FOUND, whether liblastfm was found
+ 
+ 
+-find_path(LIBLASTFM_INCLUDE_DIR NAMES Audioscrobbler
++find_path(LIBLASTFM_INCLUDE_DIR NAMES lastfm
+    HINTS
+    ~/usr/include
+    /opt/local/include
+diff -up amarok-2.5.96/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp.liblastfm1 amarok-2.5.96/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp
+--- amarok-2.5.96/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp	2012-08-02 07:38:24.301556068 -0500
+@@ -27,10 +27,6 @@
+ #include "EngineController.h"
+ #include "LastFmEventXmlParser.h"
+ 
+-// LastFm
+-#include <lastfm/XmlQuery>
+-#include <lastfm/ws.h>
+-
+ // KDE
+ #include <KDateTime>
+ 
+diff -up amarok-2.5.96/src/core/support/Amarok.h.liblastfm1 amarok-2.5.96/src/core/support/Amarok.h
+--- amarok-2.5.96/src/core/support/Amarok.h.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/core/support/Amarok.h	2012-08-02 07:38:24.301556068 -0500
+@@ -203,6 +203,7 @@ namespace Amarok
+ 
+     inline const char* discogsApiKey() { return "91734dd989"; }
+     inline const char* lastfmApiKey() { return "402d3ca8e9bc9d3cf9b85e1202944ca5"; }
++    inline const char* lastfmApiSharedSecret() { return "fe0dcde9fcd14c2d1d50665b646335e9"; }
+     inline const char* yahooBossApiKey() { return "oQepTNrV34G9Satb1dgRZ8hdl1uhJvguDSU5Knl2Xd4ALK85knYt6ylr.FTA57XMRBA-"; }
+     inline const char* flickrApiKey() { return "9c5a288116c34c17ecee37877397fe31"; }
+ }
+diff -up amarok-2.5.96/src/LastfmReadLabelCapability.cpp.liblastfm1 amarok-2.5.96/src/LastfmReadLabelCapability.cpp
+--- amarok-2.5.96/src/LastfmReadLabelCapability.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/LastfmReadLabelCapability.cpp	2012-08-02 07:38:24.318555856 -0500
+@@ -22,8 +22,7 @@
+ #include <QMap>
+ #include <QNetworkReply>
+ 
+-#include <lastfm/XmlQuery>
+-#include <ws.h>
++#include <lastfm/XmlQuery.h>
+ #include "core/support/Amarok.h"
+ 
+ namespace Capabilities
+@@ -72,7 +71,8 @@ LastfmReadLabelCapability::onTagsFetched
+     {
+         case QNetworkReply::NoError:
+         {
+-            lastfm::XmlQuery lfm = m_job->readAll();
++            lastfm::XmlQuery lfm;
++            lfm.parse(m_job->readAll());
+             QList<lastfm::XmlQuery> tags = lfm.children( "tag" );
+             QStringList ret;
+             foreach( const lastfm::XmlQuery &child, tags )
+diff -up amarok-2.5.96/src/services/ampache/LastfmInfoParser.cpp.liblastfm1 amarok-2.5.96/src/services/ampache/LastfmInfoParser.cpp
+--- amarok-2.5.96/src/services/ampache/LastfmInfoParser.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/ampache/LastfmInfoParser.cpp	2012-08-02 07:38:24.296556129 -0500
+@@ -20,8 +20,7 @@
+ #include "core/support/Amarok.h"
+ #include "core/support/Debug.h"
+ 
+-#include <lastfm/XmlQuery>
+-#include <lastfm/ws.h>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <KLocale>
+ 
+@@ -55,7 +54,8 @@ void LastfmInfoParser::onGetTrackInfo()
+     {
+         case QNetworkReply::NoError:
+         {
+-            lastfm::XmlQuery lfm = m_jobs[ "getTrackInfo" ]->readAll();
++            lastfm::XmlQuery lfm;
++            lfm.parse( m_jobs[ "getTrackInfo" ]->readAll() );
+             lastfm::XmlQuery wiki = lfm["track"]["wiki"];
+             const QString contentText = wiki["content"].text();
+             const QString publishedDate = wiki["published"].text();
+@@ -103,7 +103,8 @@ void LastfmInfoParser::onGetAlbumInfo()
+     {
+         case QNetworkReply::NoError:
+         {
+-            lastfm::XmlQuery lfm = m_jobs[ "getAlbumInfo" ]->readAll();
++            lastfm::XmlQuery lfm;
++            lfm.parse( m_jobs[ "getAlbumInfo" ]->readAll() );
+             lastfm::XmlQuery wiki = lfm["album"]["wiki"];
+             const QString summaryText = wiki["summary"].text();
+             const QString contentText = wiki["content"].text();
+@@ -155,7 +156,8 @@ void LastfmInfoParser::onGetArtistInfo()
+     {
+         case QNetworkReply::NoError:
+         {
+-            lastfm::XmlQuery lfm = m_jobs[ "getArtistInfo" ]->readAll();
++            lastfm::XmlQuery lfm;
++            lfm.parse( m_jobs[ "getArtistInfo" ]->readAll() );
+             debug() << lfm.text();
+             lastfm::XmlQuery bio = lfm["artist"]["bio"];
+             const QString summaryText = bio["summary"].text();
+diff -up amarok-2.5.96/src/services/lastfm/biases/LastFmBias.cpp.liblastfm1 amarok-2.5.96/src/services/lastfm/biases/LastFmBias.cpp
+--- amarok-2.5.96/src/services/lastfm/biases/LastFmBias.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/biases/LastFmBias.cpp	2012-08-02 07:38:24.299556093 -0500
+@@ -34,9 +34,8 @@
+ #include "core/collections/QueryMaker.h"
+ #include "core-impl/collections/support/CollectionManager.h"
+ 
+-#include "lastfm/Artist"
+-#include "lastfm/ws.h"
+-#include "lastfm/XmlQuery"
++#include <lastfm/Artist.h>
++#include <lastfm/ws.h>
+ 
+ #include <QLabel>
+ #include <QComboBox>
+diff -up amarok-2.5.96/src/services/lastfm/biases/WeeklyTopBias.cpp.liblastfm1 amarok-2.5.96/src/services/lastfm/biases/WeeklyTopBias.cpp
+--- amarok-2.5.96/src/services/lastfm/biases/WeeklyTopBias.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/biases/WeeklyTopBias.cpp	2012-08-02 07:38:24.299556093 -0500
+@@ -34,9 +34,9 @@
+ #include "core/collections/QueryMaker.h"
+ #include "core-impl/collections/support/CollectionManager.h"
+ 
+-#include "lastfm/Artist"
+-#include "lastfm/ws.h"
+-#include "lastfm/XmlQuery"
++#include <lastfm/Artist.h>
++#include <lastfm/ws.h>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <QNetworkReply>
+ 
+@@ -371,10 +371,9 @@ Dynamic::WeeklyTopBias::weeklyArtistQuer
+     }
+ 
+ 
+-    try
++    lastfm::XmlQuery lfm;
++    if( lfm.parse( reply->readAll() ) )
+     {
+-        lastfm::XmlQuery lfm( reply->readAll() );
+-
+         // debug() << "got response:" << lfm;
+         QStringList artists;
+         for( int i = 0; i < lfm[ "weeklyartistchart" ].children( "artist" ).size(); i++ )
+@@ -398,10 +397,10 @@ Dynamic::WeeklyTopBias::weeklyArtistQuer
+             warning() << "Got a reply for a week"<<week<<"that was not requested.";
+             return;
+         }
+-
+-    } catch( lastfm::ws::ParseError& e )
++    }
++    else
+     {
+-        debug() << "caught exception parsing weekly artist chart.";
++        debug() << "failed to parse weekly artist chart.";
+     }
+ 
+     reply->deleteLater();
+diff -up amarok-2.5.96/src/services/lastfm/LastFmServiceCollection.cpp.liblastfm1 amarok-2.5.96/src/services/lastfm/LastFmServiceCollection.cpp
+--- amarok-2.5.96/src/services/lastfm/LastFmServiceCollection.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/LastFmServiceCollection.cpp	2012-08-02 07:38:24.297556117 -0500
+@@ -26,7 +26,7 @@
+ #include "core-impl/collections/support/MemoryQueryMaker.h"
+ 
+ #include <lastfm/ws.h>
+-#include <lastfm/XmlQuery>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <QNetworkReply>
+ 
+@@ -154,10 +154,9 @@ void LastFmServiceCollection::slotAddNei
+         case QNetworkReply::NoError:
+         {
+             // iterate through each neighbour
+-            try
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "user.getNeighbours" ]->readAll() ) )
+             {
+-                lastfm::XmlQuery lfm( m_jobs[ "user.getNeighbours" ]->readAll() );
+-
+                 foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children( "user" ) )
+                 {
+                     const QString name = e[ "name" ].text();
+@@ -168,9 +167,10 @@ void LastFmServiceCollection::slotAddNei
+                     addTrack( trackPtr );
+                 }
+ 
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         }
+@@ -195,15 +195,14 @@ void LastFmServiceCollection::slotAddNei
+         case QNetworkReply::NoError:
+         {
+             // iterate through each neighbour
+-            try
++            if( !m_jobs[ "user.getNeighbours" ] )
++            {
++                debug() << "BAD! got no result object";
++                return;
++            }
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "user.getNeighbours" ]->readAll() ) )
+             {
+-                if( !m_jobs[ "user.getNeighbours" ] )
+-                {
+-                    debug() << "BAD! got no result object";
+-                    return;
+-                }
+-                lastfm::XmlQuery lfm( m_jobs[ "user.getNeighbours" ]->readAll() );
+-
+                 // iterate through each neighbour
+                 foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children( "user" ) )
+                 {
+@@ -218,9 +217,10 @@ void LastFmServiceCollection::slotAddNei
+ 
+                 // should be safe, as both slots SHOULD get called before we return to the event loop...
+                 m_jobs[ "user.getNeighbours" ]->deleteLater();
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         }
+@@ -248,10 +248,9 @@ void LastFmServiceCollection::slotAddFri
+     {
+         case QNetworkReply::NoError:
+         {
+-            try
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "user.getFriends" ]->readAll() ) )
+             {
+-                lastfm::XmlQuery lfm( m_jobs[ "user.getFriends" ]->readAll() );
+-
+                 foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children( "user" ) )
+                 {
+                     const QString name = e[ "name" ].text();
+@@ -261,9 +260,10 @@ void LastFmServiceCollection::slotAddFri
+                     addTrack( trackPtr );
+                 }
+ 
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         }
+@@ -293,10 +293,9 @@ void LastFmServiceCollection::slotAddFri
+     {
+         case QNetworkReply::NoError:
+         {
+-            try
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "user.getFriends" ]->readAll() ) )
+             {
+-                lastfm::XmlQuery lfm( m_jobs[ "user.getFriends" ]->readAll() );
+-
+                 foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children( "user" ) )
+                 {
+                     const QString name = e[ "name" ].text();
+@@ -306,9 +305,10 @@ void LastFmServiceCollection::slotAddFri
+                     addTrack( trackPtr );
+                 }
+ 
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         }
+diff -up amarok-2.5.96/src/services/lastfm/LastFmService.cpp.liblastfm1 amarok-2.5.96/src/services/lastfm/LastFmService.cpp
+--- amarok-2.5.96/src/services/lastfm/LastFmService.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/LastFmService.cpp	2012-08-02 07:38:24.296556129 -0500
+@@ -46,8 +46,8 @@
+ #include "widgets/SearchWidget.h"
+ #include "NetworkAccessManagerProxy.h"
+ 
+-#include <lastfm/Audioscrobbler> // from liblastfm
+-#include <lastfm/XmlQuery>
++#include <lastfm/Audioscrobbler.h> // from liblastfm
++#include <lastfm/XmlQuery.h>
+ 
+ #include <KLocale>
+ #include <KPasswordDialog>
+@@ -224,10 +224,7 @@ LastFmService::init()
+ {
+     // set the global static Lastfm::Ws stuff
+     lastfm::ws::ApiKey = Amarok::lastfmApiKey();
+-    lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
+-    // testing w/ official keys
+-    //Ws::SharedSecret = "73582dfc9e556d307aead069af110ab8";
+-    //Ws::ApiKey = "c8c7b163b11f92ef2d33ba6cd3c2c3c3";
++    lastfm::ws::SharedSecret = Amarok::lastfmApiSharedSecret();
+     m_userNameArray = qstrdup( m_userName.toLatin1().data() );
+     lastfm::ws::Username = m_userNameArray;
+     if( lastfm::nam() != The::networkAccessManager() )
+@@ -309,7 +306,8 @@ LastFmService::onAuthenticated()
+         case QNetworkReply::NoError:
+         {
+ 
+-            lastfm::XmlQuery lfm = lastfm::XmlQuery( m_jobs[ "auth" ]->readAll() );
++            lastfm::XmlQuery lfm;
++            lfm.parse( m_jobs[ "auth" ]->readAll() );
+             LastFmServiceConfig config;
+ 
+             if( lfm.children( "error" ).size() > 0 )
+@@ -359,10 +357,8 @@ LastFmService::onGetUserInfo()
+     {
+         case QNetworkReply::NoError:
+         {
+-            try
+-            {
+-                lastfm::XmlQuery lfm( m_jobs[ "getUserInfo" ]->readAll() );
+-
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "getUserInfo" ]->readAll() ) ) {
+                 m_country = lfm["user"]["country"].text();
+                 m_age = lfm["user"]["age"].text();
+                 m_gender = lfm["user"]["gender"].text();
+@@ -381,9 +377,10 @@ LastFmService::onGetUserInfo()
+                 }
+                 updateProfileInfo();
+ 
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         } case QNetworkReply::AuthenticationRequiredError:
+diff -up amarok-2.5.96/src/services/lastfm/LastFmServiceSettings.cpp.liblastfm1 amarok-2.5.96/src/services/lastfm/LastFmServiceSettings.cpp
+--- amarok-2.5.96/src/services/lastfm/LastFmServiceSettings.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/LastFmServiceSettings.cpp	2012-08-02 07:38:24.297556117 -0500
+@@ -23,9 +23,9 @@
+ #include "NetworkAccessManagerProxy.h"
+ #include "ui_LastFmConfigWidget.h"
+ 
+-#include <lastfm/Audioscrobbler> // from liblastfm
++#include <lastfm/Audioscrobbler.h> // from liblastfm
+ #include <lastfm/ws.h>
+-#include <lastfm/XmlQuery>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <QCryptographicHash>
+ #include <QNetworkAccessManager>
+@@ -100,7 +100,7 @@ LastFmServiceSettings::testLogin()
+     m_configDialog->testLogin->setText( i18n( "Testing..." ) );
+     // set the global static Lastfm::Ws stuff
+     lastfm::ws::ApiKey = Amarok::lastfmApiKey();
+-    lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
++    lastfm::ws::SharedSecret = Amarok::lastfmApiSharedSecret();
+     lastfm::ws::Username = qstrdup( m_configDialog->kcfg_ScrobblerUsername->text().toLatin1().data() );
+     if( lastfm::nam() != The::networkAccessManager() )
+         lastfm::setNetworkAccessManager( The::networkAccessManager() );
+@@ -126,7 +126,8 @@ LastFmServiceSettings::onAuthenticated()
+ {
+     DEBUG_BLOCK
+ 
+-    lastfm::XmlQuery lfm = lastfm::XmlQuery( m_authQuery->readAll() );
++    lastfm::XmlQuery lfm;
++    lfm.parse( m_authQuery->readAll() );
+ 
+     switch( m_authQuery->error() )
+     {
+diff -up amarok-2.5.96/src/services/lastfm/LastFmTreeModel.cpp.liblastfm1 amarok-2.5.96/src/services/lastfm/LastFmTreeModel.cpp
+--- amarok-2.5.96/src/services/lastfm/LastFmTreeModel.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/LastFmTreeModel.cpp	2012-08-02 07:38:24.298556105 -0500
+@@ -26,8 +26,8 @@
+ #include "AmarokMimeData.h"
+ 
+ #include <lastfm/ws.h>
+-#include <lastfm/Tag>
+-#include <lastfm/XmlQuery>
++#include <lastfm/Tag.h>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <KIcon>
+ #include <KLocale>
+@@ -68,11 +68,12 @@ LastFmTreeModel::slotAddNeighbors ()
+ {
+     DEBUG_BLOCK
+ 
+-    try
+-    {
+         // Iterate over each neighbor, in two passes: 1) Get data 2) Sort data, store in model
+ 
+-        lastfm::XmlQuery lfm( m_jobs[ "getNeighbours" ]->readAll() );
++    lastfm::XmlQuery lfm;
++    lfm.parse( m_jobs[ "getNeighbours" ]->readAll() );
++    if( lfm.parseError().enumValue() == lastfm::ws::NoError )
++    {
+         foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children ( "user" ) )
+         {
+             const QString name = e[ "name" ].text();
+@@ -88,11 +89,11 @@ LastFmTreeModel::slotAddNeighbors ()
+             appendUserStations( neighbor, name );
+         }
+         m_neighbors.sort();
++    } else {
++        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++        return;
+     }
+-    catch( lastfm::ws::ParseError e )
+-    {
+-        debug() << "Got exception in parsing from last.fm:" << e.what();
+-    }
++
+     emitRowChanged(LastFm::Neighbors);
+     m_jobs[ "getNeighbours" ]->deleteLater();
+ }
+@@ -102,11 +103,11 @@ LastFmTreeModel::slotAddFriends ()
+ {
+     DEBUG_BLOCK
+ 
+-    try
+-    {
+-        // Iterate over each friend, in two passes: 1) Get data 2) Sort data, store in model
++    // Iterate over each friend, in two passes: 1) Get data 2) Sort data, store in model
+ 
+-        lastfm::XmlQuery lfm( m_jobs[ "getFriends" ]->readAll() );
++    lastfm::XmlQuery lfm;
++    if( lfm.parse( m_jobs[ "getFriends" ]->readAll() ) )
++    {
+         foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children ( "user" ) )
+         {
+             const QString name = e[ "name" ].text();
+@@ -123,11 +124,11 @@ LastFmTreeModel::slotAddFriends ()
+             appendUserStations( afriend, name );
+         }
+         m_friends.sort();
++    } else {
++        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++        return;
+     }
+-    catch( lastfm::ws::ParseError e )
+-    {
+-        debug() << "Got exception in parsing from last.fm:" << e.what();
+-    }
++
+     emitRowChanged(LastFm::Friends);
+     m_jobs[ "getFriends" ]->deleteLater();
+ }
+@@ -137,10 +138,9 @@ LastFmTreeModel::slotAddTopArtists ()
+ {
+     DEBUG_BLOCK
+     WeightedStringList list;
+-    try
++    lastfm::XmlQuery lfm;
++    if( lfm.parse( m_jobs[ "getTopArtists" ]->readAll() ) )
+     {
+-        lastfm::XmlQuery lfm( m_jobs[ "getTopArtists" ]->readAll() );
+-
+         foreach( const lastfm::XmlQuery &e, lfm[ "topartists" ].children ( "artist" ) )
+         {
+             const QString name = e[ "name" ].text();
+@@ -158,9 +158,10 @@ LastFmTreeModel::slotAddTopArtists ()
+             m_myTopArtists->appendChild ( artist );
+         }
+ 
+-    } catch( lastfm::ws::ParseError e )
++    }
++    else
+     {
+-        debug() << "Got exception in parsing from last.fm:" << e.what();
++        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+     }
+     emitRowChanged(LastFm::TopArtists);
+     m_jobs[ "getTopArtists" ]->deleteLater();
+diff -up amarok-2.5.96/src/services/lastfm/LastFmTreeModel.h.liblastfm1 amarok-2.5.96/src/services/lastfm/LastFmTreeModel.h
+--- amarok-2.5.96/src/services/lastfm/LastFmTreeModel.h.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/LastFmTreeModel.h	2012-08-02 07:38:24.297556117 -0500
+@@ -22,7 +22,7 @@
+ #include "core/meta/Meta.h"
+ #include "WeightedStringList.h"
+ 
+-#include <lastfm/User>
++#include <lastfm/User.h>
+ 
+ #include <QAbstractItemModel>
+ #include <QHash>
+@@ -136,7 +136,7 @@ private:
+     LastFmTreeItem *m_myTopArtists;
+ 
+     QString m_userName;
+-    lastfm::AuthenticatedUser m_user;
++    lastfm::User m_user;
+ 
+     QStringList m_friends;
+     QStringList m_neighbors;
+diff -up amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.cpp.liblastfm1 amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.cpp
+--- amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.cpp.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.cpp	2012-08-02 07:38:24.300556081 -0500
+@@ -41,7 +41,7 @@
+ #include <QWeakPointer>
+ #include <QUrl>
+ 
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+ 
+ namespace LastFm {
+ 
+@@ -451,8 +451,7 @@ Track::love()
+     DEBUG_BLOCK
+ 
+     debug() << "info:" << d->lastFmTrack.artist() << d->lastFmTrack.title();
+-    d->wsReply = lastfm::MutableTrack( d->lastFmTrack ).love();
+-    connect( d->wsReply, SIGNAL( finished() ), this, SLOT( slotWsReply() ) );
++    lastfm::MutableTrack( d->lastFmTrack ).love();
+ }
+ 
+ void
+@@ -477,9 +476,9 @@ void Track::slotResultReady()
+ {
+     if( d->trackFetch->error() == QNetworkReply::NoError )
+     {
+-        try
++        lastfm::XmlQuery lfm;
++        if( lfm.parse( d->trackFetch->readAll() ) )
+         {
+-            lastfm::XmlQuery lfm( d->trackFetch->readAll() );
+             QString id = lfm[ "track" ][ "id" ].text();
+             QString streamable = lfm[ "track" ][ "streamable" ].text();
+             if( streamable.toInt() == 1 )
+@@ -487,9 +486,10 @@ void Track::slotResultReady()
+             else
+                 init();
+ 
+-        } catch( lastfm::ws::ParseError& e )
++        }
++        else
+         {
+-            debug() << "Got exception in parsing from last.fm:" << e.what();
++            debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+         }
+     } else
+     {
+diff -up amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.h.liblastfm1 amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.h
+--- amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.h.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.h	2012-08-02 07:38:24.299556093 -0500
+@@ -24,7 +24,7 @@
+ #include "ServiceMetaBase.h" // for the SourceInfoProvider
+ 
+ 
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+ 
+ 
+ #include <QObject>
+diff -up amarok-2.5.96/src/services/lastfm/meta/LastFmMeta_p.h.liblastfm1 amarok-2.5.96/src/services/lastfm/meta/LastFmMeta_p.h
+--- amarok-2.5.96/src/services/lastfm/meta/LastFmMeta_p.h.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/meta/LastFmMeta_p.h	2012-08-02 07:38:24.300556081 -0500
+@@ -26,10 +26,10 @@
+ #include "core/statistics/StatisticsProvider.h"
+ #include "core-impl/statistics/providers/tag/TagStatisticsProvider.h"
+ 
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+ #include <lastfm/ws.h>
+-#include <lastfm/RadioTuner>
+-#include <lastfm/XmlQuery>
++#include <lastfm/RadioTuner.h>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <kio/job.h>
+ #include <kio/jobclasses.h>
+@@ -144,26 +144,24 @@ class Track::Private : public QObject
+                 return;
+             if( m_userFetch->error() == QNetworkReply::NoError )
+             {
+-                try
++                lastfm::XmlQuery lfm;
++                if( !lfm.parse( m_userFetch->readAll() ) )
+                 {
+-                    lastfm::XmlQuery lfm( m_userFetch->readAll() );
+-                    albumUrl = lfm[ "track" ][ "album" ][ "url" ].text();
+-                    trackUrl = lfm[ "track" ][ "url" ].text();
+-                    artistUrl = lfm[ "track" ][ "artist" ][ "url" ].text();
+-
+-                    notifyObservers();
+-
+-                    imageUrl = lfm[ "track" ][ "album" ][ "image size=large" ].text();
+-
+-                    if( !imageUrl.isEmpty() )
+-                    {
+-                        KIO::Job* job = KIO::storedGet( KUrl( imageUrl ), KIO::Reload, KIO::HideProgressInfo );
+-                        connect( job, SIGNAL( result( KJob* ) ), this, SLOT( fetchImageFinished( KJob* ) ) );
+-                    }
++                    debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++                    return;
++                }
++                albumUrl = lfm[ "track" ][ "album" ][ "url" ].text();
++                trackUrl = lfm[ "track" ][ "url" ].text();
++                artistUrl = lfm[ "track" ][ "artist" ][ "url" ].text();
++
++                notifyObservers();
++
++                imageUrl = lfm[ "track" ][ "album" ][ "image size=large" ].text();
+ 
+-                } catch( lastfm::ws::ParseError& e )
++                if( !imageUrl.isEmpty() )
+                 {
+-                    debug() << "Got exception in parsing from last.fm:" << e.what();
++                    KIO::Job* job = KIO::storedGet( KUrl( imageUrl ), KIO::Reload, KIO::HideProgressInfo );
++                    connect( job, SIGNAL( result( KJob* ) ), this, SLOT( fetchImageFinished( KJob* ) ) );
+                 }
+             }
+ 
+diff -up amarok-2.5.96/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h.liblastfm1 amarok-2.5.96/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h
+--- amarok-2.5.96/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h	2012-08-02 07:38:24.301556068 -0500
+@@ -25,8 +25,9 @@
+ #include "core/meta/Meta.h"
+ #include "core/capabilities/MultiPlayableCapability.h"
+ 
+-#include <lastfm/Track>
+-#include <lastfm/RadioTuner>
++#include <lastfm/Track.h>
++#include <lastfm/RadioStation.h>
++#include <lastfm/RadioTuner.h>
+ #include <lastfm/ws.h>
+ 
+ #include <KLocale>
+@@ -55,24 +56,23 @@ class MultiPlayableCapabilityImpl : publ
+         {
+             DEBUG_BLOCK
+             m_tuner = new lastfm::RadioTuner( lastfm::RadioStation( m_track->uidUrl() ) );
+-            
++
+             connect( m_tuner, SIGNAL( trackAvailable() ), this, SLOT( slotNewTrackAvailable() ) );
+-            connect( m_tuner, SIGNAL( error( lastfm::ws::Error ) ), this, SLOT( error( lastfm::ws::Error ) ) );
++            connect( m_tuner, SIGNAL( error(lastfm::ws::Error,QString) ), this, SLOT( error( lastfm::ws::Error ) ) );
+         }
+-        
++
+         virtual void fetchNext()
+         {
+             DEBUG_BLOCK
+             m_currentTrack = m_tuner->takeNextTrack();
+             m_track->setTrackInfo( m_currentTrack );
+-
+         }
+-        
++
+         using Observer::metadataChanged;
+         virtual void metadataChanged( Meta::TrackPtr track )
+         {
+             const LastFm::TrackPtr ltrack = LastFm::TrackPtr::dynamicCast( track );
+-            
++
+             if( ltrack.isNull() )
+                 return;
+ 
+@@ -94,7 +94,7 @@ class MultiPlayableCapabilityImpl : publ
+                 m_track->setTrackInfo( m_currentTrack );
+             }
+         }
+-        
++
+         virtual void skip()
+         {
+             fetchNext();
+diff -up amarok-2.5.96/src/services/lastfm/ScrobblerAdapter.h.liblastfm1 amarok-2.5.96/src/services/lastfm/ScrobblerAdapter.h
+--- amarok-2.5.96/src/services/lastfm/ScrobblerAdapter.h.liblastfm1	2012-07-31 05:10:56.000000000 -0500
++++ amarok-2.5.96/src/services/lastfm/ScrobblerAdapter.h	2012-08-02 07:38:24.298556105 -0500
+@@ -20,8 +20,8 @@
+ 
+ #include "core/meta/Meta.h"
+ 
+-#include <lastfm/Audioscrobbler>
+-#include <lastfm/Track>
++#include <lastfm/Audioscrobbler.h>
++#include <lastfm/Track.h>
+ 
+ #include <QVariant>
+ 

diff --git a/amarok-liblastfm1.patch b/amarok-liblastfm1.patch
deleted file mode 100644
index 582062e..0000000
--- a/amarok-liblastfm1.patch
+++ /dev/null
@@ -1,722 +0,0 @@
-diff --git a/src/services/ampache/LastfmInfoParser.cpp b/src/services/ampache/LastfmInfoParser.cpp
-index 50cb529516ce1358785fa04824cd32642a526495..0c6dd8fe9f6a491a88dfb062a09e2652976df0ef 100644
---- a/src/services/ampache/LastfmInfoParser.cpp
-+++ b/src/services/ampache/LastfmInfoParser.cpp
-@@ -20,8 +20,7 @@
- #include "core/support/Amarok.h"
- #include "core/support/Debug.h"
- 
--#include <lastfm/XmlQuery>
--#include <lastfm/ws.h>
-+#include <lastfm/XmlQuery.h>
- 
- #include <KLocale>
- 
-@@ -55,7 +54,8 @@ void LastfmInfoParser::onGetTrackInfo()
-     {
-         case QNetworkReply::NoError:
-         {
--            lastfm::XmlQuery lfm = m_jobs[ "getTrackInfo" ]->readAll();
-+            lastfm::XmlQuery lfm;
-+            lfm.parse( m_jobs[ "getTrackInfo" ]->readAll() );
-             lastfm::XmlQuery wiki = lfm["track"]["wiki"];
-             const QString contentText = wiki["content"].text();
-             const QString publishedDate = wiki["published"].text();
-@@ -103,7 +103,8 @@ void LastfmInfoParser::onGetAlbumInfo()
-     {
-         case QNetworkReply::NoError:
-         {
--            lastfm::XmlQuery lfm = m_jobs[ "getAlbumInfo" ]->readAll();
-+            lastfm::XmlQuery lfm;
-+            lfm.parse( m_jobs[ "getAlbumInfo" ]->readAll() );
-             lastfm::XmlQuery wiki = lfm["album"]["wiki"];
-             const QString summaryText = wiki["summary"].text();
-             const QString contentText = wiki["content"].text();
-@@ -155,7 +156,8 @@ void LastfmInfoParser::onGetArtistInfo()
-     {
-         case QNetworkReply::NoError:
-         {
--            lastfm::XmlQuery lfm = m_jobs[ "getArtistInfo" ]->readAll();
-+            lastfm::XmlQuery lfm;
-+            lfm.parse( m_jobs[ "getArtistInfo" ]->readAll() );
-             debug() << lfm.text();
-             lastfm::XmlQuery bio = lfm["artist"]["bio"];
-             const QString summaryText = bio["summary"].text();
-diff --git a/src/services/lastfm/LastFmService.cpp b/src/services/lastfm/LastFmService.cpp
-index a14d989b3fac81e545df095adee36580b052fea7..c9898aa1fcd16ca8070eec66231db23c1beddff2 100644
---- a/src/services/lastfm/LastFmService.cpp
-+++ b/src/services/lastfm/LastFmService.cpp
-@@ -46,8 +46,8 @@
- #include "widgets/SearchWidget.h"
- #include "NetworkAccessManagerProxy.h"
- 
--#include <lastfm/Audioscrobbler> // from liblastfm
--#include <lastfm/XmlQuery>
-+#include <lastfm/Audioscrobbler.h> // from liblastfm
-+#include <lastfm/XmlQuery.h>
- 
- #include <KLocale>
- #include <KPasswordDialog>
-@@ -224,10 +224,7 @@ LastFmService::init()
- {
-     // set the global static Lastfm::Ws stuff
-     lastfm::ws::ApiKey = Amarok::lastfmApiKey();
--    lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
--    // testing w/ official keys
--    //Ws::SharedSecret = "73582dfc9e556d307aead069af110ab8";
--    //Ws::ApiKey = "c8c7b163b11f92ef2d33ba6cd3c2c3c3";
-+    lastfm::ws::SharedSecret = Amarok::lastfmApiSharedSecret();
-     m_userNameArray = qstrdup( m_userName.toLatin1().data() );
-     lastfm::ws::Username = m_userNameArray;
-     if( lastfm::nam() != The::networkAccessManager() )
-@@ -309,7 +306,8 @@ LastFmService::onAuthenticated()
-         case QNetworkReply::NoError:
-         {
- 
--            lastfm::XmlQuery lfm = lastfm::XmlQuery( m_jobs[ "auth" ]->readAll() );
-+            lastfm::XmlQuery lfm;
-+            lfm.parse( m_jobs[ "auth" ]->readAll() );
-             LastFmServiceConfig config;
- 
-             if( lfm.children( "error" ).size() > 0 )
-@@ -359,10 +357,8 @@ LastFmService::onGetUserInfo()
-     {
-         case QNetworkReply::NoError:
-         {
--            try
--            {
--                lastfm::XmlQuery lfm( m_jobs[ "getUserInfo" ]->readAll() );
--
-+            lastfm::XmlQuery lfm;
-+            if( lfm.parse( m_jobs[ "getUserInfo" ]->readAll() ) ) {
-                 m_country = lfm["user"]["country"].text();
-                 m_age = lfm["user"]["age"].text();
-                 m_gender = lfm["user"]["gender"].text();
-@@ -381,9 +377,10 @@ LastFmService::onGetUserInfo()
-                 }
-                 updateProfileInfo();
- 
--            } catch( lastfm::ws::ParseError& e )
-+            }
-+            else
-             {
--                debug() << "Got exception in parsing from last.fm:" << e.what();
-+                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-             }
-             break;
-         } case QNetworkReply::AuthenticationRequiredError:
-diff --git a/src/services/lastfm/LastFmServiceCollection.cpp b/src/services/lastfm/LastFmServiceCollection.cpp
-index 22f49ec0fe8e9f917f8a26f9d546ad147ad04e5b..0ed5505c1cd1350c85f21964e772f3c36cf6ae3e 100644
---- a/src/services/lastfm/LastFmServiceCollection.cpp
-+++ b/src/services/lastfm/LastFmServiceCollection.cpp
-@@ -26,7 +26,7 @@
- #include "core-impl/collections/support/MemoryQueryMaker.h"
- 
- #include <lastfm/ws.h>
--#include <lastfm/XmlQuery>
-+#include <lastfm/XmlQuery.h>
- 
- #include <QNetworkReply>
- 
-@@ -154,10 +154,9 @@ void LastFmServiceCollection::slotAddNeighboursLoved()
-         case QNetworkReply::NoError:
-         {
-             // iterate through each neighbour
--            try
-+            lastfm::XmlQuery lfm;
-+            if( lfm.parse( m_jobs[ "user.getNeighbours" ]->readAll() ) )
-             {
--                lastfm::XmlQuery lfm( m_jobs[ "user.getNeighbours" ]->readAll() );
--
-                 foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children( "user" ) )
-                 {
-                     const QString name = e[ "name" ].text();
-@@ -168,9 +167,10 @@ void LastFmServiceCollection::slotAddNeighboursLoved()
-                     addTrack( trackPtr );
-                 }
- 
--            } catch( lastfm::ws::ParseError& e )
-+            }
-+            else
-             {
--                debug() << "Got exception in parsing from last.fm:" << e.what();
-+                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-             }
-             break;
-         }
-@@ -195,15 +195,14 @@ void LastFmServiceCollection::slotAddNeighboursPersonal()
-         case QNetworkReply::NoError:
-         {
-             // iterate through each neighbour
--            try
-+            if( !m_jobs[ "user.getNeighbours" ] )
-+            {
-+                debug() << "BAD! got no result object";
-+                return;
-+            }
-+            lastfm::XmlQuery lfm;
-+            if( lfm.parse( m_jobs[ "user.getNeighbours" ]->readAll() ) )
-             {
--                if( !m_jobs[ "user.getNeighbours" ] )
--                {
--                    debug() << "BAD! got no result object";
--                    return;
--                }
--                lastfm::XmlQuery lfm( m_jobs[ "user.getNeighbours" ]->readAll() );
--
-                 // iterate through each neighbour
-                 foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children( "user" ) )
-                 {
-@@ -218,9 +217,10 @@ void LastFmServiceCollection::slotAddNeighboursPersonal()
- 
-                 // should be safe, as both slots SHOULD get called before we return to the event loop...
-                 m_jobs[ "user.getNeighbours" ]->deleteLater();
--            } catch( lastfm::ws::ParseError& e )
-+            }
-+            else
-             {
--                debug() << "Got exception in parsing from last.fm:" << e.what();
-+                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-             }
-             break;
-         }
-@@ -248,10 +248,9 @@ void LastFmServiceCollection::slotAddFriendsLoved()
-     {
-         case QNetworkReply::NoError:
-         {
--            try
-+            lastfm::XmlQuery lfm;
-+            if( lfm.parse( m_jobs[ "user.getFriends" ]->readAll() ) )
-             {
--                lastfm::XmlQuery lfm( m_jobs[ "user.getFriends" ]->readAll() );
--
-                 foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children( "user" ) )
-                 {
-                     const QString name = e[ "name" ].text();
-@@ -261,9 +260,10 @@ void LastFmServiceCollection::slotAddFriendsLoved()
-                     addTrack( trackPtr );
-                 }
- 
--            } catch( lastfm::ws::ParseError& e )
-+            }
-+            else
-             {
--                debug() << "Got exception in parsing from last.fm:" << e.what();
-+                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-             }
-             break;
-         }
-@@ -293,10 +293,9 @@ void LastFmServiceCollection::slotAddFriendsPersonal()
-     {
-         case QNetworkReply::NoError:
-         {
--            try
-+            lastfm::XmlQuery lfm;
-+            if( lfm.parse( m_jobs[ "user.getFriends" ]->readAll() ) )
-             {
--                lastfm::XmlQuery lfm( m_jobs[ "user.getFriends" ]->readAll() );
--
-                 foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children( "user" ) )
-                 {
-                     const QString name = e[ "name" ].text();
-@@ -306,9 +305,10 @@ void LastFmServiceCollection::slotAddFriendsPersonal()
-                     addTrack( trackPtr );
-                 }
- 
--            } catch( lastfm::ws::ParseError& e )
-+            }
-+            else
-             {
--                debug() << "Got exception in parsing from last.fm:" << e.what();
-+                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-             }
-             break;
-         }
-diff --git a/src/services/lastfm/LastFmServiceSettings.cpp b/src/services/lastfm/LastFmServiceSettings.cpp
-index 2eff71e51dc30605b4d395323a01e24b8fa25d1e..9f67559b79fb218d4c5dba769fe98dcf5cea4b8b 100644
---- a/src/services/lastfm/LastFmServiceSettings.cpp
-+++ b/src/services/lastfm/LastFmServiceSettings.cpp
-@@ -23,9 +23,9 @@
- #include "NetworkAccessManagerProxy.h"
- #include "ui_LastFmConfigWidget.h"
- 
--#include <lastfm/Audioscrobbler> // from liblastfm
-+#include <lastfm/Audioscrobbler.h> // from liblastfm
- #include <lastfm/ws.h>
--#include <lastfm/XmlQuery>
-+#include <lastfm/XmlQuery.h>
- 
- #include <QCryptographicHash>
- #include <QNetworkAccessManager>
-@@ -100,7 +100,7 @@ LastFmServiceSettings::testLogin()
-     m_configDialog->testLogin->setText( i18n( "Testing..." ) );
-     // set the global static Lastfm::Ws stuff
-     lastfm::ws::ApiKey = Amarok::lastfmApiKey();
--    lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
-+    lastfm::ws::SharedSecret = Amarok::lastfmApiSharedSecret();
-     lastfm::ws::Username = qstrdup( m_configDialog->kcfg_ScrobblerUsername->text().toLatin1().data() );
-     if( lastfm::nam() != The::networkAccessManager() )
-         lastfm::setNetworkAccessManager( The::networkAccessManager() );
-@@ -126,7 +126,8 @@ LastFmServiceSettings::onAuthenticated()
- {
-     DEBUG_BLOCK
- 
--    lastfm::XmlQuery lfm = lastfm::XmlQuery( m_authQuery->readAll() );
-+    lastfm::XmlQuery lfm;
-+    lfm.parse( m_authQuery->readAll() );
- 
-     switch( m_authQuery->error() )
-     {
-diff --git a/src/services/lastfm/LastFmTreeModel.h b/src/services/lastfm/LastFmTreeModel.h
-index ac171a57a36ec6bb5443035b11bea77e4ae94720..3aa2061afce8bb6c57e1a7f1cf0717af8f52a7d1 100644
---- a/src/services/lastfm/LastFmTreeModel.h
-+++ b/src/services/lastfm/LastFmTreeModel.h
-@@ -22,7 +22,7 @@
- #include "core/meta/Meta.h"
- #include "WeightedStringList.h"
- 
--#include <lastfm/User>
-+#include <lastfm/User.h>
- 
- #include <QAbstractItemModel>
- #include <QHash>
-@@ -136,7 +136,7 @@ private:
-     LastFmTreeItem *m_myTopArtists;
- 
-     QString m_userName;
--    lastfm::AuthenticatedUser m_user;
-+    lastfm::User m_user;
- 
-     QStringList m_friends;
-     QStringList m_neighbors;
-diff --git a/src/services/lastfm/LastFmTreeModel.cpp b/src/services/lastfm/LastFmTreeModel.cpp
-index 2d94d67c5fe10bfc1abba3dd9848fd1177daa518..4d47d4201bdd6bfc33ff58a4c94d75ff6a70ec46 100644
---- a/src/services/lastfm/LastFmTreeModel.cpp
-+++ b/src/services/lastfm/LastFmTreeModel.cpp
-@@ -26,8 +26,8 @@
- #include "AmarokMimeData.h"
- 
- #include <lastfm/ws.h>
--#include <lastfm/Tag>
--#include <lastfm/XmlQuery>
-+#include <lastfm/Tag.h>
-+#include <lastfm/XmlQuery.h>
- 
- #include <KIcon>
- #include <KLocale>
-@@ -68,11 +68,12 @@ LastFmTreeModel::slotAddNeighbors ()
- {
-     DEBUG_BLOCK
- 
--    try
--    {
-         // Iterate over each neighbor, in two passes: 1) Get data 2) Sort data, store in model
- 
--        lastfm::XmlQuery lfm( m_jobs[ "getNeighbours" ]->readAll() );
-+    lastfm::XmlQuery lfm;
-+    lfm.parse( m_jobs[ "getNeighbours" ]->readAll() );
-+    if( lfm.parseError().enumValue() == lastfm::ws::NoError )
-+    {
-         foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children ( "user" ) )
-         {
-             const QString name = e[ "name" ].text();
-@@ -88,11 +89,11 @@ LastFmTreeModel::slotAddNeighbors ()
-             appendUserStations( neighbor, name );
-         }
-         m_neighbors.sort();
-+    } else {
-+        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-+        return;
-     }
--    catch( lastfm::ws::ParseError e )
--    {
--        debug() << "Got exception in parsing from last.fm:" << e.what();
--    }
-+
-     emitRowChanged(LastFm::Neighbors);
-     m_jobs[ "getNeighbours" ]->deleteLater();
- }
-@@ -102,11 +103,11 @@ LastFmTreeModel::slotAddFriends ()
- {
-     DEBUG_BLOCK
- 
--    try
--    {
--        // Iterate over each friend, in two passes: 1) Get data 2) Sort data, store in model
-+    // Iterate over each friend, in two passes: 1) Get data 2) Sort data, store in model
- 
--        lastfm::XmlQuery lfm( m_jobs[ "getFriends" ]->readAll() );
-+    lastfm::XmlQuery lfm;
-+    if( lfm.parse( m_jobs[ "getFriends" ]->readAll() ) )
-+    {
-         foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children ( "user" ) )
-         {
-             const QString name = e[ "name" ].text();
-@@ -123,11 +124,11 @@ LastFmTreeModel::slotAddFriends ()
-             appendUserStations( afriend, name );
-         }
-         m_friends.sort();
-+    } else {
-+        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-+        return;
-     }
--    catch( lastfm::ws::ParseError e )
--    {
--        debug() << "Got exception in parsing from last.fm:" << e.what();
--    }
-+
-     emitRowChanged(LastFm::Friends);
-     m_jobs[ "getFriends" ]->deleteLater();
- }
-@@ -137,10 +138,9 @@ LastFmTreeModel::slotAddTopArtists ()
- {
-     DEBUG_BLOCK
-     WeightedStringList list;
--    try
-+    lastfm::XmlQuery lfm;
-+    if( lfm.parse( m_jobs[ "getTopArtists" ]->readAll() ) )
-     {
--        lastfm::XmlQuery lfm( m_jobs[ "getTopArtists" ]->readAll() );
--
-         foreach( const lastfm::XmlQuery &e, lfm[ "topartists" ].children ( "artist" ) )
-         {
-             const QString name = e[ "name" ].text();
-@@ -158,9 +158,10 @@ LastFmTreeModel::slotAddTopArtists ()
-             m_myTopArtists->appendChild ( artist );
-         }
- 
--    } catch( lastfm::ws::ParseError e )
-+    }
-+    else
-     {
--        debug() << "Got exception in parsing from last.fm:" << e.what();
-+        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-     }
-     emitRowChanged(LastFm::TopArtists);
-     m_jobs[ "getTopArtists" ]->deleteLater();
-diff --git a/src/services/lastfm/ScrobblerAdapter.h b/src/services/lastfm/ScrobblerAdapter.h
-index 67ed73b291cef61ee37b0ddae28ba1eadfd6304d..b276837c18b2181c1d7aba1674b878bfbf308e3b 100644
---- a/src/services/lastfm/ScrobblerAdapter.h
-+++ b/src/services/lastfm/ScrobblerAdapter.h
-@@ -20,8 +20,8 @@
- 
- #include "core/meta/Meta.h"
- 
--#include <lastfm/Audioscrobbler>
--#include <lastfm/Track>
-+#include <lastfm/Audioscrobbler.h>
-+#include <lastfm/Track.h>
- 
- #include <QVariant>
- 
-diff --git a/src/services/lastfm/biases/LastFmBias.cpp b/src/services/lastfm/biases/LastFmBias.cpp
-index b011b3299f98d851109d3d9ba52e6fd09855dcff..52307a4aa9ff48adf6c06b18b719717601494515 100644
---- a/src/services/lastfm/biases/LastFmBias.cpp
-+++ b/src/services/lastfm/biases/LastFmBias.cpp
-@@ -34,9 +34,8 @@
- #include "core/collections/QueryMaker.h"
- #include "core-impl/collections/support/CollectionManager.h"
- 
--#include "lastfm/Artist"
--#include "lastfm/ws.h"
--#include "lastfm/XmlQuery"
-+#include <lastfm/Artist.h>
-+#include <lastfm/ws.h>
- 
- #include <QLabel>
- #include <QComboBox>
-diff --git a/src/services/lastfm/biases/WeeklyTopBias.cpp b/src/services/lastfm/biases/WeeklyTopBias.cpp
-index df6dd6681f05d95a0e281d6e82224de2bbf001e6..2deb9ccba66f7ec0df36225506acea2e4f30905b 100644
---- a/src/services/lastfm/biases/WeeklyTopBias.cpp
-+++ b/src/services/lastfm/biases/WeeklyTopBias.cpp
-@@ -34,9 +34,9 @@
- #include "core/collections/QueryMaker.h"
- #include "core-impl/collections/support/CollectionManager.h"
- 
--#include "lastfm/Artist"
--#include "lastfm/ws.h"
--#include "lastfm/XmlQuery"
-+#include <lastfm/Artist.h>
-+#include <lastfm/ws.h>
-+#include <lastfm/XmlQuery.h>
- 
- #include <QNetworkReply>
- 
-@@ -371,10 +371,9 @@ Dynamic::WeeklyTopBias::weeklyArtistQueryFinished()
-     }
- 
- 
--    try
-+    lastfm::XmlQuery lfm;
-+    if( lfm.parse( reply->readAll() ) )
-     {
--        lastfm::XmlQuery lfm( reply->readAll() );
--
-         // debug() << "got response:" << lfm;
-         QStringList artists;
-         for( int i = 0; i < lfm[ "weeklyartistchart" ].children( "artist" ).size(); i++ )
-@@ -398,10 +397,10 @@ Dynamic::WeeklyTopBias::weeklyArtistQueryFinished()
-             warning() << "Got a reply for a week"<<week<<"that was not requested.";
-             return;
-         }
--
--    } catch( lastfm::ws::ParseError& e )
-+    }
-+    else
-     {
--        debug() << "caught exception parsing weekly artist chart.";
-+        debug() << "failed to parse weekly artist chart.";
-     }
- 
-     reply->deleteLater();
-diff --git a/src/services/lastfm/meta/LastFmMeta.h b/src/services/lastfm/meta/LastFmMeta.h
-index f7b93c14c92c0bebf99d165656a0e34f8b991cc0..7d64a3fa5c6f6cbe3f0cc5b26881a4996321938a 100644
---- a/src/services/lastfm/meta/LastFmMeta.h
-+++ b/src/services/lastfm/meta/LastFmMeta.h
-@@ -24,7 +24,7 @@
- #include "ServiceMetaBase.h" // for the SourceInfoProvider
- 
- 
--#include <lastfm/Track>
-+#include <lastfm/Track.h>
- 
- 
- #include <QObject>
-diff --git a/src/services/lastfm/meta/LastFmMeta.cpp b/src/services/lastfm/meta/LastFmMeta.cpp
-index d8f52845cb801d8ae940bc1bca77c7281ef18379..220d929977d28c8183db9965cecfc1a80039fe08 100644
---- a/src/services/lastfm/meta/LastFmMeta.cpp
-+++ b/src/services/lastfm/meta/LastFmMeta.cpp
-@@ -41,7 +41,7 @@
- #include <QWeakPointer>
- #include <QUrl>
- 
--#include <lastfm/Track>
-+#include <lastfm/Track.h>
- 
- namespace LastFm {
- 
-@@ -451,8 +451,7 @@ Track::love()
-     DEBUG_BLOCK
- 
-     debug() << "info:" << d->lastFmTrack.artist() << d->lastFmTrack.title();
--    d->wsReply = lastfm::MutableTrack( d->lastFmTrack ).love();
--    connect( d->wsReply, SIGNAL( finished() ), this, SLOT( slotWsReply() ) );
-+    lastfm::MutableTrack( d->lastFmTrack ).love();
- }
- 
- void
-@@ -477,9 +476,9 @@ void Track::slotResultReady()
- {
-     if( d->trackFetch->error() == QNetworkReply::NoError )
-     {
--        try
-+        lastfm::XmlQuery lfm;
-+        if( lfm.parse( d->trackFetch->readAll() ) )
-         {
--            lastfm::XmlQuery lfm( d->trackFetch->readAll() );
-             QString id = lfm[ "track" ][ "id" ].text();
-             QString streamable = lfm[ "track" ][ "streamable" ].text();
-             if( streamable.toInt() == 1 )
-@@ -487,9 +486,10 @@ void Track::slotResultReady()
-             else
-                 init();
- 
--        } catch( lastfm::ws::ParseError& e )
-+        }
-+        else
-         {
--            debug() << "Got exception in parsing from last.fm:" << e.what();
-+            debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-         }
-     } else
-     {
-diff --git a/src/services/lastfm/meta/LastFmMeta_p.h b/src/services/lastfm/meta/LastFmMeta_p.h
-index c2d88ac79a4dd0fe59b9f889baf72c879833f0d3..caf954a1e1acbf220ce8efa9d16db2a71cf4bbb3 100644
---- a/src/services/lastfm/meta/LastFmMeta_p.h
-+++ b/src/services/lastfm/meta/LastFmMeta_p.h
-@@ -26,10 +26,10 @@
- #include "core/statistics/StatisticsProvider.h"
- #include "core-impl/statistics/providers/tag/TagStatisticsProvider.h"
- 
--#include <lastfm/Track>
-+#include <lastfm/Track.h>
- #include <lastfm/ws.h>
--#include <lastfm/RadioTuner>
--#include <lastfm/XmlQuery>
-+#include <lastfm/RadioTuner.h>
-+#include <lastfm/XmlQuery.h>
- 
- #include <kio/job.h>
- #include <kio/jobclasses.h>
-@@ -144,26 +144,24 @@ class Track::Private : public QObject
-                 return;
-             if( m_userFetch->error() == QNetworkReply::NoError )
-             {
--                try
-+                lastfm::XmlQuery lfm;
-+                if( !lfm.parse( m_userFetch->readAll() ) )
-                 {
--                    lastfm::XmlQuery lfm( m_userFetch->readAll() );
--                    albumUrl = lfm[ "track" ][ "album" ][ "url" ].text();
--                    trackUrl = lfm[ "track" ][ "url" ].text();
--                    artistUrl = lfm[ "track" ][ "artist" ][ "url" ].text();
--
--                    notifyObservers();
-+                    debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
-+                    return;
-+                }
-+                albumUrl = lfm[ "track" ][ "album" ][ "url" ].text();
-+                trackUrl = lfm[ "track" ][ "url" ].text();
-+                artistUrl = lfm[ "track" ][ "artist" ][ "url" ].text();
- 
--                    imageUrl = lfm[ "track" ][ "album" ][ "image size=large" ].text();
-+                notifyObservers();
- 
--                    if( !imageUrl.isEmpty() )
--                    {
--                        KIO::Job* job = KIO::storedGet( KUrl( imageUrl ), KIO::Reload, KIO::HideProgressInfo );
--                        connect( job, SIGNAL( result( KJob* ) ), this, SLOT( fetchImageFinished( KJob* ) ) );
--                    }
-+                imageUrl = lfm[ "track" ][ "album" ][ "image size=large" ].text();
- 
--                } catch( lastfm::ws::ParseError& e )
-+                if( !imageUrl.isEmpty() )
-                 {
--                    debug() << "Got exception in parsing from last.fm:" << e.what();
-+                    KIO::Job* job = KIO::storedGet( KUrl( imageUrl ), KIO::Reload, KIO::HideProgressInfo );
-+                    connect( job, SIGNAL( result( KJob* ) ), this, SLOT( fetchImageFinished( KJob* ) ) );
-                 }
-             }
- 
-diff --git a/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h b/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h
-index 1c464cc2635c7d614eab48ca5e4e156c67870f04..e9b63271c77d3420cd8eeb5eb19d1152b23c319f 100644
---- a/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h
-+++ b/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h
-@@ -25,8 +25,9 @@
- #include "core/meta/Meta.h"
- #include "core/capabilities/MultiPlayableCapability.h"
- 
--#include <lastfm/Track>
--#include <lastfm/RadioTuner>
-+#include <lastfm/Track.h>
-+#include <lastfm/RadioStation.h>
-+#include <lastfm/RadioTuner.h>
- #include <lastfm/ws.h>
- 
- #include <KLocale>
-@@ -55,24 +56,23 @@ class MultiPlayableCapabilityImpl : public Capabilities::MultiPlayableCapability
-         {
-             DEBUG_BLOCK
-             m_tuner = new lastfm::RadioTuner( lastfm::RadioStation( m_track->uidUrl() ) );
--            
-+
-             connect( m_tuner, SIGNAL( trackAvailable() ), this, SLOT( slotNewTrackAvailable() ) );
--            connect( m_tuner, SIGNAL( error( lastfm::ws::Error ) ), this, SLOT( error( lastfm::ws::Error ) ) );
-+            connect( m_tuner, SIGNAL( error(lastfm::ws::Error,QString) ), this, SLOT( error( lastfm::ws::Error ) ) );
-         }
--        
-+
-         virtual void fetchNext()
-         {
-             DEBUG_BLOCK
-             m_currentTrack = m_tuner->takeNextTrack();
-             m_track->setTrackInfo( m_currentTrack );
--
-         }
--        
-+
-         using Observer::metadataChanged;
-         virtual void metadataChanged( Meta::TrackPtr track )
-         {
-             const LastFm::TrackPtr ltrack = LastFm::TrackPtr::dynamicCast( track );
--            
-+
-             if( ltrack.isNull() )
-                 return;
- 
-@@ -94,7 +94,7 @@ class MultiPlayableCapabilityImpl : public Capabilities::MultiPlayableCapability
-                 m_track->setTrackInfo( m_currentTrack );
-             }
-         }
--        
-+
-         virtual void skip()
-         {
-             fetchNext();
-diff --git a/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp b/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp
-index 4ae73d892cef3d4a41662f7ed15849ae773c16e3..689323cc753a3c693bc09870ea1a77e2574ec9a7 100644
---- a/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp
-+++ b/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp
-@@ -27,10 +27,6 @@
- #include "EngineController.h"
- #include "LastFmEventXmlParser.h"
- 
--// LastFm
--#include <lastfm/XmlQuery>
--#include <lastfm/ws.h>
--
- // KDE
- #include <KDateTime>
- 
-diff --git a/src/core/support/Amarok.h b/src/core/support/Amarok.h
-index c9852154dee74fb372bae435fdeefa92003d41b1..d8c91e789d02b204202c8a99b9459b8d10b3d90d 100644
---- a/src/core/support/Amarok.h
-+++ b/src/core/support/Amarok.h
-@@ -203,6 +203,7 @@ namespace Amarok
- 
-     inline const char* discogsApiKey() { return "91734dd989"; }
-     inline const char* lastfmApiKey() { return "402d3ca8e9bc9d3cf9b85e1202944ca5"; }
-+    inline const char* lastfmApiSharedSecret() { return "fe0dcde9fcd14c2d1d50665b646335e9"; }
-     inline const char* yahooBossApiKey() { return "oQepTNrV34G9Satb1dgRZ8hdl1uhJvguDSU5Knl2Xd4ALK85knYt6ylr.FTA57XMRBA-"; }
-     inline const char* flickrApiKey() { return "9c5a288116c34c17ecee37877397fe31"; }
- }
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 0d146c58bd382b4d4f379ebedddf1630d73db369..31183e59b69cdb3c7902d49bdb93a00a7fb35053 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -129,7 +129,7 @@ if( WITH_PLAYER )
-     # macro_log_feature( STRIGI_FOUND "strigi" "Index metadata of files" "http://strigi.sourceforge.net" FALSE "" "" )
- 
-     macro_optional_find_package(LibLastFm)
--    macro_log_feature( LIBLASTFM_FOUND "liblastfm" "Enable Last.Fm service, including scrobbling, song submissions, and suggested song dynamic playlists" "http://cdn.last.fm/src/liblastfm-0.3.0.tar.bz2" FALSE "0.3" "" )
-+    macro_log_feature( LIBLASTFM_FOUND "liblastfm" "Enable Last.Fm service, including scrobbling, song submissions, and suggested song dynamic playlists" "http://cdn.last.fm/src/liblastfm-1.0.0.tar.gz" FALSE "1.0.0" "" )
-     macro_bool_to_01( LIBLASTFM_FOUND HAVE_LIBLASTFM )
- 
-     macro_optional_find_package( FFmpeg )
-diff --git a/cmake/modules/FindLibLastFm.cmake b/cmake/modules/FindLibLastFm.cmake
-index 1d863b08489e27054a049e35d2d94667646db1f7..95dddb6c082c14c7a6b14eb4501e1283106c8fcf 100644
---- a/cmake/modules/FindLibLastFm.cmake
-+++ b/cmake/modules/FindLibLastFm.cmake
-@@ -6,7 +6,7 @@
- # LIBLASTFM_FOUND, whether liblastfm was found
- 
- 
--find_path(LIBLASTFM_INCLUDE_DIR NAMES Audioscrobbler
-+find_path(LIBLASTFM_INCLUDE_DIR NAMES lastfm
-    HINTS
-    ~/usr/include
-    /opt/local/include
-diff --git a/src/LastfmReadLabelCapability.cpp b/src/LastfmReadLabelCapability.cpp
-index 385e6b9c065009b330e116e3d748b82c24f14e8d..d1fb28b6abf2dcf0cf5aaee71dedf1c5328cb59e 100644
---- a/src/LastfmReadLabelCapability.cpp
-+++ b/src/LastfmReadLabelCapability.cpp
-@@ -22,8 +22,7 @@
- #include <QMap>
- #include <QNetworkReply>
- 
--#include <lastfm/XmlQuery>
--#include <ws.h>
-+#include <lastfm/XmlQuery.h>
- #include "core/support/Amarok.h"
- 
- namespace Capabilities
-@@ -72,7 +71,8 @@ LastfmReadLabelCapability::onTagsFetched()
-     {
-         case QNetworkReply::NoError:
-         {
--            lastfm::XmlQuery lfm = m_job->readAll();
-+            lastfm::XmlQuery lfm;
-+            lfm.parse(m_job->readAll());
-             QList<lastfm::XmlQuery> tags = lfm.children( "tag" );
-             QStringList ret;
-             foreach( const lastfm::XmlQuery &child, tags )

diff --git a/amarok.spec b/amarok.spec
index f5a304a..e976d03 100644
--- a/amarok.spec
+++ b/amarok.spec
@@ -1,13 +1,19 @@
 
 Name:    amarok
 Summary: Media player
-Version: 2.5.90
-Release: 6%{?dist}
+Version: 2.5.96
+Release: 1%{?dist}
 
 # KDE e.V. may determine that future GPL versions are accepted
 License: GPLv2 or GPLv3
 Url:     http://amarok.kde.org/
-Source0: http://download.kde.org/stable/amarok/%{version}/src/amarok-%{version}.tar.bz2
+%global revision %(echo %{version} | cut -d. -f3)
+%if %{revision} >= 50
+%global stable unstable
+%else
+%global stable stable
+%endif
+Source0: http://download.kde.org/%{stable}/amarok/%{version}/src/amarok-%{version}.tar.bz2
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 # Invoke a browser on the online UserBase documentation instead of KHelpCenter
@@ -19,13 +25,10 @@ Patch0:  amarok-2.5.0-onlinedoc.patch
 ## upstream patches
 # liblastfm1 support
 # https://git.reviewboard.kde.org/r/105276/
-Patch100: amarok-liblastfm1.patch
+Patch100: amarok-2.5.96-liblastfm1.patch
 %if 0%{?fedora} > 17
 %define liblastfm1 1
 %endif
-# disable polling
-# https://projects.kde.org/projects/extragear/multimedia/amarok/repository/revisions/92fe9ac171b9920ba65adf244c7dbe23d694d209
-Patch101: changeset_r92fe9ac171b9920ba65adf244c7dbe23d694d209.diff
 
 BuildRequires: curl-devel
 BuildRequires: desktop-file-utils
@@ -52,11 +55,8 @@ BuildRequires: pkgconfig(taglib-extras) >= 1.0.1
 BuildRequires: qtscriptbindings
 Requires: qtscriptbindings%{?_isa}
 Requires: %{name}-utils = %{version}-%{release}
-Requires: kdebase-runtime%{?_kde4_version: >= %{_kde4_version}}
-%if 0%{?fedora} == 14
-# lame, see http://bugzilla.redhat.com/666173
-Requires: libmtp-hal
-%endif
+Requires: kde-runtime%{?_kde4_version: >= %{_kde4_version}}
+Requires: ifuse
 
 Requires: %{name}-libs%{?_isa} = %{version}-%{release}
 
@@ -100,7 +100,6 @@ BuildArch: noarch
 %if 0%{?liblastfm1}
 %patch100 -p1 -b .liblastfm1
 %endif
-%patch101 -p1 -b .disable_polling
 
 
 %build
@@ -189,6 +188,9 @@ fi
 
 
 %changelog
+* Thu Aug 02 2012 Rex Dieter <rdieter@fedoraproject.org> 2.5.96-1
+- 2.5.96 (2.6rc1)
+
 * Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.5.90-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 

diff --git a/changeset_r92fe9ac171b9920ba65adf244c7dbe23d694d209.diff b/changeset_r92fe9ac171b9920ba65adf244c7dbe23d694d209.diff
deleted file mode 100644
index db15949..0000000
--- a/changeset_r92fe9ac171b9920ba65adf244c7dbe23d694d209.diff
+++ /dev/null
@@ -1,100 +0,0 @@
-commit 92fe9ac171b9920ba65adf244c7dbe23d694d209
-Author: Matěj Laitl <matej@laitl.cz>
-Date:   Mon Jun 11 17:00:52 2012 +0200
-
-    MediaDeviceCache: remove polling, solid events should suffice
-    
-    This fixes a bug where Amarok (very probably needlessly) polls solid
-    for all devices every single second (!!!) just to detect whether some
-    unmounted paths become mounted or vice versa. This should not be needed
-    at all, solid should notify us about everything.
-    
-    Let's hope this doesn't cause subtle bugs, but several people already
-    tested it with success [thanks, Sam]. (probably none of them with older
-    kdelibs though)
-    
-    BUG: 289462
-    FIXED-IN: 2.7
-    REVIEW: 105221
-
-diff --git a/src/MediaDeviceCache.cpp b/src/MediaDeviceCache.cpp
-index 15583b8..c9758cd 100644
---- a/src/MediaDeviceCache.cpp
-+++ b/src/MediaDeviceCache.cpp
-@@ -54,10 +54,6 @@ MediaDeviceCache::MediaDeviceCache() : QObject()
-              this, SLOT( slotAddSolidDevice( const QString & ) ) );
-     connect( Solid::DeviceNotifier::instance(), SIGNAL( deviceRemoved( const QString & ) ),
-              this, SLOT( slotRemoveSolidDevice( const QString & ) ) );
--    connect(&m_timer, SIGNAL(timeout()), this, SLOT(slotTimeout()));
--
--    m_timer.setSingleShot(true);
--    m_timer.start(1000);
- }
- 
- MediaDeviceCache::~MediaDeviceCache()
-@@ -287,45 +283,6 @@ MediaDeviceCache::slotRemoveSolidDevice( const QString &udi )
-     emit deviceRemoved( udi );
- }
- 
--void MediaDeviceCache::slotTimeout()
--{
--    KMountPoint::List possibleMountList = KMountPoint::possibleMountPoints();
--    KMountPoint::List currentMountList = KMountPoint::currentMountPoints();
--    QList<Solid::Device> deviceList = Solid::Device::listFromType( Solid::DeviceInterface::StorageAccess );
--
--    for (KMountPoint::List::iterator it = possibleMountList.begin(); it != possibleMountList.end(); ++it) {
--        if ((*it)->mountType() == "nfs" || (*it)->mountType() == "nfs4" || 
--            (*it)->mountType() == "smb" || (*it)->mountType() == "cifs") {
--            QString path = (*it)->mountPoint();
--            bool mounted = false;
--            QString udi = QString();
--
--            foreach( const Solid::Device &device, deviceList )
--            {
--                const Solid::StorageAccess* ssa = device.as<Solid::StorageAccess>();
--                if( ssa && path == ssa->filePath())
--                    udi = device.udi();
--            }
--
--            for (KMountPoint::List::iterator it2 = currentMountList.begin(); it2 != currentMountList.end(); ++it2) {
--                if ( (*it)->mountType() == (*it2)->mountType() &&
--                     (*it)->mountPoint() == (*it2)->mountPoint() ) {
--                    mounted = true;
--                    break;
--                }
--            }
--
--            if ( m_accessibility[udi] != mounted ) {
--                m_accessibility[udi] = mounted;
--                slotAccessibilityChanged( mounted, udi);
--            }
--        }
--    }
--
--    m_timer.setSingleShot(true);
--    m_timer.start(1000);
--}
--
- void
- MediaDeviceCache::slotAccessibilityChanged( bool accessible, const QString &udi )
- {
-diff --git a/src/MediaDeviceCache.h b/src/MediaDeviceCache.h
-index a48d453..2d5288a 100644
---- a/src/MediaDeviceCache.h
-+++ b/src/MediaDeviceCache.h
-@@ -63,7 +63,6 @@ class AMAROK_EXPORT MediaDeviceCache : public QObject
-         void slotAddSolidDevice( const QString &udi );
-         void slotRemoveSolidDevice( const QString &udi );
-         void slotAccessibilityChanged( bool accessible, const QString &udi );
--        void slotTimeout();
- 
-     private:
-         QMap<QString, MediaDeviceCache::DeviceType> m_type;
-@@ -71,7 +70,6 @@ class AMAROK_EXPORT MediaDeviceCache : public QObject
-         QMap<QString, bool> m_accessibility;
-         QStringList m_volumes;
-         static MediaDeviceCache* s_instance;
--        QTimer m_timer;
- };
- 
- #endif /* AMAROK_MEDIADEVICECACHE_H */

diff --git a/sources b/sources
index e8e2764..5d833a3 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-15f84e226759958fb3e76ebf438c9fc7  amarok-2.5.90.tar.bz2
+623e1aded95ee060d9aa407b09bb9182  amarok-2.5.96.tar.bz2

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-06 18:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-06 18:31 [rpms/amarok] epel10.2: 2.5.96 (2.6rc1) Rex Dieter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox