This commit is contained in:
Nav
2023-03-13 00:45:26 +00:00
parent c394ce52df
commit 4895b2c919
11 changed files with 98 additions and 61 deletions

View File

@@ -137,10 +137,13 @@ namespace Bloom::Widgets
}
void ItemGraphicsScene::init() {
auto* constructHexViewerTopLevelGroupItem = new ConstructHexViewerTopLevelGroupItem(this->focusedMemoryRegions, this->state);
const auto constructHexViewerTopLevelGroupItem = QSharedPointer<ConstructHexViewerTopLevelGroupItem>(
new ConstructHexViewerTopLevelGroupItem(this->focusedMemoryRegions, this->state),
&QObject::deleteLater
);
QObject::connect(
constructHexViewerTopLevelGroupItem,
constructHexViewerTopLevelGroupItem.get(),
&ConstructHexViewerTopLevelGroupItem::topLevelGroupItem,
this,
[this] (TopLevelGroupItem* item) {

View File

@@ -92,10 +92,13 @@ namespace Bloom::Widgets
}
);
auto* retrieveSnapshotsTask = new RetrieveMemorySnapshots(this->memoryDescriptor.type);
const auto retrieveSnapshotsTask = QSharedPointer<RetrieveMemorySnapshots>(
new RetrieveMemorySnapshots(this->memoryDescriptor.type),
&QObject::deleteLater
);
QObject::connect(
retrieveSnapshotsTask,
retrieveSnapshotsTask.get(),
&RetrieveMemorySnapshots::memorySnapshotsRetrieved,
this,
[this] (std::vector<MemorySnapshot> snapshots) {
@@ -136,17 +139,20 @@ namespace Bloom::Widgets
bool captureFocusedRegions,
bool captureDirectlyFromTarget
) {
auto* captureTask = new CaptureMemorySnapshot(
std::move(name),
std::move(description),
this->memoryDescriptor.type,
{},
{},
captureDirectlyFromTarget ? std::nullopt : this->data
const auto captureTask = QSharedPointer<CaptureMemorySnapshot>(
new CaptureMemorySnapshot(
std::move(name),
std::move(description),
this->memoryDescriptor.type,
{},
{},
captureDirectlyFromTarget ? std::nullopt : this->data
),
&QObject::deleteLater
);
QObject::connect(
captureTask,
captureTask.get(),
&CaptureMemorySnapshot::memorySnapshotCaptured,
this,
[this] (MemorySnapshot snapshot) {

View File

@@ -298,15 +298,18 @@ namespace Bloom::Widgets
}
);
auto* readMemoryTask = new ReadTargetMemory(
this->targetMemoryDescriptor.type,
this->targetMemoryDescriptor.addressRange.startAddress,
this->targetMemoryDescriptor.size(),
excludedAddressRanges
const auto readMemoryTask = QSharedPointer<ReadTargetMemory>(
new ReadTargetMemory(
this->targetMemoryDescriptor.type,
this->targetMemoryDescriptor.addressRange.startAddress,
this->targetMemoryDescriptor.size(),
excludedAddressRanges
),
&QObject::deleteLater
);
QObject::connect(
readMemoryTask,
readMemoryTask.get(),
&ReadTargetMemory::targetMemoryRead,
this,
[this, callback] (const Targets::TargetMemoryBuffer& data) {
@@ -314,9 +317,13 @@ namespace Bloom::Widgets
// Refresh the stack pointer if this is RAM.
if (this->targetMemoryDescriptor.type == Targets::TargetMemoryType::RAM) {
auto* readStackPointerTask = new ReadStackPointer();
const auto readStackPointerTask = QSharedPointer<ReadStackPointer>(
new ReadStackPointer(),
&QObject::deleteLater
);
QObject::connect(
readStackPointerTask,
readStackPointerTask.get(),
&ReadStackPointer::stackPointerRead,
this,
[this] (Targets::TargetStackPointer stackPointer) {
@@ -325,7 +332,7 @@ namespace Bloom::Widgets
);
QObject::connect(
readStackPointerTask,
readStackPointerTask.get(),
&InsightWorkerTask::finished,
this,
[this] {
@@ -339,7 +346,7 @@ namespace Bloom::Widgets
if (callback.has_value()) {
QObject::connect(
readStackPointerTask,
readStackPointerTask.get(),
&InsightWorkerTask::completed,
this,
callback.value()
@@ -354,7 +361,7 @@ namespace Bloom::Widgets
// If we're refreshing RAM, the UI should only be updated once we've retrieved the current stack pointer.
if (this->targetMemoryDescriptor.type != Targets::TargetMemoryType::RAM) {
QObject::connect(
readMemoryTask,
readMemoryTask.get(),
&InsightWorkerTask::finished,
this,
[this] {
@@ -368,7 +375,7 @@ namespace Bloom::Widgets
if (callback.has_value()) {
QObject::connect(
readMemoryTask,
readMemoryTask.get(),
&InsightWorkerTask::completed,
this,
callback.value()
@@ -377,7 +384,7 @@ namespace Bloom::Widgets
} else {
QObject::connect(
readMemoryTask,
readMemoryTask.get(),
&InsightWorkerTask::failed,
this,
[this] {