Fixes to frame capture bugs introduced by last commit. Naughty!
This commit is contained in:
+11
-2
@@ -28,6 +28,7 @@ CANFrameModel::CANFrameModel(QObject *parent)
|
||||
useHexMode = true;
|
||||
timeSeconds = false;
|
||||
timeOffset = 0;
|
||||
needFilterRefresh = false;
|
||||
}
|
||||
|
||||
void CANFrameModel::setHexMode(bool mode)
|
||||
@@ -245,7 +246,7 @@ void CANFrameModel::addFrame(CANFrame &frame, bool autoRefresh = false)
|
||||
if (!filters.contains(frame.ID))
|
||||
{
|
||||
filters.insert(frame.ID, true);
|
||||
emit updatedFiltersList();
|
||||
needFilterRefresh = true;
|
||||
}
|
||||
|
||||
if (!overwriteDups)
|
||||
@@ -369,7 +370,7 @@ void CANFrameModel::insertFrames(const QVector<CANFrame> &newFrames)
|
||||
if (!filters.contains(newFrames[i].ID))
|
||||
{
|
||||
filters.insert(newFrames[i].ID, true);
|
||||
emit updatedFiltersList();
|
||||
needFilterRefresh = true;
|
||||
}
|
||||
if (filters[newFrames[i].ID])
|
||||
{
|
||||
@@ -380,6 +381,7 @@ void CANFrameModel::insertFrames(const QVector<CANFrame> &newFrames)
|
||||
|
||||
beginInsertRows(QModelIndex(), filteredFrames.count() + 1, filteredFrames.count() + insertedFiltered);
|
||||
endInsertRows();
|
||||
if (needFilterRefresh) emit updatedFiltersList();
|
||||
}
|
||||
|
||||
void CANFrameModel::loadFilterFile(QString filename)
|
||||
@@ -429,6 +431,13 @@ void CANFrameModel::saveFilterFile(QString filename)
|
||||
outFile->close();
|
||||
}
|
||||
|
||||
bool CANFrameModel::needsFilterRefresh()
|
||||
{
|
||||
bool temp = needFilterRefresh;
|
||||
needFilterRefresh = false;
|
||||
return temp;
|
||||
}
|
||||
|
||||
/*
|
||||
*This used to not be const correct but it is now. So, there's little harm in
|
||||
* allowing external code to peek at our frames. There's just no touching.
|
||||
|
||||
@@ -38,6 +38,7 @@ public:
|
||||
void saveFilterFile(QString filename);
|
||||
void normalizeTiming();
|
||||
void recalcOverwrite();
|
||||
bool needsFilterRefresh();
|
||||
void insertFrames(const QVector<CANFrame> &newFrames);
|
||||
const QVector<CANFrame> *getListReference() const; //thou shalt not modify these frames externally!
|
||||
const QVector<CANFrame> *getFilteredListReference() const; //Thus saith the Lord, NO.
|
||||
@@ -56,6 +57,7 @@ private:
|
||||
bool overwriteDups; //should we display all frames or only the newest for each ID?
|
||||
bool useHexMode;
|
||||
bool timeSeconds;
|
||||
bool needFilterRefresh;
|
||||
uint64_t timeOffset;
|
||||
};
|
||||
|
||||
|
||||
+5
-1
@@ -102,7 +102,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
connect(this, &MainWindow::startFrameCapturing, worker, &SerialWorker::startFrameCapture);
|
||||
connect(this, &MainWindow::stopFrameCapturing, worker, &SerialWorker::stopFrameCapture);
|
||||
serialWorkerThread.start();
|
||||
serialWorkerThread.setPriority(QThread::TimeCriticalPriority);
|
||||
serialWorkerThread.setPriority(QThread::HighPriority);
|
||||
|
||||
graphingWindow = NULL;
|
||||
frameInfoWindow = NULL;
|
||||
@@ -292,6 +292,8 @@ void MainWindow::updateFilterList()
|
||||
const QMap<int, bool> *filters = model->getFiltersReference();
|
||||
if (filters == NULL) return;
|
||||
|
||||
qDebug() << "updateFilterList called on MainWindow";
|
||||
|
||||
ui->listFilters->clear();
|
||||
|
||||
if (filters->isEmpty()) return;
|
||||
@@ -333,6 +335,8 @@ void MainWindow::gotFrames(int FPS, int framesSinceLastUpdate)
|
||||
bDirty = true;
|
||||
emit framesUpdated(framesSinceLastUpdate); //anyone care that frames were updated?
|
||||
}
|
||||
|
||||
if (model->needsFilterRefresh()) updateFilterList();
|
||||
}
|
||||
|
||||
void MainWindow::addFrameToDisplay(CANFrame &frame, bool autoRefresh = false)
|
||||
|
||||
Reference in New Issue
Block a user