|
|
|
@ -1795,6 +1795,7 @@ CAmount CWalletTx::GetCachableAmount(AmountType type, const isminefilter& filter
|
|
|
|
|
auto& amount = m_amounts[type];
|
|
|
|
|
if (recalculate || !amount.m_cached[filter]) {
|
|
|
|
|
amount.Set(filter, type == DEBIT ? pwallet->GetDebit(*tx, filter) : pwallet->GetCredit(*tx, filter));
|
|
|
|
|
m_is_cache_empty = false;
|
|
|
|
|
}
|
|
|
|
|
return amount.m_value[filter];
|
|
|
|
|
}
|
|
|
|
@ -1871,6 +1872,7 @@ CAmount CWalletTx::GetAvailableCredit(bool fUseCache, const isminefilter& filter
|
|
|
|
|
|
|
|
|
|
if (allow_cache) {
|
|
|
|
|
m_amounts[AVAILABLE_CREDIT].Set(filter, nCredit);
|
|
|
|
|
m_is_cache_empty = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nCredit;
|
|
|
|
@ -3171,10 +3173,9 @@ int64_t CWallet::GetOldestKeyPoolTime()
|
|
|
|
|
void CWallet::MarkDestinationsDirty(const std::set<CTxDestination>& destinations) {
|
|
|
|
|
for (auto& entry : mapWallet) {
|
|
|
|
|
CWalletTx& wtx = entry.second;
|
|
|
|
|
|
|
|
|
|
if (wtx.m_is_cache_empty) continue;
|
|
|
|
|
for (unsigned int i = 0; i < wtx.tx->vout.size(); i++) {
|
|
|
|
|
CTxDestination dst;
|
|
|
|
|
|
|
|
|
|
if (ExtractDestination(wtx.tx->vout[i].scriptPubKey, dst) && destinations.count(dst)) {
|
|
|
|
|
wtx.MarkDirty();
|
|
|
|
|
break;
|
|
|
|
|