Skip to content

Commit 4f62b22

Browse files
Fix for extremely slow line sensor
1 parent 82c48f0 commit 4f62b22

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

trikControl/src/abstractVirtualSensorWorker.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ using namespace trikControl;
2929
AbstractVirtualSensorWorker::AbstractVirtualSensorWorker(const QString &script, const QString &inputFile
3030
, const QString &outputFile, DeviceState &state, trikHal::HardwareAbstractionInterface &hardwareAbstraction)
3131
: mSystemConsole(hardwareAbstraction.systemConsole())
32-
, mOutputFifo(hardwareAbstraction.createFifo(outputFile))
3332
, mScript(script)
3433
, mInputFile(hardwareAbstraction.createOutputDeviceFile(inputFile))
3534
, mState(state)
35+
, mHardwareAbstraction(hardwareAbstraction)
36+
, mOutputFile(outputFile)
3637
{
3738
}
3839

@@ -59,6 +60,8 @@ void AbstractVirtualSensorWorker::stop()
5960

6061
void AbstractVirtualSensorWorker::init()
6162
{
63+
mOutputFifo.reset(mHardwareAbstraction.createFifo(mOutputFile));
64+
6265
if (mState.isReady() && QFileInfo(mInputFile->fileName()).exists() && QFileInfo(mOutputFifo->fileName()).exists()) {
6366
// Sensor is up and ready.
6467
QLOG_ERROR() << "Trying to init video sensor that is already running, ignoring";

trikControl/src/abstractVirtualSensorWorker.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,12 @@ private slots:
115115

116116
/// Current state of a device, shared between worker and proxy.
117117
DeviceState &mState;
118+
119+
/// Reference to hardware abstraction needed to create FIFO objects in correct thread.
120+
trikHal::HardwareAbstractionInterface &mHardwareAbstraction;
121+
122+
/// Name of an output file.
123+
const QString mOutputFile;
118124
};
119125

120126
}

trikScriptRunner/src/threading.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ void Threading::startMainThread(const QString &script)
4242
mFinishedThreads.clear();
4343
mPreventFromStart.clear();
4444

45-
QRegExp const mainRegexp("(.*var main\\s*=\\s*\\w*\\s*function\\(.*\\).*)|(.*function\\s+%1\\s*\\(.*\\).*)");
46-
bool needCallMain = mainRegexp.exactMatch(script) && !script.trimmed().endsWith("main();");
45+
const QRegExp mainRegexp("(.*var main\\s*=\\s*\\w*\\s*function\\(.*\\).*)|(.*function\\s+%1\\s*\\(.*\\).*)");
46+
const bool needCallMain = mainRegexp.exactMatch(script) && !script.trimmed().endsWith("main();");
4747

4848
startThread("main", mScriptWorker->createScriptEngine(), needCallMain ? script + "\nmain();" : script);
4949
}
@@ -84,7 +84,7 @@ void Threading::startThread(const QString &threadId, QScriptEngine *engine, cons
8484
}
8585

8686
QLOG_INFO() << "Starting new thread" << threadId << "with engine" << engine;
87-
ScriptThread *thread = new ScriptThread(*this, threadId, engine, script);
87+
ScriptThread * const thread = new ScriptThread(*this, threadId, engine, script);
8888
connect(&mScriptControl, SIGNAL(quitSignal()), thread, SIGNAL(stopRunning()), Qt::DirectConnection);
8989
mThreads[threadId] = thread;
9090
mFinishedThreads.remove(threadId);

0 commit comments

Comments
 (0)