diff options
Diffstat (limited to 'launcher')
-rw-r--r-- | launcher/Application.cpp | 8 | ||||
-rw-r--r-- | launcher/Application.h | 2 | ||||
-rw-r--r-- | launcher/LoggedProcess.cpp | 16 | ||||
-rw-r--r-- | launcher/LoggedProcess.h | 7 | ||||
-rw-r--r-- | launcher/MangoHud.cpp | 23 | ||||
-rw-r--r-- | launcher/ui/themes/ITheme.cpp | 2 | ||||
-rw-r--r-- | launcher/ui/themes/ITheme.h | 2 | ||||
-rw-r--r-- | launcher/ui/themes/SystemTheme.cpp | 8 | ||||
-rw-r--r-- | launcher/ui/themes/SystemTheme.h | 2 | ||||
-rw-r--r-- | launcher/ui/themes/ThemeManager.cpp | 8 | ||||
-rw-r--r-- | launcher/ui/themes/ThemeManager.h | 4 |
11 files changed, 58 insertions, 24 deletions
diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 1fc31549..a7c97aa7 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -831,9 +831,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv) } }); - { - applyCurrentlySelectedTheme(); - } + applyCurrentlySelectedTheme(true); updateCapabilities(); @@ -1108,9 +1106,9 @@ QList<ITheme*> Application::getValidApplicationThemes() return m_themeManager->getValidApplicationThemes(); } -void Application::applyCurrentlySelectedTheme() +void Application::applyCurrentlySelectedTheme(bool initial) { - m_themeManager->applyCurrentlySelectedTheme(); + m_themeManager->applyCurrentlySelectedTheme(initial); } void Application::setApplicationTheme(const QString& name) diff --git a/launcher/Application.h b/launcher/Application.h index 91c5fc63..0d24a4e9 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -120,7 +120,7 @@ public: void setIconTheme(const QString& name); - void applyCurrentlySelectedTheme(); + void applyCurrentlySelectedTheme(bool initial = false); QList<ITheme*> getValidApplicationThemes(); diff --git a/launcher/LoggedProcess.cpp b/launcher/LoggedProcess.cpp index 6447f5c6..c8d5c34e 100644 --- a/launcher/LoggedProcess.cpp +++ b/launcher/LoggedProcess.cpp @@ -1,7 +1,8 @@ // SPDX-License-Identifier: GPL-3.0-only /* - * PolyMC - Minecraft Launcher - * Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net> + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022,2023 Sefa Eyeoglu <contact@scrumplex.net> + * Copyright (c) 2023 flowln <flowlnlnln@gmail.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -60,14 +61,23 @@ LoggedProcess::~LoggedProcess() } } -QStringList reprocess(const QByteArray& data, QTextDecoder& decoder) +QStringList LoggedProcess::reprocess(const QByteArray& data, QTextDecoder& decoder) { auto str = decoder.toUnicode(data); + + if (!m_leftover_line.isEmpty()) { + str.prepend(m_leftover_line); + m_leftover_line = ""; + } + #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) auto lines = str.remove(QChar::CarriageReturn).split(QChar::LineFeed, QString::SkipEmptyParts); #else auto lines = str.remove(QChar::CarriageReturn).split(QChar::LineFeed, Qt::SkipEmptyParts); #endif + + if (!str.endsWith(QChar::LineFeed)) + m_leftover_line = lines.takeLast(); return lines; } diff --git a/launcher/LoggedProcess.h b/launcher/LoggedProcess.h index 2360d1ea..af3ed79f 100644 --- a/launcher/LoggedProcess.h +++ b/launcher/LoggedProcess.h @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* - * PolyMC - Minecraft Launcher - * Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net> + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022,2023 Sefa Eyeoglu <contact@scrumplex.net> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -88,9 +88,12 @@ private slots: private: void changeState(LoggedProcess::State state); + QStringList reprocess(const QByteArray& data, QTextDecoder& decoder); + private: QTextDecoder m_err_decoder = QTextDecoder(QTextCodec::codecForLocale()); QTextDecoder m_out_decoder = QTextDecoder(QTextCodec::codecForLocale()); + QString m_leftover_line; bool m_killed = false; State m_state = NotRunning; int m_exit_code = 0; diff --git a/launcher/MangoHud.cpp b/launcher/MangoHud.cpp index d635518e..90e48e29 100644 --- a/launcher/MangoHud.cpp +++ b/launcher/MangoHud.cpp @@ -19,6 +19,7 @@ #include <QStringList> #include <QDir> #include <QString> +#include <QSysInfo> #include <QtGlobal> #include "MangoHud.h" @@ -75,9 +76,27 @@ QString getLibraryString() } for (QString vkLayer : vkLayerList) { - QString filePath = FS::PathCombine(vkLayer, "MangoHud.json"); - if (!QFile::exists(filePath)) + // prefer to use architecture specific vulkan layers + QString currentArch = QSysInfo::currentCpuArchitecture(); + + if (currentArch == "arm64") { + currentArch = "aarch64"; + } + + QStringList manifestNames = { QString("MangoHud.%1.json").arg(currentArch), "MangoHud.json" }; + + QString filePath = ""; + for (QString manifestName : manifestNames) { + QString tryPath = FS::PathCombine(vkLayer, manifestName); + if (QFile::exists(tryPath)) { + filePath = tryPath; + break; + } + } + + if (filePath.isEmpty()) { continue; + } auto conf = Json::requireDocument(filePath, vkLayer); auto confObject = Json::requireObject(conf, vkLayer); diff --git a/launcher/ui/themes/ITheme.cpp b/launcher/ui/themes/ITheme.cpp index 22043e44..8f0757e1 100644 --- a/launcher/ui/themes/ITheme.cpp +++ b/launcher/ui/themes/ITheme.cpp @@ -38,7 +38,7 @@ #include <QDir> #include "Application.h" -void ITheme::apply() +void ITheme::apply(bool) { APPLICATION->setStyleSheet(QString()); QApplication::setStyle(QStyleFactory::create(qtTheme())); diff --git a/launcher/ui/themes/ITheme.h b/launcher/ui/themes/ITheme.h index 2e5b7f25..a0a638bd 100644 --- a/launcher/ui/themes/ITheme.h +++ b/launcher/ui/themes/ITheme.h @@ -41,7 +41,7 @@ class QStyle; class ITheme { public: virtual ~ITheme() {} - virtual void apply(); + virtual void apply(bool initial); virtual QString id() = 0; virtual QString name() = 0; virtual bool hasStyleSheet() = 0; diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index 24875e33..a95bc875 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -60,9 +60,13 @@ SystemTheme::SystemTheme() themeDebugLog() << "System theme not found, defaulted to Fusion"; } -void SystemTheme::apply() +void SystemTheme::apply(bool initial) { - ITheme::apply(); + // See https://github.com/MultiMC/Launcher/issues/1790 + // or https://github.com/PrismLauncher/PrismLauncher/issues/490 + if (initial) + return; + ITheme::apply(initial); } QString SystemTheme::id() diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index b5c03def..05f31233 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -40,7 +40,7 @@ class SystemTheme : public ITheme { public: SystemTheme(); virtual ~SystemTheme() {} - void apply() override; + void apply(bool initial) override; QString id() override; QString name() override; diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 13406485..94ac8a24 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -116,22 +116,22 @@ void ThemeManager::setIconTheme(const QString& name) QIcon::setThemeName(name); } -void ThemeManager::applyCurrentlySelectedTheme() +void ThemeManager::applyCurrentlySelectedTheme(bool initial) { setIconTheme(APPLICATION->settings()->get("IconTheme").toString()); themeDebugLog() << "<> Icon theme set."; - setApplicationTheme(APPLICATION->settings()->get("ApplicationTheme").toString()); + setApplicationTheme(APPLICATION->settings()->get("ApplicationTheme").toString(), initial); themeDebugLog() << "<> Application theme set."; } -void ThemeManager::setApplicationTheme(const QString& name) +void ThemeManager::setApplicationTheme(const QString& name, bool initial) { auto systemPalette = qApp->palette(); auto themeIter = m_themes.find(name); if (themeIter != m_themes.end()) { auto& theme = themeIter->second; themeDebugLog() << "applying theme" << theme->name(); - theme->apply(); + theme->apply(initial); } else { themeWarningLog() << "Tried to set invalid theme:" << name; } diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index 9af44b5a..87f36d9c 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -37,8 +37,8 @@ class ThemeManager { QList<ITheme*> getValidApplicationThemes(); void setIconTheme(const QString& name); - void applyCurrentlySelectedTheme(); - void setApplicationTheme(const QString& name); + void applyCurrentlySelectedTheme(bool initial = false); + void setApplicationTheme(const QString& name, bool initial = false); /// <summary> /// Returns the cat based on selected cat and with events (Birthday, XMas, etc.) |