summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2024-09-05 08:11:28 -0400
committerBrian Potchik <brian@vector35.com>2024-09-05 08:11:28 -0400
commitfde5ba7b66ccb5f927f6a8290d5e74bf93097ed6 (patch)
treeb89dabaf9851a9bc56aea5e009267f845b4c732d
parent029fa6704ad29b40cbd3265caaa8e3b03a640d12 (diff)
Fix crash and UI lag for the address/find dialogs.
-rw-r--r--ui/addressdialog.h21
-rw-r--r--ui/getsymbolslistthread.h19
2 files changed, 18 insertions, 22 deletions
diff --git a/ui/addressdialog.h b/ui/addressdialog.h
index f250409d..253969f0 100644
--- a/ui/addressdialog.h
+++ b/ui/addressdialog.h
@@ -37,7 +37,7 @@ class BINARYNINJAUIAPI AddressDialogWithPreview : public QDialog
QTimer* m_updateTimer;
QStringList m_historyEntries;
int m_historySize;
- GetSymbolsListThread* m_updateThread;
+ GetSymbolsListThread* m_updateThread = nullptr;
QColor m_defaultColor;
QFont m_defaultFont;
QString m_prompt;
@@ -46,9 +46,8 @@ class BINARYNINJAUIAPI AddressDialogWithPreview : public QDialog
bool m_resultAmbiguous = false;
void commitHistory();
- void customEvent(QEvent* event);
- private Q_SLOTS:
+private Q_SLOTS:
void updateTimerEvent();
void accepted();
void updateRelativeState(int state);
@@ -56,10 +55,11 @@ class BINARYNINJAUIAPI AddressDialogWithPreview : public QDialog
void updatePreviewText();
void updatePreviewWithText(QString data);
- public:
+public:
AddressDialogWithPreview(QWidget* parent, BinaryViewRef view, uint64_t here, const QString& title = "Go to Address",
const QString& prompt = "Enter Expression", bool defaultToCurrent = false);
~AddressDialogWithPreview();
+
uint64_t getOffset() const { return m_addr; }
};
@@ -88,18 +88,19 @@ class BINARYNINJAUIAPI FileOffsetDialogWithPreview : public QDialog
void commitHistory();
- private Q_SLOTS:
+private Q_SLOTS:
void updateTimerEvent();
void accepted();
void updatePreview();
void updatePreviewText();
void updatePreview(QString data);
- public:
+public:
FileOffsetDialogWithPreview(QWidget* parent, BinaryViewRef view, uint64_t here,
const QString& title = "Go to File Offset", const QString& prompt = "Enter Expression",
bool defaultToCurrent = false);
~FileOffsetDialogWithPreview() {}
+
uint64_t getOffset() const { return m_fileOffset; }
};
@@ -122,7 +123,7 @@ class BINARYNINJAUIAPI AddUserXrefDialog : public QDialog
QTimer* m_updateTimer;
QStringList m_historyEntries;
int m_historySize;
- GetSymbolsListThread* m_updateThread;
+ GetSymbolsListThread* m_updateThread = nullptr;
QColor m_defaultColor;
QFont m_defaultFont;
QString m_prompt;
@@ -131,21 +132,21 @@ class BINARYNINJAUIAPI AddUserXrefDialog : public QDialog
bool m_resultAmbiguous = false;
void commitHistory();
- void customEvent(QEvent* event);
- private Q_SLOTS:
+private Q_SLOTS:
void updateTimerEvent();
void accepted();
void updatePreview();
void updatePreviewText();
void updatePreviewWithText(QString data);
- public:
+public:
AddUserXrefDialog(QWidget* parent, BinaryViewRef view, uint64_t here = 0, size_t size = 0,
const QString& title = "Add User Type Field Cross Reference",
const QString& sizeTitle = "Size of Reference (optional)", const QString& prompt = "Enter Expression",
bool defaultToCurrent = false);
~AddUserXrefDialog();
+
uint64_t getOffset() const { return m_addr; }
size_t getSize() const { return m_size; }
}; \ No newline at end of file
diff --git a/ui/getsymbolslistthread.h b/ui/getsymbolslistthread.h
index 73c97962..30236367 100644
--- a/ui/getsymbolslistthread.h
+++ b/ui/getsymbolslistthread.h
@@ -2,7 +2,6 @@
#ifndef BINARYNINJAUI_BINDINGS
#include <QtCore/QThread>
- #include <QtCore/QEvent>
#endif
#include "binaryninjaapi.h"
#include "uitypes.h"
@@ -21,22 +20,18 @@ class BINARYNINJAUIAPI GetSymbolsListThread : public QThread
{
Q_OBJECT
- QStringList m_allSymbols;
- std::function<void()> m_completeFunc;
- std::mutex m_mutex;
- bool m_done;
BinaryViewRef m_view;
+ QStringList m_symbolsList;
+ QStringList m_additionalListEntries;
- protected:
+protected:
virtual void run() override;
- public:
- GetSymbolsListThread(BinaryViewRef view, const std::function<void()>& completeFunc);
+public:
+ GetSymbolsListThread(BinaryViewRef view, QStringList additionalListEntries);
void cancel();
- static int m_eventType;
- int GetEventType() { return GetSymbolsListThread::m_eventType; }
-
- const QStringList& getSymbols() const { return m_allSymbols; }
+signals:
+ void symbolsListReady(const QStringList& symbolsList);
};
#endif