Browse Source

Allow disabling of OS cache. This will prevent RAM increases on Windows when seeding many files. Closes #1699.

adaptive-webui-19844
sledgehammer999 10 years ago
parent
commit
80d6a5a73e
  1. 9
      src/preferences/advancedsettings.h
  2. 8
      src/preferences/preferences.cpp
  3. 2
      src/preferences/preferences.h
  4. 3
      src/qtlibtorrent/qbtsession.cpp

9
src/preferences/advancedsettings.h

@ -13,7 +13,7 @@
#include "preferences.h" #include "preferences.h"
enum AdvSettingsCols {PROPERTY, VALUE}; enum AdvSettingsCols {PROPERTY, VALUE};
enum AdvSettingsRows {DISK_CACHE, DISK_CACHE_TTL, OUTGOING_PORT_MIN, OUTGOING_PORT_MAX, IGNORE_LIMIT_LAN, RECHECK_COMPLETED, LIST_REFRESH, RESOLVE_COUNTRIES, RESOLVE_HOSTS, MAX_HALF_OPEN, SUPER_SEEDING, NETWORK_IFACE, NETWORK_ADDRESS, PROGRAM_NOTIFICATIONS, TRACKER_STATUS, TRACKER_PORT, enum AdvSettingsRows {DISK_CACHE, DISK_CACHE_TTL, OS_CACHE, OUTGOING_PORT_MIN, OUTGOING_PORT_MAX, IGNORE_LIMIT_LAN, RECHECK_COMPLETED, LIST_REFRESH, RESOLVE_COUNTRIES, RESOLVE_HOSTS, MAX_HALF_OPEN, SUPER_SEEDING, NETWORK_IFACE, NETWORK_ADDRESS, PROGRAM_NOTIFICATIONS, TRACKER_STATUS, TRACKER_PORT,
#if defined(Q_OS_WIN) || defined(Q_OS_MAC) #if defined(Q_OS_WIN) || defined(Q_OS_MAC)
UPDATE_CHECK, UPDATE_CHECK,
#endif #endif
@ -29,7 +29,7 @@ class AdvancedSettings: public QTableWidget {
private: private:
QSpinBox spin_cache, outgoing_ports_min, outgoing_ports_max, spin_list_refresh, spin_maxhalfopen, spin_tracker_port; QSpinBox spin_cache, outgoing_ports_min, outgoing_ports_max, spin_list_refresh, spin_maxhalfopen, spin_tracker_port;
QCheckBox cb_ignore_limits_lan, cb_recheck_completed, cb_resolve_countries, cb_resolve_hosts, QCheckBox cb_os_cache, cb_ignore_limits_lan, cb_recheck_completed, cb_resolve_countries, cb_resolve_hosts,
cb_super_seeding, cb_program_notifications, cb_tracker_status, cb_confirm_torrent_deletion, cb_super_seeding, cb_program_notifications, cb_tracker_status, cb_confirm_torrent_deletion,
cb_enable_tracker_ext; cb_enable_tracker_ext;
QComboBox combo_iface; QComboBox combo_iface;
@ -71,6 +71,8 @@ public slots:
// Disk write cache // Disk write cache
pref->setDiskCacheSize(spin_cache.value()); pref->setDiskCacheSize(spin_cache.value());
pref->setDiskCacheTTL(spin_cache_ttl.value()); pref->setDiskCacheTTL(spin_cache_ttl.value());
// Enable OS cache
pref->setOsCache(cb_os_cache.isChecked());
// Outgoing ports // Outgoing ports
pref->setOutgoingPortsMin(outgoing_ports_min.value()); pref->setOutgoingPortsMin(outgoing_ports_min.value());
pref->setOutgoingPortsMax(outgoing_ports_max.value()); pref->setOutgoingPortsMax(outgoing_ports_max.value());
@ -188,6 +190,9 @@ private slots:
spin_cache_ttl.setValue(pref->diskCacheTTL()); spin_cache_ttl.setValue(pref->diskCacheTTL());
spin_cache_ttl.setSuffix(tr(" s", " seconds")); spin_cache_ttl.setSuffix(tr(" s", " seconds"));
setRow(DISK_CACHE_TTL, tr("Disk cache expiry interval"), &spin_cache_ttl); setRow(DISK_CACHE_TTL, tr("Disk cache expiry interval"), &spin_cache_ttl);
// Enable OS cache
cb_os_cache.setChecked(pref->osCache());
setRow(OS_CACHE, tr("Enable OS cache"), &cb_os_cache);
// Outgoing port Min // Outgoing port Min
outgoing_ports_min.setMinimum(0); outgoing_ports_min.setMinimum(0);
outgoing_ports_min.setMaximum(65535); outgoing_ports_min.setMaximum(65535);

8
src/preferences/preferences.cpp

@ -1139,6 +1139,14 @@ void Preferences::setDiskCacheTTL(uint ttl) {
setValue("Preferences/Downloads/DiskWriteCacheTTL", ttl); setValue("Preferences/Downloads/DiskWriteCacheTTL", ttl);
} }
bool Preferences::osCache() const {
return value("Preferences/Advanced/osCache", true).toBool();
}
void Preferences::setOsCache(bool enable) {
setValue("Preferences/Advanced/osCache", enable);
}
uint Preferences::outgoingPortsMin() const { uint Preferences::outgoingPortsMin() const {
return value("Preferences/Advanced/OutgoingPortsMin", 0).toUInt(); return value("Preferences/Advanced/OutgoingPortsMin", 0).toUInt();
} }

2
src/preferences/preferences.h

@ -308,6 +308,8 @@ public:
void setDiskCacheSize(uint size); void setDiskCacheSize(uint size);
uint diskCacheTTL() const; uint diskCacheTTL() const;
void setDiskCacheTTL(uint ttl); void setDiskCacheTTL(uint ttl);
bool osCache() const;
void setOsCache(bool enable);
uint outgoingPortsMin() const; uint outgoingPortsMin() const;
void setOutgoingPortsMin(uint val); void setOutgoingPortsMin(uint val);
uint outgoingPortsMax() const; uint outgoingPortsMax() const;

3
src/qtlibtorrent/qbtsession.cpp

@ -411,6 +411,9 @@ void QBtSession::configureSession() {
sessionSettings.cache_size = cache_size ? cache_size * 64 : -1; sessionSettings.cache_size = cache_size ? cache_size * 64 : -1;
sessionSettings.cache_expiry = pref->diskCacheTTL(); sessionSettings.cache_expiry = pref->diskCacheTTL();
qDebug() << "Using a disk cache size of" << cache_size << "MiB"; qDebug() << "Using a disk cache size of" << cache_size << "MiB";
session_settings::io_buffer_mode_t mode = pref->osCache() ? session_settings::enable_os_cache : session_settings::disable_os_cache;
sessionSettings.disk_io_read_mode = mode;
sessionSettings.disk_io_write_mode = mode;
sessionSettings.anonymous_mode = pref->isAnonymousModeEnabled(); sessionSettings.anonymous_mode = pref->isAnonymousModeEnabled();
if (sessionSettings.anonymous_mode) { if (sessionSettings.anonymous_mode) {
addConsoleMessage(tr("Anonymous mode [ON]"), "blue"); addConsoleMessage(tr("Anonymous mode [ON]"), "blue");

Loading…
Cancel
Save