aboutsummaryrefslogtreecommitdiff
path: root/src/wallet.cpp
diff options
context:
space:
mode:
authorCozz Lovan <cozzlovan@yahoo.com>2014-03-19 00:26:14 +0100
committerCozz Lovan <cozzlovan@yahoo.com>2014-04-02 03:48:07 +0200
commit392783697c21a0c4cf3db6b0946d3d44d7fed537 (patch)
tree9f0808ba972d629af5cae087b57c398bbd015b95 /src/wallet.cpp
parent397521d632b4a49e61c8ea2246135f9cc00e57c4 (diff)
downloadbitcoin-392783697c21a0c4cf3db6b0946d3d44d7fed537.tar.xz
[Qt] rescan progress
Diffstat (limited to 'src/wallet.cpp')
-rw-r--r--src/wallet.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/wallet.cpp b/src/wallet.cpp
index df1eb549ad..775eb8f580 100644
--- a/src/wallet.cpp
+++ b/src/wallet.cpp
@@ -835,14 +835,19 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
CBlockIndex* pindex = pindexStart;
{
LOCK(cs_wallet);
+
+ // no need to read and scan block, if block was created before
+ // our wallet birthday (as adjusted for block time variability)
+ while (pindex && nTimeFirstKey && (pindex->nTime < (nTimeFirstKey - 7200)))
+ pindex = chainActive.Next(pindex);
+
+ ShowProgress(_("Rescanning..."), 0); // show rescan progress in GUI as dialog or on splashscreen, if -rescan on startup
+ double dProgressStart = Checkpoints::GuessVerificationProgress(pindex, false);
+ double dProgressTip = Checkpoints::GuessVerificationProgress(chainActive.Tip(), false);
while (pindex)
{
- // no need to read and scan block, if block was created before
- // our wallet birthday (as adjusted for block time variability)
- if (nTimeFirstKey && (pindex->nTime < (nTimeFirstKey - 7200))) {
- pindex = chainActive.Next(pindex);
- continue;
- }
+ if (pindex->nHeight % 100 == 0 && dProgressTip - dProgressStart > 0.0)
+ ShowProgress(_("Rescanning..."), std::max(1, std::min(99, (int)((Checkpoints::GuessVerificationProgress(pindex, false) - dProgressStart) / (dProgressTip - dProgressStart) * 100))));
CBlock block;
ReadBlockFromDisk(block, pindex);
@@ -857,6 +862,7 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
LogPrintf("Still rescanning. At block %d. Progress=%f\n", pindex->nHeight, Checkpoints::GuessVerificationProgress(pindex));
}
}
+ ShowProgress(_("Rescanning..."), 100); // hide progress dialog in GUI
}
return ret;
}
@@ -1492,6 +1498,8 @@ DBErrors CWallet::LoadWallet(bool& fFirstRunRet)
return nLoadWalletRet;
fFirstRunRet = !vchDefaultKey.IsValid();
+ uiInterface.LoadWallet(this);
+
return DB_LOAD_OK;
}