From 77772e7a308fe82acff6fafd513ab327c92906c8 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Thu, 9 Apr 2026 18:02:18 +0200 Subject: [PATCH] undo "ui: Compile boost:signals2 only once" commit fa5ce27385bc60cdf6d9a4eeb2d32c916c9e07eb was done to gain a 5% faster compilation. However, this is no longer needed after the slim btcsignals implementation. --- src/init.cpp | 4 ++-- src/node/interface_ui.cpp | 45 --------------------------------------- src/node/interface_ui.h | 33 +++++++++++----------------- src/node/interfaces.cpp | 22 +++++++++---------- src/noui.cpp | 12 +++++------ src/qt/bitcoin.cpp | 6 +++--- 6 files changed, 35 insertions(+), 87 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index a2277728280..d2e2902040f 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1573,7 +1573,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) * be disabled when initialisation is finished. */ if (args.GetBoolArg("-server", false)) { - uiInterface.InitMessage_connect(SetRPCWarmupStatus); + uiInterface.InitMessage.connect(SetRPCWarmupStatus); if (!AppInitServers(node)) return InitError(_("Unable to start HTTP server. See debug log for details.")); } @@ -2025,7 +2025,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) #if HAVE_SYSTEM const std::string block_notify = args.GetArg("-blocknotify", ""); if (!block_notify.empty()) { - uiInterface.NotifyBlockTip_connect([block_notify](SynchronizationState sync_state, const CBlockIndex& block, double /* verification_progress */) { + uiInterface.NotifyBlockTip.connect([block_notify](SynchronizationState sync_state, const CBlockIndex& block, double /* verification_progress */) { if (sync_state != SynchronizationState::POST_INIT) return; std::string command = block_notify; ReplaceAll(command, "%s", block.GetBlockHash().GetHex()); diff --git a/src/node/interface_ui.cpp b/src/node/interface_ui.cpp index a9a3da2b551..74922f21f94 100644 --- a/src/node/interface_ui.cpp +++ b/src/node/interface_ui.cpp @@ -12,51 +12,6 @@ using util::MakeUnorderedList; CClientUIInterface uiInterface; -struct UISignals { - btcsignals::signal ThreadSafeMessageBox; - btcsignals::signal ThreadSafeQuestion; - btcsignals::signal InitMessage; - btcsignals::signal InitWallet; - btcsignals::signal NotifyNumConnectionsChanged; - btcsignals::signal NotifyNetworkActiveChanged; - btcsignals::signal NotifyAlertChanged; - btcsignals::signal ShowProgress; - btcsignals::signal NotifyBlockTip; - btcsignals::signal NotifyHeaderTip; - btcsignals::signal BannedListChanged; -}; -static UISignals g_ui_signals; - -#define ADD_SIGNALS_IMPL_WRAPPER(signal_name) \ - btcsignals::connection CClientUIInterface::signal_name##_connect(std::function fn) \ - { \ - return g_ui_signals.signal_name.connect(fn); \ - } - -ADD_SIGNALS_IMPL_WRAPPER(ThreadSafeMessageBox); -ADD_SIGNALS_IMPL_WRAPPER(ThreadSafeQuestion); -ADD_SIGNALS_IMPL_WRAPPER(InitMessage); -ADD_SIGNALS_IMPL_WRAPPER(InitWallet); -ADD_SIGNALS_IMPL_WRAPPER(NotifyNumConnectionsChanged); -ADD_SIGNALS_IMPL_WRAPPER(NotifyNetworkActiveChanged); -ADD_SIGNALS_IMPL_WRAPPER(NotifyAlertChanged); -ADD_SIGNALS_IMPL_WRAPPER(ShowProgress); -ADD_SIGNALS_IMPL_WRAPPER(NotifyBlockTip); -ADD_SIGNALS_IMPL_WRAPPER(NotifyHeaderTip); -ADD_SIGNALS_IMPL_WRAPPER(BannedListChanged); - -void CClientUIInterface::ThreadSafeMessageBox(const bilingual_str& message, unsigned int style) { return g_ui_signals.ThreadSafeMessageBox(message, style); } -bool CClientUIInterface::ThreadSafeQuestion(const bilingual_str& message, const std::string& non_interactive_message, unsigned int style) { return g_ui_signals.ThreadSafeQuestion(message, non_interactive_message, style);} -void CClientUIInterface::InitMessage(const std::string& message) { return g_ui_signals.InitMessage(message); } -void CClientUIInterface::InitWallet() { return g_ui_signals.InitWallet(); } -void CClientUIInterface::NotifyNumConnectionsChanged(int newNumConnections) { return g_ui_signals.NotifyNumConnectionsChanged(newNumConnections); } -void CClientUIInterface::NotifyNetworkActiveChanged(bool networkActive) { return g_ui_signals.NotifyNetworkActiveChanged(networkActive); } -void CClientUIInterface::NotifyAlertChanged() { return g_ui_signals.NotifyAlertChanged(); } -void CClientUIInterface::ShowProgress(const std::string& title, int nProgress, bool resume_possible) { return g_ui_signals.ShowProgress(title, nProgress, resume_possible); } -void CClientUIInterface::NotifyBlockTip(SynchronizationState s, const CBlockIndex& block, double verification_progress) { return g_ui_signals.NotifyBlockTip(s, block, verification_progress); } -void CClientUIInterface::NotifyHeaderTip(SynchronizationState s, int64_t height, int64_t timestamp, bool presync) { return g_ui_signals.NotifyHeaderTip(s, height, timestamp, presync); } -void CClientUIInterface::BannedListChanged() { return g_ui_signals.BannedListChanged(); } - bool InitError(const bilingual_str& str) { uiInterface.ThreadSafeMessageBox(str, CClientUIInterface::MSG_ERROR); diff --git a/src/node/interface_ui.h b/src/node/interface_ui.h index 47e3da2c2c4..9615919661a 100644 --- a/src/node/interface_ui.h +++ b/src/node/interface_ui.h @@ -6,6 +6,8 @@ #ifndef BITCOIN_NODE_INTERFACE_UI_H #define BITCOIN_NODE_INTERFACE_UI_H +#include + #include #include #include @@ -15,10 +17,6 @@ class CBlockIndex; enum class SynchronizationState; struct bilingual_str; -namespace btcsignals { - class connection; -} // namespace btcsignals - /** Signals for UI communication. */ class CClientUIInterface { @@ -66,48 +64,43 @@ public: MSG_ERROR = (ICON_ERROR | BTN_OK | MODAL) }; -#define ADD_SIGNALS_DECL_WRAPPER(signal_name, rtype, ...) \ - rtype signal_name(__VA_ARGS__); \ - using signal_name##Sig = rtype(__VA_ARGS__); \ - btcsignals::connection signal_name##_connect(std::function fn) - /** Show message box. */ - ADD_SIGNALS_DECL_WRAPPER(ThreadSafeMessageBox, void, const bilingual_str& message, unsigned int style); + btcsignals::signal ThreadSafeMessageBox; /** If possible, ask the user a question. If not, falls back to ThreadSafeMessageBox(noninteractive_message, style) and returns false. */ - ADD_SIGNALS_DECL_WRAPPER(ThreadSafeQuestion, bool, const bilingual_str& message, const std::string& noninteractive_message, unsigned int style); + btcsignals::signal ThreadSafeQuestion; /** Progress message during initialization. */ - ADD_SIGNALS_DECL_WRAPPER(InitMessage, void, const std::string& message); + btcsignals::signal InitMessage; /** Wallet loader created. */ - ADD_SIGNALS_DECL_WRAPPER(InitWallet, void, ); + btcsignals::signal InitWallet; /** Number of network connections changed. */ - ADD_SIGNALS_DECL_WRAPPER(NotifyNumConnectionsChanged, void, int newNumConnections); + btcsignals::signal NotifyNumConnectionsChanged; /** Network activity state changed. */ - ADD_SIGNALS_DECL_WRAPPER(NotifyNetworkActiveChanged, void, bool networkActive); + btcsignals::signal NotifyNetworkActiveChanged; /** * Status bar alerts changed. */ - ADD_SIGNALS_DECL_WRAPPER(NotifyAlertChanged, void, ); + btcsignals::signal NotifyAlertChanged; /** * Show progress e.g. for verifychain. * resume_possible indicates shutting down now will result in the current progress action resuming upon restart. */ - ADD_SIGNALS_DECL_WRAPPER(ShowProgress, void, const std::string& title, int nProgress, bool resume_possible); + btcsignals::signal ShowProgress; /** New block has been accepted */ - ADD_SIGNALS_DECL_WRAPPER(NotifyBlockTip, void, SynchronizationState, const CBlockIndex& block, double verification_progress); + btcsignals::signal NotifyBlockTip; /** Best header has changed */ - ADD_SIGNALS_DECL_WRAPPER(NotifyHeaderTip, void, SynchronizationState, int64_t height, int64_t timestamp, bool presync); + btcsignals::signal NotifyHeaderTip; /** Banlist did change. */ - ADD_SIGNALS_DECL_WRAPPER(BannedListChanged, void, void); + btcsignals::signal BannedListChanged; }; /** Show warning message **/ diff --git a/src/node/interfaces.cpp b/src/node/interfaces.cpp index ac64876c2a7..3e34c3abf39 100644 --- a/src/node/interfaces.cpp +++ b/src/node/interfaces.cpp @@ -386,50 +386,50 @@ public: } std::unique_ptr handleInitMessage(InitMessageFn fn) override { - return MakeSignalHandler(::uiInterface.InitMessage_connect(fn)); + return MakeSignalHandler(::uiInterface.InitMessage.connect(fn)); } std::unique_ptr handleMessageBox(MessageBoxFn fn) override { - return MakeSignalHandler(::uiInterface.ThreadSafeMessageBox_connect(fn)); + return MakeSignalHandler(::uiInterface.ThreadSafeMessageBox.connect(fn)); } std::unique_ptr handleQuestion(QuestionFn fn) override { - return MakeSignalHandler(::uiInterface.ThreadSafeQuestion_connect(fn)); + return MakeSignalHandler(::uiInterface.ThreadSafeQuestion.connect(fn)); } std::unique_ptr handleShowProgress(ShowProgressFn fn) override { - return MakeSignalHandler(::uiInterface.ShowProgress_connect(fn)); + return MakeSignalHandler(::uiInterface.ShowProgress.connect(fn)); } std::unique_ptr handleInitWallet(InitWalletFn fn) override { - return MakeSignalHandler(::uiInterface.InitWallet_connect(fn)); + return MakeSignalHandler(::uiInterface.InitWallet.connect(fn)); } std::unique_ptr handleNotifyNumConnectionsChanged(NotifyNumConnectionsChangedFn fn) override { - return MakeSignalHandler(::uiInterface.NotifyNumConnectionsChanged_connect(fn)); + return MakeSignalHandler(::uiInterface.NotifyNumConnectionsChanged.connect(fn)); } std::unique_ptr handleNotifyNetworkActiveChanged(NotifyNetworkActiveChangedFn fn) override { - return MakeSignalHandler(::uiInterface.NotifyNetworkActiveChanged_connect(fn)); + return MakeSignalHandler(::uiInterface.NotifyNetworkActiveChanged.connect(fn)); } std::unique_ptr handleNotifyAlertChanged(NotifyAlertChangedFn fn) override { - return MakeSignalHandler(::uiInterface.NotifyAlertChanged_connect(fn)); + return MakeSignalHandler(::uiInterface.NotifyAlertChanged.connect(fn)); } std::unique_ptr handleBannedListChanged(BannedListChangedFn fn) override { - return MakeSignalHandler(::uiInterface.BannedListChanged_connect(fn)); + return MakeSignalHandler(::uiInterface.BannedListChanged.connect(fn)); } std::unique_ptr handleNotifyBlockTip(NotifyBlockTipFn fn) override { - return MakeSignalHandler(::uiInterface.NotifyBlockTip_connect([fn](SynchronizationState sync_state, const CBlockIndex& block, double verification_progress) { + return MakeSignalHandler(::uiInterface.NotifyBlockTip.connect([fn](SynchronizationState sync_state, const CBlockIndex& block, double verification_progress) { fn(sync_state, BlockTip{block.nHeight, block.GetBlockTime(), block.GetBlockHash()}, verification_progress); })); } std::unique_ptr handleNotifyHeaderTip(NotifyHeaderTipFn fn) override { return MakeSignalHandler( - ::uiInterface.NotifyHeaderTip_connect([fn](SynchronizationState sync_state, int64_t height, int64_t timestamp, bool presync) { + ::uiInterface.NotifyHeaderTip.connect([fn](SynchronizationState sync_state, int64_t height, int64_t timestamp, bool presync) { fn(sync_state, BlockTip{(int)height, timestamp, uint256{}}, presync); })); } diff --git a/src/noui.cpp b/src/noui.cpp index b9c9e78bbde..2450fddac59 100644 --- a/src/noui.cpp +++ b/src/noui.cpp @@ -56,9 +56,9 @@ void noui_InitMessage(const std::string& message) void noui_connect() { - noui_ThreadSafeMessageBoxConn = uiInterface.ThreadSafeMessageBox_connect(noui_ThreadSafeMessageBox); - noui_ThreadSafeQuestionConn = uiInterface.ThreadSafeQuestion_connect(noui_ThreadSafeQuestion); - noui_InitMessageConn = uiInterface.InitMessage_connect(noui_InitMessage); + noui_ThreadSafeMessageBoxConn = uiInterface.ThreadSafeMessageBox.connect(noui_ThreadSafeMessageBox); + noui_ThreadSafeQuestionConn = uiInterface.ThreadSafeQuestion.connect(noui_ThreadSafeQuestion); + noui_InitMessageConn = uiInterface.InitMessage.connect(noui_InitMessage); } void noui_ThreadSafeMessageBoxRedirect(const bilingual_str& message, unsigned int style) @@ -82,9 +82,9 @@ void noui_test_redirect() noui_ThreadSafeMessageBoxConn.disconnect(); noui_ThreadSafeQuestionConn.disconnect(); noui_InitMessageConn.disconnect(); - noui_ThreadSafeMessageBoxConn = uiInterface.ThreadSafeMessageBox_connect(noui_ThreadSafeMessageBoxRedirect); - noui_ThreadSafeQuestionConn = uiInterface.ThreadSafeQuestion_connect(noui_ThreadSafeQuestionRedirect); - noui_InitMessageConn = uiInterface.InitMessage_connect(noui_InitMessageRedirect); + noui_ThreadSafeMessageBoxConn = uiInterface.ThreadSafeMessageBox.connect(noui_ThreadSafeMessageBoxRedirect); + noui_ThreadSafeQuestionConn = uiInterface.ThreadSafeQuestion.connect(noui_ThreadSafeQuestionRedirect); + noui_InitMessageConn = uiInterface.InitMessage.connect(noui_InitMessageRedirect); } void noui_reconnect() diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 40a60a26f04..97eb957c93e 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -485,9 +485,9 @@ int GuiMain(int argc, char* argv[]) util::ThreadSetInternalName("main"); // Subscribe to global signals from core - btcsignals::scoped_connection handler_message_box{::uiInterface.ThreadSafeMessageBox_connect(noui_ThreadSafeMessageBox)}; - btcsignals::scoped_connection handler_question{::uiInterface.ThreadSafeQuestion_connect(noui_ThreadSafeQuestion)}; - btcsignals::scoped_connection handler_init_message{::uiInterface.InitMessage_connect(noui_InitMessage)}; + btcsignals::scoped_connection handler_message_box{::uiInterface.ThreadSafeMessageBox.connect(noui_ThreadSafeMessageBox)}; + btcsignals::scoped_connection handler_question{::uiInterface.ThreadSafeQuestion.connect(noui_ThreadSafeQuestion)}; + btcsignals::scoped_connection handler_init_message{::uiInterface.InitMessage.connect(noui_InitMessage)}; // Do not refer to data directory yet, this can be overridden by Intro::pickDataDirectory