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 void QVWorker::run()
00051 {
00052 qDebug() << "QVWorker::run()";
00053
00054 while(1) {
00055 iterate();
00056 if(status == Finished) break;
00057 }
00058 unlink();
00059
00060 qDebug() << "QVWorker::run() <- return";
00061 }
00062
00063
00064 void QVWorker::iterate()
00065 {
00066 qDebug() << "QVWorker::iterate()";
00067 qDebug() << "QVWorker::iterate(): iteration" << numIterations;
00068
00069
00070
00071
00072
00073 cpuStat.step();
00074
00075 switch (status)
00076 {
00077 case RunningOneStep:
00078 qDebug() << "QVWorker::iterate(): RunningOneStep";
00079 status = Paused;
00080
00081 case Running:
00082 {
00083 emit startIteration();
00084 timeFlag("System");
00085 readInputProperties();
00086 worker();
00087 writeOutputProperties();
00088 numIterations++;
00089 emit endIteration();
00090 break;
00091 }
00092
00093 case Paused:
00094 qDebug() << "QVWorker::iterate(): Paused";
00095 {
00096
00097
00098
00099
00100
00101
00102
00103
00104 }
00105 break;
00106
00107 case Finished:
00108 qDebug() << "QVWorker::iterate(): Finished";
00109 break;
00110 }
00111
00112 qDebug() << "QVWorker::iterate() <- return";
00113 }
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124