diff options
author | furszy <matiasfurszyfer@protonmail.com> | 2024-02-28 09:57:49 -0300 |
---|---|---|
committer | furszy <matiasfurszyfer@protonmail.com> | 2024-02-29 14:40:01 -0300 |
commit | b7aa717cdd3f6af266c244fec6d775e917cf8d0c (patch) | |
tree | 8e8b7e4bcc68946fa5a5d3abb60441085bc59db3 | |
parent | f3a612f9016fe1f59c73d6059274bea8025b8940 (diff) |
refactor: gui, simplify boost signals disconnection
Preventing dangling signals.
-rw-r--r-- | src/qt/clientmodel.cpp | 36 | ||||
-rw-r--r-- | src/qt/clientmodel.h | 8 |
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}; |