Automatically trigger refreshing of register widgets, in the TargetRegistersPane, upon a registers written event
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user