From e39c9cff1a626ee038a541258d6e271ce63969a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Barbosa?= Date: Sat, 12 Oct 2019 22:26:47 +0100 Subject: gui: Fix start timer from non QThread Github-Pull: #17120 Rebased-From: a8f5026d6d992fd8d72908c848c5028f0f9a8cd1 Tree-SHA512: 5f8cbfd5044d2c0df7dbfc54e7d94f93da96d0adecd23007e82acc38bc3c7984a685c9596cbd449f559cf42db9e1b99612765328004c5a45655a8e375482a8a8 --- src/qt/walletcontroller.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/qt/walletcontroller.cpp') diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp index fa6f9f3f16..a8de5392b4 100644 --- a/src/qt/walletcontroller.cpp +++ b/src/qt/walletcontroller.cpp @@ -108,6 +108,12 @@ WalletModel* WalletController::getOrCreateWallet(std::unique_ptrsetParent(this); m_wallets.push_back(wallet_model); + // WalletModel::startPollBalance needs to be called in a thread managed by + // Qt because of startTimer. Considering the current thread can be a RPC + // thread, better delegate the calling to Qt with Qt::AutoConnection. + const bool called = QMetaObject::invokeMethod(wallet_model, "startPollBalance"); + assert(called); + connect(wallet_model, &WalletModel::unload, [this, wallet_model] { // Defer removeAndDeleteWallet when no modal widget is active. // TODO: remove this workaround by removing usage of QDiallog::exec. -- cgit v1.2.3