[amarok] don't query kwallet for lastfm credentials on every track change (kde#278177)

Rex Dieter rdieter at fedoraproject.org
Sun Jul 24 14:13:05 UTC 2011


commit 1c1351f473228184dcf2efe2c0d1d398ca997370
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Sun Jul 24 09:18:24 2011 -0500

    don't query kwallet for lastfm credentials on every track change (kde#278177)

 amarok-2.4.2-kde278177.patch |  158 ++++++++++++++++++++++++++++++++++++++++++
 amarok.spec                  |    8 ++-
 2 files changed, 165 insertions(+), 1 deletions(-)
---
diff --git a/amarok-2.4.2-kde278177.patch b/amarok-2.4.2-kde278177.patch
new file mode 100644
index 0000000..8649215
--- /dev/null
+++ b/amarok-2.4.2-kde278177.patch
@@ -0,0 +1,158 @@
+commit 8c9728264176b9da37b7118a700ae383a98a4d04
+Author: Sam Lade <sam at sentynel.com>
+Date:   Sat Jul 23 23:25:00 2011 +0100
+
+    Prevent KWallet being queried on every track change by last.fm
+    
+    Just look up the scrobbleComposer value from config directly,
+    rather than creating a whole lastFmServiceConfig object just to get it
+    BUG:278177
+    FIXED-IN:2.4.3
+
+diff --git a/src/services/lastfm/LastFmService.cpp b/src/services/lastfm/LastFmService.cpp
+index cef152c..ce0b6ec 100644
+--- a/src/services/lastfm/LastFmService.cpp
++++ b/src/services/lastfm/LastFmService.cpp
+@@ -182,6 +182,7 @@ LastFmService::LastFmService( LastFmServiceFactory* parent, const QString &name,
+       m_userinfo( 0 ),
+       m_userName( username ),
+       m_sessionKey( sessionKey ),
++      m_password( password ),
+       m_scrobbleComposer( scrobbleComposer ),
+       m_userNameArray( 0 ),
+       m_sessionKeyArray( 0 )
+@@ -221,9 +222,6 @@ LastFmService::~LastFmService()
+ void
+ LastFmService::init()
+ {
+-    LastFmServiceConfig config;
+-    const QString password = config.password();
+-    const QString sessionKey = config.sessionKey();
+     // set the global static Lastfm::Ws stuff
+     lastfm::ws::ApiKey = Amarok::lastfmApiKey();
+     lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
+@@ -237,10 +235,10 @@ LastFmService::init()
+ 
+     debug() << "username:" << QString( QUrl::toPercentEncoding( lastfm::ws::Username ) );
+ 
+-    const QString authToken = md5( QString( "%1%2" ).arg( m_userName ).arg( md5( password.toUtf8() ) ).toUtf8() );
++    const QString authToken = md5( QString( "%1%2" ).arg( m_userName ).arg( md5( m_password.toUtf8() ) ).toUtf8() );
+ 
+     // now authenticate w/ last.fm and get our session key if we don't have one
+-    if( sessionKey.isEmpty() )
++    if( m_sessionKey.isEmpty() )
+     {
+         debug() << "got no saved session key, authenticating with last.fm";
+         QMap<QString, QString> query;
+@@ -254,9 +252,8 @@ LastFmService::init()
+     } else
+     {
+         debug() << "using saved sessionkey from last.fm";
+-        m_sessionKeyArray = qstrdup( sessionKey.toLatin1().data() );
++        m_sessionKeyArray = qstrdup( m_sessionKey.toLatin1().data() );
+         lastfm::ws::SessionKey = m_sessionKeyArray;
+-        m_sessionKey = sessionKey;
+ 
+         if( m_scrobble )
+             m_scrobbler = new ScrobblerAdapter( this, "ark" );
+diff --git a/src/services/lastfm/LastFmService.h b/src/services/lastfm/LastFmService.h
+index 2b622bf..ac13d41 100644
+--- a/src/services/lastfm/LastFmService.h
++++ b/src/services/lastfm/LastFmService.h
+@@ -116,6 +116,7 @@ private:
+ 
+     QString m_userName;
+     QString m_sessionKey;
++    QString m_password;
+     QString m_station;
+     QString m_age;
+     QString m_gender;
+diff --git a/src/services/lastfm/ScrobblerAdapter.cpp b/src/services/lastfm/ScrobblerAdapter.cpp
+index 5bbb6ec..513560d 100644
+--- a/src/services/lastfm/ScrobblerAdapter.cpp
++++ b/src/services/lastfm/ScrobblerAdapter.cpp
+@@ -81,8 +81,6 @@ ScrobblerAdapter::trackPlaying( Meta::TrackPtr track )
+     {
+         m_lastSaved = m_lastPosition; // HACK engineController is broken :(
+ 
+-        LastFmServiceConfig config;
+-    
+         debug() << "track type:" << track->type();
+         const bool isRadio = ( track->type() == "stream/lastfm" );
+         
+@@ -92,8 +90,8 @@ ScrobblerAdapter::trackPlaying( Meta::TrackPtr track )
+         
+         m_current.setTitle( track->name() );
+         m_current.setDuration( track->length() / 1000 );
+-        debug() << "scrobbleComposer: " << config.scrobbleComposer();
+-        if( track->composer() && config.scrobbleComposer() )
++        debug() << "scrobbleComposer: " << scrobbleComposer();
++        if( track->composer() && scrobbleComposer() )
+             m_current.setArtist( track->composer()->name() );
+         else if( track->artist() )
+             m_current.setArtist( track->artist()->name() );
+@@ -133,12 +131,10 @@ void
+ ScrobblerAdapter::trackMetadataChanged( Meta::TrackPtr track )
+ {
+     DEBUG_BLOCK
+-    LastFmServiceConfig config;
+-
+     // if we are listening to a stream, take the new metadata as a "new track" and, if we have enough info, save it for scrobbling
+     if( track &&
+         ( track->type() == "stream" && ( !track->name().isEmpty() 
+-          && ( track->artist() || ( track->composer() && config.scrobbleComposer() ) ) ) ) )
++          && ( track->artist() || ( track->composer() && scrobbleComposer() ) ) ) ) )
+         // got a stream, and it has enough info to be a new track
+     {
+         // don't use checkScrobble as we don't need to check timestamps, it is a stream
+@@ -150,12 +146,12 @@ ScrobblerAdapter::trackMetadataChanged( Meta::TrackPtr track )
+                     
+         m_current.setTitle( track->name() );
+         m_current.setArtist(
+-              track->composer() && config.scrobbleComposer()
++              track->composer() && scrobbleComposer()
+             ? track->composer()->name()
+             : track->artist()->name()
+         );
+         m_current.stamp();
+-        
++
+         m_current.setSource( lastfm::Track::NonPersonalisedBroadcast );
+ 
+         if( !m_current.isNull() )
+@@ -227,11 +223,9 @@ ScrobblerAdapter::loveTrack( Meta::TrackPtr track ) // slot
+ 
+     if( track )
+     {
+-        LastFmServiceConfig config;
+-
+         lastfm::MutableTrack trackInfo;
+         trackInfo.setTitle( track->name() );
+-        if( track->composer() && config.scrobbleComposer() )
++        if( track->composer() && scrobbleComposer() )
+             trackInfo.setArtist( track->composer()->name() );
+         else if( track->artist() )
+             trackInfo.setArtist( track->artist()->name() );
+@@ -280,3 +274,10 @@ ScrobblerAdapter::checkScrobble()
+     }
+     resetVariables();
+ }
++
++bool
++ScrobblerAdapter::scrobbleComposer()
++{
++    KConfigGroup config = KGlobal::config()->group( LastFmServiceConfig::configSectionName() );
++    return config.readEntry( "scrobbleComposer", false );
++}
+diff --git a/src/services/lastfm/ScrobblerAdapter.h b/src/services/lastfm/ScrobblerAdapter.h
+index 5ee77d7..dd67415 100644
+--- a/src/services/lastfm/ScrobblerAdapter.h
++++ b/src/services/lastfm/ScrobblerAdapter.h
+@@ -50,6 +50,7 @@ private slots:
+ private:
+     void resetVariables();
+     void checkScrobble();
++    bool scrobbleComposer();
+ 
+     lastfm::Audioscrobbler *m_scrobbler;
+     lastfm::MutableTrack m_current;
diff --git a/amarok.spec b/amarok.spec
index ca431dd..9e3daeb 100644
--- a/amarok.spec
+++ b/amarok.spec
@@ -2,7 +2,7 @@
 Name:    amarok
 Summary: Media player
 Version: 2.4.2
-Release: 1%{?dist}
+Release: 2%{?dist}
 
 Group: 	 Applications/Multimedia
 # KDE e.V. may determine that future GPL versions are accepted
@@ -14,6 +14,8 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 #Patch50: amarok-2.2.1.90-qtscript_not_required.patch
 
 ## upstream patches
+# http://commits.kde.org/amarok/8c9728264176b9da37b7118a700ae383a98a4d04
+Patch100: amarok-2.4.2-kde278177.patch
 
 BuildRequires: curl-devel
 BuildRequires: desktop-file-utils
@@ -82,6 +84,7 @@ Obsoletes: amarok-utilities < 2.0.96
 %setup -q 
 
 #patch50 -p1 -b .qtscript_not_required
+%patch100 -p1 -b .kde278177
 
 
 %build
@@ -179,6 +182,9 @@ fi
 
 
 %changelog
+* Sun Jul 24 2011 Rex Dieter <rdieter at fedoraproject.org> 2.4.2-2
+- don't query kwallet for lastfm credentials on every track change (kde#278177)
+
 * Fri Jul 22 2011 Rex Dieter <rdieter at fedoraproject.org> 2.4.2-1
 - 2.4.2
 


More information about the scm-commits mailing list