48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
#include "ValidateExpressionThread.h"
|
|
|
|
ValidateExpressionThread::ValidateExpressionThread(QObject* parent) : QThread(parent)
|
|
{
|
|
mExpressionChanged = false;
|
|
mStopThread = false;
|
|
}
|
|
|
|
void ValidateExpressionThread::start()
|
|
{
|
|
mStopThread = false;
|
|
QThread::start();
|
|
}
|
|
|
|
void ValidateExpressionThread::stop()
|
|
{
|
|
mStopThread = true;
|
|
}
|
|
|
|
void ValidateExpressionThread::textChanged(QString text)
|
|
{
|
|
mExpressionMutex.lock();
|
|
if(mExpressionText != text)
|
|
mExpressionChanged = true;
|
|
mExpressionText = text;
|
|
mExpressionMutex.unlock();
|
|
}
|
|
|
|
void ValidateExpressionThread::run()
|
|
{
|
|
while(!mStopThread)
|
|
{
|
|
mExpressionMutex.lock();
|
|
QString expression = mExpressionText;
|
|
bool changed = mExpressionChanged;
|
|
mExpressionChanged = false;
|
|
mExpressionMutex.unlock();
|
|
if(changed)
|
|
{
|
|
duint value;
|
|
bool validExpression = DbgFunctions()->ValFromString(expression.toUtf8().constData(), &value);
|
|
bool validPointer = validExpression && DbgMemIsValidReadPtr(value);
|
|
emit expressionChanged(validExpression, validPointer, value);
|
|
}
|
|
Sleep(50);
|
|
}
|
|
}
|