KShare/worker/worker.hpp

56 lines
1.0 KiB
C++
Raw Normal View History

#ifndef WORKER_HPP
#define WORKER_HPP
#include <QImage>
#include <QMutex>
#include <QObject>
#include <QPixmap>
#include <QQueue>
#include <QThread>
#include <functional>
struct WorkerContext {
QPixmap pixmap;
QImage::Format targetFormat;
std::function<void(QImage)> consumer;
};
2017-05-29 23:00:08 +02:00
struct _WorkerContext {
QImage image;
2017-05-30 13:22:20 +02:00
QImage::Format targetFormat;
2017-05-29 23:00:08 +02:00
std::function<void(QImage)> consumer;
WorkerContext *underlyingThing;
2017-05-29 23:00:08 +02:00
};
class Worker : public QObject {
Q_OBJECT
public:
static void queue(WorkerContext *context);
static void init();
private:
Worker();
~Worker();
static QMutex lock;
QMutex endLock;
QThread *thr;
2017-05-29 23:00:08 +02:00
QQueue<_WorkerContext *> qqueue; // Say that ten times as fast
bool _ended;
2017-05-30 15:51:25 +02:00
void _end();
void _queue(WorkerContext *context);
bool ended();
static Worker *inst;
static QMutex workerLock;
signals:
void error(QString err);
void finished();
public slots:
void process();
2017-05-30 15:51:25 +02:00
static void end();
};
#endif // WORKER_HPP