Browse Source

Only enqueue session refresh request once previous request is completed

Fixes impossible speed in graph
adaptive-webui-19844
jagannatharjun 4 years ago
parent
commit
f1edda2c81
  1. 26
      src/base/bittorrent/session.cpp
  2. 4
      src/base/bittorrent/session.h

26
src/base/bittorrent/session.cpp

@ -516,7 +516,6 @@ Session::Session(QObject *parent) @@ -516,7 +516,6 @@ Session::Session(QObject *parent)
, m_OSMemoryPriority(BITTORRENT_KEY("OSMemoryPriority"), OSMemoryPriority::BelowNormal)
#endif
, m_resumeFolderLock {new QFile {this}}
, m_refreshTimer {new QTimer {this}}
, m_seedingLimitTimer {new QTimer {this}}
, m_resumeDataTimer {new QTimer {this}}
, m_statistics {new Statistics {this}}
@ -552,10 +551,7 @@ Session::Session(QObject *parent) @@ -552,10 +551,7 @@ Session::Session(QObject *parent)
m_tags = List::toSet(m_storedTags.value());
m_refreshTimer->setInterval(refreshInterval());
connect(m_refreshTimer, &QTimer::timeout, this, &Session::refresh);
m_refreshTimer->start();
enqueueRefresh();
updateSeedingLimitTimer();
populateAdditionalTrackers();
@ -669,7 +665,6 @@ uint Session::refreshInterval() const @@ -669,7 +665,6 @@ uint Session::refreshInterval() const
void Session::setRefreshInterval(const uint value)
{
if (value != refreshInterval()) {
m_refreshTimer->setInterval(value);
m_refreshInterval = value;
}
}
@ -4127,10 +4122,17 @@ quint64 Session::getAlltimeUL() const @@ -4127,10 +4122,17 @@ quint64 Session::getAlltimeUL() const
return m_statistics->getAlltimeUL();
}
void Session::refresh()
void Session::enqueueRefresh()
{
Q_ASSERT(!m_refreshEnqueued);
QTimer::singleShot(refreshInterval(), this, [this] ()
{
m_nativeSession->post_torrent_updates();
m_nativeSession->post_session_stats();
});
m_refreshEnqueued = true;
}
void Session::handleIPFilterParsed(const int ruleCount)
@ -4666,6 +4668,11 @@ void Session::handleSessionStatsAlert(const lt::session_stats_alert *p) @@ -4666,6 +4668,11 @@ void Session::handleSessionStatsAlert(const lt::session_stats_alert *p)
? (stats[m_metricIndices.disk.diskJobTime] / totalJobs) : 0;
emit statsUpdated();
if (m_refreshEnqueued)
m_refreshEnqueued = false;
else
enqueueRefresh();
}
void Session::handleAlertsDroppedAlert(const lt::alerts_dropped_alert *p) const
@ -4712,6 +4719,11 @@ void Session::handleStateUpdateAlert(const lt::state_update_alert *p) @@ -4712,6 +4719,11 @@ void Session::handleStateUpdateAlert(const lt::state_update_alert *p)
if (!updatedTorrents.isEmpty())
emit torrentsUpdated(updatedTorrents);
if (m_refreshEnqueued)
m_refreshEnqueued = false;
else
enqueueRefresh();
}
#if (LIBTORRENT_VERSION_NUM >= 10204)

4
src/base/bittorrent/session.h

@ -516,7 +516,7 @@ namespace BitTorrent @@ -516,7 +516,7 @@ namespace BitTorrent
private slots:
void configureDeferred();
void readAlerts();
void refresh();
void enqueueRefresh();
void processShareLimits();
void generateResumeData(bool final = false);
void handleIPFilterParsed(int ruleCount);
@ -727,7 +727,7 @@ namespace BitTorrent @@ -727,7 +727,7 @@ namespace BitTorrent
QString m_resumeFolderPath;
QFile *m_resumeFolderLock = nullptr;
QTimer *m_refreshTimer = nullptr;
bool m_refreshEnqueued = false;
QTimer *m_seedingLimitTimer = nullptr;
QTimer *m_resumeDataTimer = nullptr;
Statistics *m_statistics = nullptr;

Loading…
Cancel
Save