#pragma once
/*
- * Copyright (C) 2005-2008 Team XBMC
- * http://www.xbmc.org
+ * Copyright (C) 2005-2013 Team XBMC
+ * http://xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- * http://www.gnu.org/copyleft/gpl.html
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
*
*/
-#include "utils/Thread.h"
+#include "threads/Thread.h"
#include "IProgressCallback.h"
-#include "utils/CriticalSection.h"
+#include "threads/CriticalSection.h"
#include <vector>
#include "boost/shared_ptr.hpp"
class CBackgroundInfoLoader : public IRunnable
{
public:
- CBackgroundInfoLoader(int nThreads=-1);
+ CBackgroundInfoLoader();
virtual ~CBackgroundInfoLoader();
void Load(CFileItemList& items);
void SetObserver(IBackgroundLoaderObserver* pObserver);
void SetProgressCallback(IProgressCallback* pCallback);
virtual bool LoadItem(CFileItem* pItem) { return false; };
+ virtual bool LoadItemCached(CFileItem* pItem) { return false; };
+ virtual bool LoadItemLookup(CFileItem* pItem) { return false; };
- void StopThread(); // will actually stop all worker threads.
+ void StopThread(); // will actually stop the loader thread.
void StopAsync(); // will ask loader to stop as soon as possible, but not block
- void SetNumOfWorkers(int nThreads); // -1 means auto compute num of required threads
-
protected:
virtual void OnLoaderStart() {};
virtual void OnLoaderFinish() {};
std::vector<CFileItemPtr> m_vecItems; // FileItemList would delete the items and we only want to keep a reference.
CCriticalSection m_lock;
- bool m_bStartCalled;
+ volatile bool m_bIsLoading;
volatile bool m_bStop;
- int m_nRequestedThreads;
- int m_nActiveThreads;
+ CThread *m_thread;
IBackgroundLoaderObserver* m_pObserver;
IProgressCallback* m_pProgressCallback;
-
- std::vector<CThread *> m_workers;
};