Automatically trigger refreshing of register widgets, in the TargetRegistersPane, upon a registers written event

This commit is contained in:
Nav
2021-09-11 20:45:06 +01:00
parent 12a7d58b59
commit 63a080d821
4 changed files with 43 additions and 0 deletions

View File

@@ -112,6 +112,13 @@ TargetRegistersPaneWidget::TargetRegistersPaneWidget(
this,
&TargetRegistersPaneWidget::onTargetStateChanged
);
this->connect(
&insightWorker,
&InsightWorker::targetRegistersWritten,
this,
&TargetRegistersPaneWidget::onRegistersWritten
);
}
void TargetRegistersPaneWidget::resizeEvent(QResizeEvent* event) {
@@ -142,6 +149,31 @@ void TargetRegistersPaneWidget::onTargetStateChanged(Targets::TargetState newSta
}
}
void TargetRegistersPaneWidget::onRegistersWritten(const Bloom::Targets::TargetRegisterDescriptors& descriptors) {
if (this->targetState != Targets::TargetState::STOPPED) {
return;
}
/*
* Don't bother refreshing individual registers if it will involve more than two refresh calls - In this case, it
* will be faster to just refresh all of them at once.
*/
if (descriptors.size() <= 2) {
for (const auto& descriptor : descriptors) {
for (const auto& registerGroupWidget : this->registerGroupWidgets) {
if (registerGroupWidget->registerWidgetsMappedByDescriptor.contains(descriptor)) {
registerGroupWidget->registerWidgetsMappedByDescriptor.at(descriptor)->refreshValue();
break;
}
}
}
} else {
this->refreshRegisterValues();
}
}
void TargetRegistersPaneWidget::filterRegisters(const QString& keyword) {
auto stdKeyword = keyword.toLower().toStdString();