aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/General/scrobbler/scrobbler.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/plugins/General/scrobbler/scrobbler.cpp b/src/plugins/General/scrobbler/scrobbler.cpp
index c91f4faba..8b251f354 100644
--- a/src/plugins/General/scrobbler/scrobbler.cpp
+++ b/src/plugins/General/scrobbler/scrobbler.cpp
@@ -128,19 +128,20 @@ void Scrobbler::setState(Qmmp::State state)
if(state == Qmmp::Playing && m_previousState == Qmmp::Paused)
{
qDebug("Scrobbler[%s]: resuming from %d seconds played", qPrintable(m_name), m_elapsed / 1000);
- m_time->addMSecs(m_elapsed - m_time->elapsed());
+ m_time->restart();
}
else if(state == Qmmp::Paused)
{
- m_elapsed = m_time->elapsed();
+ m_elapsed += m_time->elapsed();
qDebug("Scrobbler[%s]: pausing after %d seconds played", qPrintable(m_name), m_elapsed / 1000);
-
}
else if(state == Qmmp::Stopped && !m_song.metaData().isEmpty())
{
- int elapsed = m_time->elapsed() / 1000;
- if(((elapsed > 240) || (elapsed > int(m_song.length()/2)))
- && (m_song.length() == 0 || m_song.length() > MIN_SONG_LENGTH))
+ if(m_previousState == Qmmp::Playing)
+ m_elapsed += m_time->elapsed();
+
+ m_elapsed /= 1000; //convert to seconds
+ if((m_elapsed > 240) || (m_elapsed > int(m_song.length()/2) && m_song.length() > MIN_SONG_LENGTH))
{
m_cachedSongs << m_song;
m_cache->save(m_cachedSongs);
@@ -161,9 +162,8 @@ void Scrobbler::updateMetaData()
if(!m_song.metaData().isEmpty() && m_song.metaData() != metadata)
{
- int elapsed = m_time->elapsed() / 1000;
- if(((elapsed > 240) || (elapsed > int(m_song.length()/2)))
- && (m_song.length() == 0 || m_song.length() > MIN_SONG_LENGTH))
+ int elapsed = (m_elapsed + m_time->elapsed()) / 1000;
+ if((elapsed > 240) || (elapsed > int(m_song.length()/2) && m_song.length() > MIN_SONG_LENGTH))
{
m_cachedSongs << m_song;
m_cache->save(m_cachedSongs);
@@ -177,9 +177,10 @@ void Scrobbler::updateMetaData()
{
m_song = SongInfo(metadata, m_core->totalTime()/1000);
m_song.setTimeStamp(QDateTime::currentDateTime().toTime_t());
- m_time->restart();
sendNotification(m_song);
}
+ m_time->restart();
+ m_elapsed = 0;
}
void Scrobbler::processResponse(QNetworkReply *reply)