summaryrefslogtreecommitdiffstats
path: root/jobqueue.cpp
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2009-09-25 22:48:34 -0400
committerJason A. Donenfeld <Jason@zx2c4.com>2009-09-25 22:49:54 -0400
commit7d6f8dd73aff7046fdc57b39790ae88bfb46955d (patch)
tree07e5391b6fe1b1d389d1130f19adcb63f6c4f08e /jobqueue.cpp
parentDVDDrive class. (diff)
downloadAnyRip-7d6f8dd73aff7046fdc57b39790ae88bfb46955d.tar.xz
AnyRip-7d6f8dd73aff7046fdc57b39790ae88bfb46955d.zip
Finished framework and added job stubs.
Diffstat (limited to 'jobqueue.cpp')
-rw-r--r--jobqueue.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/jobqueue.cpp b/jobqueue.cpp
new file mode 100644
index 0000000..c18ffee
--- /dev/null
+++ b/jobqueue.cpp
@@ -0,0 +1,31 @@
+#include "jobqueue.h"
+#include "job.h"
+
+#include <QDebug>
+
+JobQueue::JobQueue(QObject *parent) :
+ QObject(parent),
+ m_jobIsRunning(false)
+{
+}
+void JobQueue::addJob(Job *job)
+{
+ m_queue.enqueue(job);
+ if (!m_jobIsRunning)
+ runNextJob();
+}
+void JobQueue::runNextJob()
+{
+ if (m_queue.isEmpty())
+ return;
+ m_jobIsRunning = true;
+ Job *job = m_queue.dequeue();
+ qDebug() << "running job" << job->jobType() << "for video" << qobject_cast<Video*>(job->parent())->title();
+ connect(job, SIGNAL(completed(bool)), this, SLOT(jobCompleted()));
+ job->runJob();
+}
+void JobQueue::jobCompleted()
+{
+ m_jobIsRunning = false;
+ runNextJob();
+}