|
|
@ -1527,6 +1527,8 @@ CBlockIndex* CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool f |
|
|
|
CBlockIndex* pindex = pindexStart; |
|
|
|
CBlockIndex* pindex = pindexStart; |
|
|
|
{ |
|
|
|
{ |
|
|
|
LOCK2(cs_main, cs_wallet); |
|
|
|
LOCK2(cs_main, cs_wallet); |
|
|
|
|
|
|
|
fAbortRescan = false; |
|
|
|
|
|
|
|
fScanningWallet = true; |
|
|
|
|
|
|
|
|
|
|
|
// no need to read and scan block, if block was created before
|
|
|
|
// no need to read and scan block, if block was created before
|
|
|
|
// our wallet birthday (as adjusted for block time variability)
|
|
|
|
// our wallet birthday (as adjusted for block time variability)
|
|
|
@ -1536,7 +1538,7 @@ CBlockIndex* CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool f |
|
|
|
ShowProgress(_("Rescanning..."), 0); // show rescan progress in GUI as dialog or on splashscreen, if -rescan on startup
|
|
|
|
ShowProgress(_("Rescanning..."), 0); // show rescan progress in GUI as dialog or on splashscreen, if -rescan on startup
|
|
|
|
double dProgressStart = GuessVerificationProgress(chainParams.TxData(), pindex); |
|
|
|
double dProgressStart = GuessVerificationProgress(chainParams.TxData(), pindex); |
|
|
|
double dProgressTip = GuessVerificationProgress(chainParams.TxData(), chainActive.Tip()); |
|
|
|
double dProgressTip = GuessVerificationProgress(chainParams.TxData(), chainActive.Tip()); |
|
|
|
while (pindex) |
|
|
|
while (pindex && !fAbortRescan) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (pindex->nHeight % 100 == 0 && dProgressTip - dProgressStart > 0.0) |
|
|
|
if (pindex->nHeight % 100 == 0 && dProgressTip - dProgressStart > 0.0) |
|
|
|
ShowProgress(_("Rescanning..."), std::max(1, std::min(99, (int)((GuessVerificationProgress(chainParams.TxData(), pindex) - dProgressStart) / (dProgressTip - dProgressStart) * 100)))); |
|
|
|
ShowProgress(_("Rescanning..."), std::max(1, std::min(99, (int)((GuessVerificationProgress(chainParams.TxData(), pindex) - dProgressStart) / (dProgressTip - dProgressStart) * 100)))); |
|
|
@ -1558,7 +1560,12 @@ CBlockIndex* CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool f |
|
|
|
LogPrintf("Still rescanning. At block %d. Progress=%f\n", pindex->nHeight, GuessVerificationProgress(chainParams.TxData(), pindex)); |
|
|
|
LogPrintf("Still rescanning. At block %d. Progress=%f\n", pindex->nHeight, GuessVerificationProgress(chainParams.TxData(), pindex)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (pindex && fAbortRescan) { |
|
|
|
|
|
|
|
LogPrintf("Rescan aborted at block %d. Progress=%f\n", pindex->nHeight, GuessVerificationProgress(chainParams.TxData(), pindex)); |
|
|
|
|
|
|
|
} |
|
|
|
ShowProgress(_("Rescanning..."), 100); // hide progress dialog in GUI
|
|
|
|
ShowProgress(_("Rescanning..."), 100); // hide progress dialog in GUI
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fScanningWallet = false; |
|
|
|
} |
|
|
|
} |
|
|
|
return ret; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|