mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-22 08:27:24 -06:00
Move "memory priority" settings to Application class
This commit is contained in:
@@ -447,9 +447,6 @@ Session::Session(QObject *parent)
|
||||
}
|
||||
)
|
||||
, m_resumeDataStorageType(BITTORRENT_SESSION_KEY(u"ResumeDataStorageType"_qs), ResumeDataStorageType::Legacy)
|
||||
#if defined(Q_OS_WIN)
|
||||
, m_OSMemoryPriority(BITTORRENT_KEY(u"OSMemoryPriority"_qs), OSMemoryPriority::BelowNormal)
|
||||
#endif
|
||||
, m_seedingLimitTimer {new QTimer {this}}
|
||||
, m_resumeDataTimer {new QTimer {this}}
|
||||
, m_statistics {new Statistics {this}}
|
||||
@@ -1067,10 +1064,6 @@ void Session::configureComponents()
|
||||
disableIPFilter();
|
||||
m_IPFilteringConfigured = true;
|
||||
}
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
applyOSMemoryPriority();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Session::prepareStartup()
|
||||
@@ -3494,67 +3487,6 @@ bool Session::isRestored() const
|
||||
return m_isRestored;
|
||||
}
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
OSMemoryPriority Session::getOSMemoryPriority() const
|
||||
{
|
||||
return m_OSMemoryPriority;
|
||||
}
|
||||
|
||||
void Session::setOSMemoryPriority(const OSMemoryPriority priority)
|
||||
{
|
||||
if (m_OSMemoryPriority == priority)
|
||||
return;
|
||||
|
||||
m_OSMemoryPriority = priority;
|
||||
configureDeferred();
|
||||
}
|
||||
|
||||
void Session::applyOSMemoryPriority() const
|
||||
{
|
||||
using SETPROCESSINFORMATION = BOOL (WINAPI *)(HANDLE, PROCESS_INFORMATION_CLASS, LPVOID, DWORD);
|
||||
const auto setProcessInformation = Utils::Misc::loadWinAPI<SETPROCESSINFORMATION>(u"Kernel32.dll"_qs, "SetProcessInformation");
|
||||
if (!setProcessInformation) // only available on Windows >= 8
|
||||
return;
|
||||
|
||||
#if (_WIN32_WINNT < _WIN32_WINNT_WIN8)
|
||||
// this dummy struct is required to compile successfully when targeting older Windows version
|
||||
struct MEMORY_PRIORITY_INFORMATION
|
||||
{
|
||||
ULONG MemoryPriority;
|
||||
};
|
||||
|
||||
#define MEMORY_PRIORITY_LOWEST 0
|
||||
#define MEMORY_PRIORITY_VERY_LOW 1
|
||||
#define MEMORY_PRIORITY_LOW 2
|
||||
#define MEMORY_PRIORITY_MEDIUM 3
|
||||
#define MEMORY_PRIORITY_BELOW_NORMAL 4
|
||||
#define MEMORY_PRIORITY_NORMAL 5
|
||||
#endif
|
||||
|
||||
MEMORY_PRIORITY_INFORMATION prioInfo {};
|
||||
switch (getOSMemoryPriority())
|
||||
{
|
||||
case OSMemoryPriority::Normal:
|
||||
default:
|
||||
prioInfo.MemoryPriority = MEMORY_PRIORITY_NORMAL;
|
||||
break;
|
||||
case OSMemoryPriority::BelowNormal:
|
||||
prioInfo.MemoryPriority = MEMORY_PRIORITY_BELOW_NORMAL;
|
||||
break;
|
||||
case OSMemoryPriority::Medium:
|
||||
prioInfo.MemoryPriority = MEMORY_PRIORITY_MEDIUM;
|
||||
break;
|
||||
case OSMemoryPriority::Low:
|
||||
prioInfo.MemoryPriority = MEMORY_PRIORITY_LOW;
|
||||
break;
|
||||
case OSMemoryPriority::VeryLow:
|
||||
prioInfo.MemoryPriority = MEMORY_PRIORITY_VERY_LOW;
|
||||
break;
|
||||
}
|
||||
setProcessInformation(::GetCurrentProcess(), ProcessMemoryPriority, &prioInfo, sizeof(prioInfo));
|
||||
}
|
||||
#endif
|
||||
|
||||
int Session::maxConnectionsPerTorrent() const
|
||||
{
|
||||
return m_maxConnectionsPerTorrent;
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
|
||||
@@ -151,18 +150,6 @@ namespace BitTorrent
|
||||
SQLite
|
||||
};
|
||||
Q_ENUM_NS(ResumeDataStorageType)
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
enum class OSMemoryPriority : int
|
||||
{
|
||||
Normal = 0,
|
||||
BelowNormal = 1,
|
||||
Medium = 2,
|
||||
Low = 3,
|
||||
VeryLow = 4
|
||||
};
|
||||
Q_ENUM_NS(OSMemoryPriority)
|
||||
#endif
|
||||
}
|
||||
|
||||
struct SessionMetricIndices
|
||||
@@ -464,10 +451,6 @@ namespace BitTorrent
|
||||
void setBannedIPs(const QStringList &newList);
|
||||
ResumeDataStorageType resumeDataStorageType() const;
|
||||
void setResumeDataStorageType(ResumeDataStorageType type);
|
||||
#if defined(Q_OS_WIN)
|
||||
OSMemoryPriority getOSMemoryPriority() const;
|
||||
void setOSMemoryPriority(OSMemoryPriority priority);
|
||||
#endif
|
||||
|
||||
bool isRestored() const;
|
||||
|
||||
@@ -629,9 +612,6 @@ namespace BitTorrent
|
||||
void populateAdditionalTrackers();
|
||||
void enableIPFilter();
|
||||
void disableIPFilter();
|
||||
#if defined(Q_OS_WIN)
|
||||
void applyOSMemoryPriority() const;
|
||||
#endif
|
||||
void processTrackerStatuses();
|
||||
void populateExcludedFileNamesRegExpList();
|
||||
void prepareStartup();
|
||||
@@ -795,9 +775,6 @@ namespace BitTorrent
|
||||
CachedSettingValue<QStringList> m_excludedFileNames;
|
||||
CachedSettingValue<QStringList> m_bannedIPs;
|
||||
CachedSettingValue<ResumeDataStorageType> m_resumeDataStorageType;
|
||||
#if defined(Q_OS_WIN)
|
||||
CachedSettingValue<OSMemoryPriority> m_OSMemoryPriority;
|
||||
#endif
|
||||
|
||||
bool m_isRestored = false;
|
||||
|
||||
|
||||
@@ -30,11 +30,31 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QtGlobal>
|
||||
#include <QMetaObject>
|
||||
|
||||
class QString;
|
||||
|
||||
class Path;
|
||||
struct QBtCommandLineParameters;
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
inline namespace ApplicationSettingsEnums
|
||||
{
|
||||
Q_NAMESPACE
|
||||
|
||||
enum class MemoryPriority : int
|
||||
{
|
||||
Normal = 0,
|
||||
BelowNormal = 1,
|
||||
Medium = 2,
|
||||
Low = 3,
|
||||
VeryLow = 4
|
||||
};
|
||||
Q_ENUM_NS(MemoryPriority)
|
||||
}
|
||||
#endif
|
||||
|
||||
class IApplication
|
||||
{
|
||||
public:
|
||||
@@ -58,4 +78,9 @@ public:
|
||||
|
||||
virtual int memoryWorkingSetLimit() const = 0;
|
||||
virtual void setMemoryWorkingSetLimit(int size) = 0;
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
virtual MemoryPriority processMemoryPriority() const = 0;
|
||||
virtual void setProcessMemoryPriority(MemoryPriority priority) = 0;
|
||||
#endif
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user