diff options
| author | TheKodeToad <TheKodeToad@proton.me> | 2023-06-26 01:18:55 +0100 | 
|---|---|---|
| committer | TheKodeToad <TheKodeToad@proton.me> | 2023-06-26 01:30:47 +0100 | 
| commit | 8bebd7f042fc912dedb652c613a76a346c29a38f (patch) | |
| tree | 9cd8ef31b622bc3f6edc322cce792bf7805624c8 /launcher | |
| parent | 903fae94be85d01efbb09f5b5f1154d8c8b76548 (diff) | |
| download | PrismLauncher-8bebd7f042fc912dedb652c613a76a346c29a38f.tar.gz PrismLauncher-8bebd7f042fc912dedb652c613a76a346c29a38f.tar.bz2 PrismLauncher-8bebd7f042fc912dedb652c613a76a346c29a38f.zip | |
Generate special signature :sparkles: composed of multiple elements instead of relying on timestamp for Java version cache invalidation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
Diffstat (limited to 'launcher')
| -rw-r--r-- | launcher/Application.cpp | 2 | ||||
| -rw-r--r-- | launcher/launch/steps/CheckJava.cpp | 15 | ||||
| -rw-r--r-- | launcher/launch/steps/CheckJava.h | 2 | ||||
| -rw-r--r-- | launcher/minecraft/MinecraftInstance.cpp | 2 | 
4 files changed, 13 insertions, 8 deletions
| diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 724e6e44..1d97a5f2 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -594,7 +594,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)          // Java Settings          m_settings->registerSetting("JavaPath", ""); -        m_settings->registerSetting("JavaTimestamp", 0); +        m_settings->registerSetting("JavaSignature", "");          m_settings->registerSetting("JavaArchitecture", "");          m_settings->registerSetting("JavaRealArchitecture", "");          m_settings->registerSetting("JavaVersion", ""); diff --git a/launcher/launch/steps/CheckJava.cpp b/launcher/launch/steps/CheckJava.cpp index f0187586..7d697ba9 100644 --- a/launcher/launch/steps/CheckJava.cpp +++ b/launcher/launch/steps/CheckJava.cpp @@ -81,15 +81,20 @@ void CheckJava::executeTask()      }      QFileInfo javaInfo(realJavaPath); -    qlonglong javaUnixTime = javaInfo.lastModified().toMSecsSinceEpoch(); -    auto storedUnixTime = settings->get("JavaTimestamp").toLongLong(); +    qint64 javaUnixTime = javaInfo.lastModified().toMSecsSinceEpoch(); +    auto storedSignature = settings->get("JavaSignature").toString();      auto storedArchitecture = settings->get("JavaArchitecture").toString();      auto storedRealArchitecture = settings->get("JavaRealArchitecture").toString();      auto storedVersion = settings->get("JavaVersion").toString();      auto storedVendor = settings->get("JavaVendor").toString(); -    m_javaUnixTime = javaUnixTime; + +    QCryptographicHash hash(QCryptographicHash::Sha1); +    hash.addData(QByteArray::number(javaUnixTime)); +    hash.addData(m_javaPath.toUtf8()); +    m_javaSignature = hash.result().toHex(); +      // if timestamps are not the same, or something is missing, check! -    if (javaUnixTime != storedUnixTime || storedVersion.size() == 0 +    if (m_javaSignature != storedSignature || storedVersion.size() == 0          || storedArchitecture.size() == 0 || storedRealArchitecture.size() == 0          || storedVendor.size() == 0)      { @@ -140,7 +145,7 @@ void CheckJava::checkJavaFinished(JavaCheckResult result)              instance->settings()->set("JavaArchitecture", result.mojangPlatform);              instance->settings()->set("JavaRealArchitecture", result.realPlatform);              instance->settings()->set("JavaVendor", result.javaVendor); -            instance->settings()->set("JavaTimestamp", m_javaUnixTime); +            instance->settings()->set("JavaSignature", m_javaSignature);              emitSucceeded();              return;          } diff --git a/launcher/launch/steps/CheckJava.h b/launcher/launch/steps/CheckJava.h index d084b132..bbf06b7c 100644 --- a/launcher/launch/steps/CheckJava.h +++ b/launcher/launch/steps/CheckJava.h @@ -40,6 +40,6 @@ private:  private:      QString m_javaPath; -    qlonglong m_javaUnixTime; +    QString m_javaSignature;      JavaCheckerPtr m_JavaChecker;  }; diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index f8ed5214..aab930de 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -148,7 +148,7 @@ void MinecraftInstance::loadSpecificSettings()          m_settings->registerOverride(global_settings->getSetting("IgnoreJavaCompatibility"), javaOrLocation);          // special! -        m_settings->registerPassthrough(global_settings->getSetting("JavaTimestamp"), javaOrLocation); +        m_settings->registerPassthrough(global_settings->getSetting("JavaSignature"), javaOrLocation);          m_settings->registerPassthrough(global_settings->getSetting("JavaArchitecture"), javaOrLocation);          m_settings->registerPassthrough(global_settings->getSetting("JavaRealArchitecture"), javaOrLocation);          m_settings->registerPassthrough(global_settings->getSetting("JavaVersion"), javaOrLocation); | 
