summaryrefslogtreecommitdiff
path: root/examples/triage/exports.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/triage/exports.h')
-rw-r--r--examples/triage/exports.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/examples/triage/exports.h b/examples/triage/exports.h
index 6ab94407..96c2b779 100644
--- a/examples/triage/exports.h
+++ b/examples/triage/exports.h
@@ -13,16 +13,25 @@ class GenericExportsModel : public QAbstractItemModel, public BinaryNinja::Binar
BinaryViewRef m_data;
std::vector<SymbolRef> m_allEntries, m_entries;
std::string m_filter;
+ QTimer* m_updateTimer;
Qt::SortOrder m_sortOrder;
int m_sortCol;
bool m_hasOrdinals;
- QTimer* m_updateTimer;
+
+ // Read from arbitrary threads while processing notifications.
+ std::atomic<bool> m_updatesPaused = false;
+ // Read/written from arbitrary threads while processing notifications.
+ std::atomic<bool> m_needsUpdate = true;
void performSort(int col, Qt::SortOrder order);
void updateModel();
- signals:
- void modelUpdate();
+ void updateTimer(bool);
+ void setNeedsUpdate(bool);
+ void onBinaryViewNotification();
+
+signals:
+ void updateTimerOnUIThread();
public:
GenericExportsModel(QWidget* parent, BinaryViewRef data);
@@ -37,11 +46,11 @@ class GenericExportsModel : public QAbstractItemModel, public BinaryNinja::Binar
virtual void sort(int col, Qt::SortOrder order) override;
void setFilter(const std::string& filterText);
+ void pauseUpdates();
+ void resumeUpdates();
+
SymbolRef getSymbol(const QModelIndex& index);
- virtual void OnAnalysisFunctionAdded(BinaryNinja::BinaryView* view, BinaryNinja::Function* func) override;
- virtual void OnAnalysisFunctionRemoved(BinaryNinja::BinaryView* view, BinaryNinja::Function* func) override;
- virtual void OnAnalysisFunctionUpdated(BinaryNinja::BinaryView* view, BinaryNinja::Function* func) override;
virtual void OnSymbolAdded(BinaryNinja::BinaryView* view, BinaryNinja::Symbol* sym) override;
virtual void OnSymbolUpdated(BinaryNinja::BinaryView* view, BinaryNinja::Symbol* sym) override;
virtual void OnSymbolRemoved(BinaryNinja::BinaryView* view, BinaryNinja::Symbol* sym) override;
@@ -75,6 +84,8 @@ class ExportsTreeView : public QTreeView, public FilterTarget
protected:
virtual void keyPressEvent(QKeyEvent* event) override;
+ virtual void showEvent(QShowEvent* event) override;
+ virtual void hideEvent(QHideEvent* event) override;
private Q_SLOTS:
void exportSelected(const QModelIndex& cur, const QModelIndex& prev);