fixed: Thumbs didn't show in the playlist (fixes #13531, #13529)
authorarnova <arnova@void.org>
Fri, 16 Nov 2012 13:58:06 +0000 (14:58 +0100)
committerarnova <arnova@void.org>
Tue, 20 Nov 2012 07:47:59 +0000 (08:47 +0100)
xbmc/music/MusicInfoLoader.cpp
xbmc/music/MusicInfoLoader.h
xbmc/music/MusicThumbLoader.cpp
xbmc/music/MusicThumbLoader.h

index 0c8c776..b8a68db 100644 (file)
@@ -34,6 +34,7 @@
 #include "utils/log.h"
 #include "Artist.h"
 #include "Album.h"
+#include "MusicThumbLoader.h"
 
 using namespace std;
 using namespace XFILE;
@@ -43,12 +44,15 @@ using namespace MUSIC_INFO;
 CMusicInfoLoader::CMusicInfoLoader() : CBackgroundInfoLoader(1)
 {
   m_mapFileItems = new CFileItemList;
+
+  m_thumbLoader = new CMusicThumbLoader();
 }
 
 CMusicInfoLoader::~CMusicInfoLoader()
 {
   StopThread();
   delete m_mapFileItems;
+  delete m_thumbLoader;
 }
 
 void CMusicInfoLoader::OnLoaderStart()
@@ -71,6 +75,9 @@ void CMusicInfoLoader::OnLoaderStart()
     m_pProgressCallback->SetProgressMax(m_pVecItems->GetFileCount());
 
   m_musicDatabase.Open();
+
+  if (m_thumbLoader)
+    m_thumbLoader->Initialize();
 }
 
 bool CMusicInfoLoader::LoadAdditionalTagInfo(CFileItem* pItem)
@@ -124,6 +131,10 @@ bool CMusicInfoLoader::LoadItem(CFileItem* pItem)
   if (pItem->m_bIsFolder || pItem->IsPlayList() || pItem->IsNFO() || pItem->IsInternetStream())
     return false;
 
+  // Get thumb for item
+  if (m_thumbLoader)
+    m_thumbLoader->LoadItem(pItem);
+
   if (pItem->HasMusicInfoTag() && pItem->GetMusicInfoTag()->Loaded())
     return true;
 
@@ -228,6 +239,9 @@ void CMusicInfoLoader::OnLoaderFinish()
     m_pVecItems->Save();
 
   m_musicDatabase.Close();
+
+  if (m_thumbLoader)
+    m_thumbLoader->Deinitialize();
 }
 
 void CMusicInfoLoader::UseCacheOnHD(const CStdString& strFileName)
index 7a5f707..0d2ba43 100644 (file)
@@ -22,6 +22,7 @@
 #include "MusicDatabase.h"
 
 class CFileItemList;
+class CMusicThumbLoader;
 
 namespace MUSIC_INFO
 {
@@ -48,5 +49,6 @@ protected:
   CMusicDatabase m_musicDatabase;
   unsigned int m_databaseHits;
   unsigned int m_tagReads;
+  CMusicThumbLoader *m_thumbLoader;
 };
 }
index a59eb2c..d371bb9 100644 (file)
@@ -45,6 +45,12 @@ void CMusicThumbLoader::Initialize()
   m_albumArt.clear();
 }
 
+void CMusicThumbLoader::Deinitialize()
+{
+  m_database->Close();
+  m_albumArt.clear();
+}
+
 void CMusicThumbLoader::OnLoaderStart()
 {
   Initialize();
@@ -52,8 +58,7 @@ void CMusicThumbLoader::OnLoaderStart()
 
 void CMusicThumbLoader::OnLoaderFinish()
 {
-  m_database->Close();
-  m_albumArt.clear();
+  Deinitialize();
 }
 
 bool CMusicThumbLoader::LoadItem(CFileItem* pItem)
index e85e33c..e3978da 100644 (file)
@@ -37,6 +37,8 @@ public:
   virtual ~CMusicThumbLoader();
   
   virtual void Initialize();
+  virtual void Deinitialize();
+
   virtual bool LoadItem(CFileItem* pItem);
   
   /*! \brief helper function to fill the art for a video library item
@@ -54,7 +56,7 @@ public:
   static bool FillThumb(CFileItem &item);
   
   static bool GetEmbeddedThumb(const std::string &path, MUSIC_INFO::EmbeddedArt &art);
-  
+
 protected:
   virtual void OnLoaderStart();
   virtual void OnLoaderFinish();