aboutsummaryrefslogtreecommitdiff
path: root/src/qt/clientmodel.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-04-23 17:05:36 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2014-04-23 17:06:28 +0200
commit89bbd54fbfbb1b21257d436731868455821a101e (patch)
treea394f051221cb79d684d5643855597187fabc210 /src/qt/clientmodel.cpp
parent97730c9b7f0f0e6f157f2d90adb38a014e0b93e2 (diff)
parentb39a07dc42ab6ba746a25206969fb81913146f1f (diff)
Merge pull request #4085
b39a07d Add missing AssertLockHeld in ConnectBlock (Wladimir J. van der Laan) 41106a5 qt: get required locks upfront in polling functions (Wladimir J. van der Laan) ed67100 Add required locks in tests (Wladimir J. van der Laan)
Diffstat (limited to 'src/qt/clientmodel.cpp')
-rw-r--r--src/qt/clientmodel.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp
index 287296644c..3c0564c208 100644
--- a/src/qt/clientmodel.cpp
+++ b/src/qt/clientmodel.cpp
@@ -92,6 +92,12 @@ double ClientModel::getVerificationProgress() const
void ClientModel::updateTimer()
{
+ // Get required lock upfront. This avoids the GUI from getting stuck on
+ // periodical polls if the core is holding the locks for a longer time -
+ // for example, during a wallet rescan.
+ TRY_LOCK(cs_main, lockMain);
+ if(!lockMain)
+ return;
// Some quantities (such as number of blocks) change so fast that we don't want to be notified for each change.
// Periodically check and update with a timer.
int newNumBlocks = getNumBlocks();