diff --git a/src/lastfm.cpp b/src/lastfm.cpp index efdc9300..c8e1f730 100644 --- a/src/lastfm.cpp +++ b/src/lastfm.cpp @@ -64,13 +64,17 @@ std::basic_string Lastfm::Title() void Lastfm::Update() { if (isReadyToTake) - { - pthread_join(itsDownloader, 0); - w->Flush(); - w->Refresh(); - isDownloadInProgress = 0; - isReadyToTake = 0; - } + Take(); +} + +void Lastfm::Take() +{ + assert(isReadyToTake); + pthread_join(itsDownloader, 0); + w->Flush(); + w->Refresh(); + isDownloadInProgress = 0; + isReadyToTake = 0; } void Lastfm::SwitchTo() @@ -84,8 +88,9 @@ void Lastfm::SwitchTo() if (hasToBeResized) Resize(); - // if something is ready to take, take it - Update(); + // get an old info if it waits + if (isReadyToTake) + Take(); Load(); diff --git a/src/lastfm.h b/src/lastfm.h index 3c09c944..d93c449f 100644 --- a/src/lastfm.h +++ b/src/lastfm.h @@ -76,6 +76,7 @@ class Lastfm : public Screen void Download(); static void *DownloadWrapper(void *); + void Take(); bool isReadyToTake; bool isDownloadInProgress; pthread_t itsDownloader;