feat: detect GameMode and MangoHud's presence
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
This commit is contained in:
parent
f873cd5b1a
commit
68f3f98bc3
@ -113,6 +113,11 @@
|
||||
|
||||
#include <sys.h>
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
#include <dlfcn.h>
|
||||
#include "gamemode_client.h"
|
||||
#endif
|
||||
|
||||
|
||||
#if defined Q_OS_WIN32
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
@ -1573,6 +1578,23 @@ void Application::updateCapabilities()
|
||||
m_capabilities |= SupportsMSA;
|
||||
if (!getFlameAPIKey().isEmpty())
|
||||
m_capabilities |= SupportsFlame;
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
if (gamemode_query_status() >= 0)
|
||||
m_capabilities |= SupportsGameMode;
|
||||
|
||||
{
|
||||
void *dummy = dlopen("libMangoHud_dlsym.so", RTLD_LAZY);
|
||||
// try normal variant as well
|
||||
if (dummy == NULL)
|
||||
dummy = dlopen("libMangoHud.so", RTLD_LAZY);
|
||||
|
||||
if (dummy != NULL) {
|
||||
dlclose(dummy);
|
||||
m_capabilities |= SupportsMangoHud;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
QString Application::getJarPath(QString jarFile)
|
||||
|
@ -95,6 +95,8 @@ public:
|
||||
|
||||
SupportsMSA = 1 << 0,
|
||||
SupportsFlame = 1 << 1,
|
||||
SupportsGameMode = 1 << 2,
|
||||
SupportsMangoHud = 1 << 3,
|
||||
};
|
||||
Q_DECLARE_FLAGS(Capabilities, Capability)
|
||||
|
||||
|
@ -122,6 +122,16 @@ void MinecraftPage::loadSettings()
|
||||
ui->perfomanceGroupBox->setVisible(false);
|
||||
#endif
|
||||
|
||||
if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) {
|
||||
ui->enableFeralGamemodeCheck->setDisabled(true);
|
||||
ui->enableFeralGamemodeCheck->setToolTip(tr("Feral Interactive's GameMode could not be found on your system."));
|
||||
}
|
||||
|
||||
if (!(APPLICATION->capabilities() & Application::SupportsMangoHud)) {
|
||||
ui->enableMangoHud->setDisabled(true);
|
||||
ui->enableMangoHud->setToolTip(tr("MangoHud could not be found on your system."));
|
||||
}
|
||||
|
||||
ui->showGameTime->setChecked(s->get("ShowGameTime").toBool());
|
||||
ui->showGlobalGameTime->setChecked(s->get("ShowGlobalGameTime").toBool());
|
||||
ui->recordGameTime->setChecked(s->get("RecordGameTime").toBool());
|
||||
|
@ -348,9 +348,19 @@ void InstanceSettingsPage::loadSettings()
|
||||
ui->enableMangoHud->setChecked(m_settings->get("EnableMangoHud").toBool());
|
||||
ui->useDiscreteGpuCheck->setChecked(m_settings->get("UseDiscreteGpu").toBool());
|
||||
|
||||
#if !defined(Q_OS_LINUX)
|
||||
#if !defined(Q_OS_LINUX)
|
||||
ui->settingsTabs->setTabVisible(ui->settingsTabs->indexOf(ui->performancePage), false);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) {
|
||||
ui->enableFeralGamemodeCheck->setDisabled(true);
|
||||
ui->enableFeralGamemodeCheck->setToolTip(tr("Feral Interactive's GameMode could not be found on your system."));
|
||||
}
|
||||
|
||||
if (!(APPLICATION->capabilities() & Application::SupportsMangoHud)) {
|
||||
ui->enableMangoHud->setDisabled(true);
|
||||
ui->enableMangoHud->setToolTip(tr("MangoHud could not be found on your system."));
|
||||
}
|
||||
|
||||
// Miscellanous
|
||||
ui->gameTimeGroupBox->setChecked(m_settings->get("OverrideGameTime").toBool());
|
||||
|
Loading…
Reference in New Issue
Block a user