コード例 #1
0
ファイル: clientmodel.cpp プロジェクト: Chovanec/bitcoin
void ClientModel::updateTimer()
{
    // no locking required at this point
    // the following calls will acquire the required lock
    Q_EMIT mempoolSizeChanged(m_node.getMempoolSize(), m_node.getMempoolDynamicUsage());
    Q_EMIT bytesChanged(m_node.getTotalBytesRecv(), m_node.getTotalBytesSent());
}
コード例 #2
0
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();
    QDateTime newBlockDate = getLastBlockDate();

    // check for changed number of blocks we have, number of blocks peers claim to have, reindexing state and importing state
    if (cachedNumBlocks != newNumBlocks ||
        cachedBlockDate != newBlockDate ||
        cachedReindexing != fReindex ||
        cachedImporting != fImporting)
    {
        cachedNumBlocks = newNumBlocks;
        cachedBlockDate = newBlockDate;
        cachedReindexing = fReindex;
        cachedImporting = fImporting;

        Q_EMIT numBlocksChanged(newNumBlocks, newBlockDate);
    }

    Q_EMIT mempoolSizeChanged(getMempoolSize(), getMempoolDynamicUsage());
    Q_EMIT bytesChanged(getTotalBytesRecv(), getTotalBytesSent());
}