diff options
| author | Wladimir J. van der Laan <[email protected]> | 2012-11-12 23:33:46 -0800 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2012-11-12 23:33:46 -0800 |
| commit | f2b12807d04e981d0a252cbda6ba80c87a809d6e (patch) | |
| tree | a6fb31a0f82a7edc186bd46f1478f3d75930368f | |
| parent | Merge pull request #2002 from alexanderkjeldaas/clang-warnings (diff) | |
| parent | add CWalletTx::GetImmatureCredit() and use it in CWallet::GetImmatureBalance() (diff) | |
| download | discoin-f2b12807d04e981d0a252cbda6ba80c87a809d6e.tar.xz discoin-f2b12807d04e981d0a252cbda6ba80c87a809d6e.zip | |
Merge pull request #1479 from Diapolo/wallet_add_GetImmatureCredit
add CWalletTx::GetImmatureCredit() and use it in CWallet::GetImmatureBalance()
| -rw-r--r-- | src/wallet.cpp | 5 | ||||
| -rw-r--r-- | src/wallet.h | 18 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/wallet.cpp b/src/wallet.cpp index ae9f695e9..0115e56b8 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -926,9 +926,8 @@ int64 CWallet::GetImmatureBalance() const LOCK(cs_wallet); for (map<uint256, CWalletTx>::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it) { - const CWalletTx& pcoin = (*it).second; - if (pcoin.IsCoinBase() && pcoin.GetBlocksToMaturity() > 0 && pcoin.IsInMainChain()) - nTotal += GetCredit(pcoin); + const CWalletTx* pcoin = &(*it).second; + nTotal += pcoin->GetImmatureCredit(); } } return nTotal; diff --git a/src/wallet.h b/src/wallet.h index 43b695c59..5e2f8e0ba 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -375,10 +375,12 @@ public: // memory only mutable bool fDebitCached; mutable bool fCreditCached; + mutable bool fImmatureCreditCached; mutable bool fAvailableCreditCached; mutable bool fChangeCached; mutable int64 nDebitCached; mutable int64 nCreditCached; + mutable int64 nImmatureCreditCached; mutable int64 nAvailableCreditCached; mutable int64 nChangeCached; @@ -416,10 +418,12 @@ public: vfSpent.clear(); fDebitCached = false; fCreditCached = false; + fImmatureCreditCached = false; fAvailableCreditCached = false; fChangeCached = false; nDebitCached = 0; nCreditCached = 0; + nImmatureCreditCached = 0; nAvailableCreditCached = 0; nChangeCached = 0; nOrderPos = -1; @@ -563,6 +567,20 @@ public: return nCreditCached; } + int64 GetImmatureCredit(bool fUseCache=true) const + { + if (IsCoinBase() && GetBlocksToMaturity() > 0 && IsInMainChain()) + { + if (fUseCache && fImmatureCreditCached) + return nImmatureCreditCached; + nImmatureCreditCached = pwallet->GetCredit(*this); + fImmatureCreditCached = true; + return nImmatureCreditCached; + } + + return 0; + } + int64 GetAvailableCredit(bool fUseCache=true) const { // Must wait until coinbase is safely deep enough in the chain before valuing it |