aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfurszy <matiasfurszyfer@protonmail.com>2024-02-28 09:57:49 -0300
committerfurszy <matiasfurszyfer@protonmail.com>2024-02-29 14:40:01 -0300
commitb7aa717cdd3f6af266c244fec6d775e917cf8d0c (patch)
tree8e8b7e4bcc68946fa5a5d3abb60441085bc59db3
parentf3a612f9016fe1f59c73d6059274bea8025b8940 (diff)
refactor: gui, simplify boost signals disconnection
Preventing dangling signals.
-rw-r--r--src/qt/clientmodel.cpp36
-rw-r--r--src/qt/clientmodel.h8
2 files changed, 16 insertions, 28 deletions
diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp
index bf4172a8bf..05172cfbd2 100644
--- a/src/qt/clientmodel.cpp
+++ b/src/qt/clientmodel.cpp
@@ -243,47 +243,41 @@ void ClientModel::TipChanged(SynchronizationState sync_state, interfaces::BlockT
void ClientModel::subscribeToCoreSignals()
{
- m_handler_show_progress = m_node.handleShowProgress(
+ m_event_handlers.emplace_back(m_node.handleShowProgress(
[this](const std::string& title, int progress, [[maybe_unused]] bool resume_possible) {
Q_EMIT showProgress(QString::fromStdString(title), progress);
- });
- m_handler_notify_num_connections_changed = m_node.handleNotifyNumConnectionsChanged(
+ }));
+ m_event_handlers.emplace_back(m_node.handleNotifyNumConnectionsChanged(
[this](int new_num_connections) {
Q_EMIT numConnectionsChanged(new_num_connections);
- });
- m_handler_notify_network_active_changed = m_node.handleNotifyNetworkActiveChanged(
+ }));
+ m_event_handlers.emplace_back(m_node.handleNotifyNetworkActiveChanged(
[this](bool network_active) {
Q_EMIT networkActiveChanged(network_active);
- });
- m_handler_notify_alert_changed = m_node.handleNotifyAlertChanged(
+ }));
+ m_event_handlers.emplace_back(m_node.handleNotifyAlertChanged(
[this]() {
qDebug() << "ClientModel: NotifyAlertChanged";
Q_EMIT alertsChanged(getStatusBarWarnings());
- });
- m_handler_banned_list_changed = m_node.handleBannedListChanged(
+ }));
+ m_event_handlers.emplace_back(m_node.handleBannedListChanged(
[this]() {
qDebug() << "ClienModel: Requesting update for peer banlist";
QMetaObject::invokeMethod(banTableModel, [this] { banTableModel->refresh(); });
- });
- m_handler_notify_block_tip = m_node.handleNotifyBlockTip(
+ }));
+ m_event_handlers.emplace_back(m_node.handleNotifyBlockTip(
[this](SynchronizationState sync_state, interfaces::BlockTip tip, double verification_progress) {
TipChanged(sync_state, tip, verification_progress, SyncType::BLOCK_SYNC);
- });
- m_handler_notify_header_tip = m_node.handleNotifyHeaderTip(
+ }));
+ m_event_handlers.emplace_back(m_node.handleNotifyHeaderTip(
[this](SynchronizationState sync_state, interfaces::BlockTip tip, bool presync) {
TipChanged(sync_state, tip, /*verification_progress=*/0.0, presync ? SyncType::HEADER_PRESYNC : SyncType::HEADER_SYNC);
- });
+ }));
}
void ClientModel::unsubscribeFromCoreSignals()
{
- m_handler_show_progress->disconnect();
- m_handler_notify_num_connections_changed->disconnect();
- m_handler_notify_network_active_changed->disconnect();
- m_handler_notify_alert_changed->disconnect();
- m_handler_banned_list_changed->disconnect();
- m_handler_notify_block_tip->disconnect();
- m_handler_notify_header_tip->disconnect();
+ m_event_handlers.clear();
}
bool ClientModel::getProxyInfo(std::string& ip_port) const
diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h
index 68fb2e6322..624056b5df 100644
--- a/src/qt/clientmodel.h
+++ b/src/qt/clientmodel.h
@@ -97,13 +97,7 @@ public:
private:
interfaces::Node& m_node;
- std::unique_ptr<interfaces::Handler> m_handler_show_progress;
- std::unique_ptr<interfaces::Handler> m_handler_notify_num_connections_changed;
- std::unique_ptr<interfaces::Handler> m_handler_notify_network_active_changed;
- std::unique_ptr<interfaces::Handler> m_handler_notify_alert_changed;
- std::unique_ptr<interfaces::Handler> m_handler_banned_list_changed;
- std::unique_ptr<interfaces::Handler> m_handler_notify_block_tip;
- std::unique_ptr<interfaces::Handler> m_handler_notify_header_tip;
+ std::vector<std::unique_ptr<interfaces::Handler>> m_event_handlers;
OptionsModel *optionsModel;
PeerTableModel* peerTableModel{nullptr};
PeerTableSortProxy* m_peer_table_sort_proxy{nullptr};