From 5ee4fb3522ea2bb66ad49e1cdd91140b8d5c6a00 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Fri, 11 Nov 2022 15:02:08 +0100 Subject: feat: validate maximum memory allocation Signed-off-by: Sefa Eyeoglu --- .../ui/pages/instance/InstanceSettingsPage.cpp | 26 ++++++- launcher/ui/pages/instance/InstanceSettingsPage.h | 3 + launcher/ui/pages/instance/InstanceSettingsPage.ui | 87 +++++++++++++--------- 3 files changed, 77 insertions(+), 39 deletions(-) (limited to 'launcher/ui/pages/instance') diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 5da7f19f..50039e87 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -59,12 +59,12 @@ InstanceSettingsPage::InstanceSettingsPage(BaseInstance *inst, QWidget *parent) { m_settings = inst->settings(); ui->setupUi(this); - auto sysMB = Sys::getSystemRam() / Sys::mebibyte; - ui->maxMemSpinBox->setMaximum(sysMB); + connect(ui->openGlobalJavaSettingsButton, &QCommandLinkButton::clicked, this, &InstanceSettingsPage::globalSettingsButtonClicked); connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::applySettings); connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings); loadSettings(); + updateThresholds(); } bool InstanceSettingsPage::shouldDisplay() const @@ -437,6 +437,11 @@ void InstanceSettingsPage::on_javaTestBtn_clicked() checker->run(); } +void InstanceSettingsPage::on_maxMemSpinBox_valueChanged(int i) +{ + updateThresholds(); +} + void InstanceSettingsPage::checkerFinished() { checker.reset(); @@ -447,3 +452,20 @@ void InstanceSettingsPage::retranslate() ui->retranslateUi(this); ui->customCommands->retranslate(); // TODO: why is this seperate from the others? } + +void InstanceSettingsPage::updateThresholds() +{ + auto sysMiB = Sys::getSystemRam() / Sys::mebibyte; + unsigned int maxMem = ui->maxMemSpinBox->value(); + + if (maxMem >= sysMiB) { + ui->labelMaxMemIcon->setText(u8"✘"); + ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity.")); + } else if (maxMem > (sysMiB * 0.9)) { + ui->labelMaxMemIcon->setText(u8"⚠"); + ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity.")); + } else { + ui->labelMaxMemIcon->setText(u8"✔"); + ui->labelMaxMemIcon->setToolTip(""); + } +} diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.h b/launcher/ui/pages/instance/InstanceSettingsPage.h index 97d1296f..7450188d 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.h +++ b/launcher/ui/pages/instance/InstanceSettingsPage.h @@ -77,10 +77,13 @@ public: virtual bool shouldDisplay() const override; void retranslate() override; + void updateThresholds(); + private slots: void on_javaDetectBtn_clicked(); void on_javaTestBtn_clicked(); void on_javaBrowseBtn_clicked(); + void on_maxMemSpinBox_valueChanged(int i); void applySettings(); void loadSettings(); diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index 8b3c3370..43488aa2 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -112,40 +112,54 @@ false - - - + + + - Minimum memory allocation: + PermGen: - - + + + + Maximum memory allocation: + + + + + + + Note: Permgen is set automatically by Java 8 and later + + + + + - The maximum amount of memory Minecraft is allowed to use. + The amount of memory available to store loaded Java classes. MiB - 128 + 64 - 65536 + 999999999 - 128 + 8 - 1024 + 64 - - + + - The amount of memory Minecraft is started with. + The maximum amount of memory Minecraft is allowed to use. MiB @@ -160,50 +174,49 @@ 128 - 256 + 1024 - - + + + + Minimum memory allocation: + + + + + - The amount of memory available to store loaded Java classes. + The amount of memory Minecraft is started with. MiB - 64 + 128 - 999999999 + 65536 - 8 + 128 - 64 + 256 - - + + - PermGen: + - - - - - - Maximum memory allocation: + + Qt::AlignCenter - - - - - - Note: Permgen is set automatically by Java 8 and later + + maxMemSpinBox -- cgit From 863a168cb5cb7332ae9782c3967d563f7f98316d Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Fri, 11 Nov 2022 15:04:18 +0100 Subject: feat: raise memory limits to 1TiB Signed-off-by: Sefa Eyeoglu --- launcher/ui/pages/global/JavaPage.ui | 4 ++-- launcher/ui/pages/instance/InstanceSettingsPage.ui | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'launcher/ui/pages/instance') diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 19e23eba..73461237 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -57,7 +57,7 @@ 128 - 65536 + 1048576 128 @@ -89,7 +89,7 @@ 128 - 65536 + 1048576 128 diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index 43488aa2..2063dc55 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -168,7 +168,7 @@ 128 - 65536 + 1048576 128 @@ -197,7 +197,7 @@ 128 - 65536 + 1048576 128 -- cgit From cabd887866929103f635a2640589ce95570f8573 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Fri, 11 Nov 2022 15:22:16 +0100 Subject: feat: use icons to show memory allocation state Signed-off-by: Sefa Eyeoglu --- launcher/ui/pages/global/JavaPage.cpp | 15 ++++++++++++--- launcher/ui/pages/instance/InstanceSettingsPage.cpp | 15 ++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) (limited to 'launcher/ui/pages/instance') diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 00c06cff..81dd4cc1 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -196,14 +196,23 @@ void JavaPage::updateThresholds() auto sysMiB = Sys::getSystemRam() / Sys::mebibyte; unsigned int maxMem = ui->maxMemSpinBox->value(); + QString iconName; + if (maxMem >= sysMiB) { - ui->labelMaxMemIcon->setText(u8"✘"); + iconName = "status-bad"; ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity.")); } else if (maxMem > (sysMiB * 0.9)) { - ui->labelMaxMemIcon->setText(u8"⚠"); + iconName = "status-yellow"; ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity.")); } else { - ui->labelMaxMemIcon->setText(u8"✔"); + iconName = "status-good"; ui->labelMaxMemIcon->setToolTip(""); } + + { + auto height = ui->labelMaxMemIcon->fontInfo().pixelSize(); + QIcon icon = APPLICATION->getThemedIcon(iconName); + QPixmap pix = icon.pixmap(height, height); + ui->labelMaxMemIcon->setPixmap(pix); + } } diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 50039e87..af2ba7c8 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -458,14 +458,23 @@ void InstanceSettingsPage::updateThresholds() auto sysMiB = Sys::getSystemRam() / Sys::mebibyte; unsigned int maxMem = ui->maxMemSpinBox->value(); + QString iconName; + if (maxMem >= sysMiB) { - ui->labelMaxMemIcon->setText(u8"✘"); + iconName = "status-bad"; ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity.")); } else if (maxMem > (sysMiB * 0.9)) { - ui->labelMaxMemIcon->setText(u8"⚠"); + iconName = "status-yellow"; ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity.")); } else { - ui->labelMaxMemIcon->setText(u8"✔"); + iconName = "status-good"; ui->labelMaxMemIcon->setToolTip(""); } + + { + auto height = ui->labelMaxMemIcon->fontInfo().pixelSize(); + QIcon icon = APPLICATION->getThemedIcon(iconName); + QPixmap pix = icon.pixmap(height, height); + ui->labelMaxMemIcon->setPixmap(pix); + } } -- cgit From b57fee1a444bef22f6a0f8f268dc1d11be31a0db Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Fri, 11 Nov 2022 15:24:14 +0100 Subject: fix: swap spin box and state icon Signed-off-by: Sefa Eyeoglu --- launcher/ui/pages/global/JavaPage.ui | 68 +++++++++++----------- launcher/ui/pages/instance/InstanceSettingsPage.ui | 46 +++++++-------- 2 files changed, 57 insertions(+), 57 deletions(-) (limited to 'launcher/ui/pages/instance') diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 73461237..6749cbe4 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -44,26 +44,14 @@ Memory - - - - - The maximum amount of memory Minecraft is allowed to use. - - - MiB - - - 128 - - - 1048576 - - - 128 + + + + + Ma&ximum memory allocation: - - 1024 + + maxMemSpinBox @@ -77,6 +65,16 @@ + + + + &Minimum memory allocation: + + + minMemSpinBox + + + @@ -99,23 +97,25 @@ - - - - Ma&ximum memory allocation: + + + + The maximum amount of memory Minecraft is allowed to use. - - maxMemSpinBox + + MiB - - - - - - &Minimum memory allocation: + + 128 - - minMemSpinBox + + 1048576 + + + 128 + + + 1024 @@ -141,7 +141,7 @@ - + diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index 2063dc55..b064367d 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -112,7 +112,7 @@ false - + @@ -120,6 +120,13 @@ + + + + Minimum memory allocation: + + + @@ -134,25 +141,25 @@ - - + + - The amount of memory available to store loaded Java classes. + The amount of memory Minecraft is started with. MiB - 64 + 128 - 999999999 + 1048576 - 8 + 128 - 64 + 256 @@ -178,36 +185,29 @@ - - - - Minimum memory allocation: - - - - - + + - The amount of memory Minecraft is started with. + The amount of memory available to store loaded Java classes. MiB - 128 + 64 - 1048576 + 999999999 - 128 + 8 - 256 + 64 - + -- cgit