OSDN Git Service

Updated Web Updater and Elevator binaries. Now has massive code clean-up.
[lamexp/LameXP.git] / src / Thread_FileAnalyzer_Task.h
index d328180..6897520 100644 (file)
 
 #include <QRunnable>
 #include <QReadWriteLock>
+#include <QWaitCondition>
 #include <QStringList>
+#include <QMutex>
+#include <QSemaphore>
 
 class AudioFileModel;
 class QFile;
@@ -44,19 +47,25 @@ public:
        ~AnalyzeTask(void);
        
        static void reset(void);
-       static void getAdditionalFiles(QStringList &fileList);
+       static int getAdditionalFiles(QStringList &fileList);
        static unsigned int filesAccepted(void);
        static unsigned int filesRejected(void);
        static unsigned int filesDenied(void);
        static unsigned int filesDummyCDDA(void);
        static unsigned int filesCueSheet(void);
 
+       //Wait until there is a free slot in the queue
+       static bool waitForFreeSlot(volatile bool *abortFlag);
+
 signals:
        void fileSelected(const QString &fileName);
        void fileAnalyzed(const AudioFileModel &file);
+       void progressValChanged(unsigned int);
+       void progressMaxChanged(unsigned int);
 
 protected:
        void run(void);
+       void run_ex(void);
 
 private:
        enum cover_t
@@ -92,16 +101,21 @@ private:
        
        volatile bool *m_abortFlag;
 
+       static QMutex s_waitMutex;
+       static QWaitCondition s_waitCond;
+       static QSet<unsigned int> s_threadIdx_running;
+       static unsigned int s_threadIdx_next;
+       
+       static QSemaphore s_semaphore;
+
        static QReadWriteLock s_lock;
-       static unsigned __int64 s_threadIdx_created;
-       static unsigned __int64 s_threadIdx_finished;
        static unsigned int s_filesAccepted;
        static unsigned int s_filesRejected;
        static unsigned int s_filesDenied;
        static unsigned int s_filesDummyCDDA;
        static unsigned int s_filesCueSheet;
-       static QStringList s_recentlyAdded;
+       static QSet<QString> s_recentlyAdded;
        static QStringList s_additionalFiles;
-
+       
        static unsigned __int64 makeThreadIdx(void);
 };