00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #include <QDebug>
00026 #include <QMutex>
00027 #include <QWaitCondition>
00028 #include <QApplication>
00029
00030 #include <qvcore/qvworker.h>
00031
00032 #include <qvgui/qvimagecanvas.h>
00033
00034 QVWorker::QVWorker(QString name):QVPropertyHolder(name),
00035 cpuStat(), numIterations(0), status(Running), inited(false), initedParam(), errorStatus(), cameras()
00036 {
00037 qDebug() << "QVWorker::QVWorker(" << name << ")";
00038 Q_ASSERT_X(qvApp != NULL, "QVWorker::QVWorker()", "QVApplication doesn't exists");
00039 addProperty<bool>("print stats", inputFlag, false, "Enables realtime stats console output for worker");
00040 cpuStat.printStatsToConsole(getPropertyValue<bool>("print stats"));
00041 qDebug() << "QVWorker::QVWorker(" << name << ") <- return";
00042 };
00043
00044 QVWorker::~QVWorker()
00045 {
00046 qDebug() << "QVWorker::~QVWorker()";
00047 qDebug() << "QVWorker::~QVWorker() <- return";
00048 }
00049
00050
00051 void QVWorker::run()
00052 {
00053 qDebug() << "QVWorker::run()";
00054
00055 while(1) {
00056 iterate();
00057 if(status == Finished) break;
00058 }
00059 unlink();
00060
00061 qDebug() << "QVWorker::run() <- return";
00062 }
00063
00064
00065 void QVWorker::iterate()
00066 {
00067 qDebug() << "QVWorker::iterate()";
00068 qDebug() << "QVWorker::iterate(): iteration" << numIterations;
00069
00070
00071
00072
00073
00074 cpuStat.step();
00075
00076 switch (status)
00077 {
00078 case RunningOneStep:
00079 qDebug() << "QVWorker::iterate(): RunningOneStep";
00080 status = Paused;
00081
00082 case Running:
00083 {
00084 emit startIteration();
00085 timeFlag("System");
00086 readInputProperties();
00087 worker();
00088 writeOutputProperties();
00089 numIterations++;
00090 emit endIteration();
00091 break;
00092 }
00093
00094 case Paused:
00095 qDebug() << "QVWorker::iterate(): Paused";
00096 {
00097
00098
00099
00100
00101
00102
00103
00104
00105 }
00106 break;
00107
00108 case Finished:
00109 qDebug() << "QVWorker::iterate(): Finished";
00110 break;
00111 }
00112
00113 qDebug() << "QVWorker::iterate() <- return";
00114 }
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125