diff options
author | Petr Mrázek <peterix@gmail.com> | 2014-07-06 11:15:15 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2014-07-06 11:15:15 +0200 |
commit | cc499488dbab9167870e6088f9a1793f95894c79 (patch) | |
tree | d6efb25086f4c2c6cb3c0a3dc8ad5a5a80985286 /logic | |
parent | a218d7b7f6a9e30671be72b756104302637eb33d (diff) | |
download | MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.tar MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.tar.gz MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.tar.lz MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.tar.xz MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.zip |
Fix liteloader, some cleanups.
Diffstat (limited to 'logic')
-rw-r--r-- | logic/RWStorage.h | 60 | ||||
-rw-r--r-- | logic/auth/flows/AuthenticateTask.cpp | 1 | ||||
-rw-r--r-- | logic/auth/flows/RefreshTask.cpp | 1 | ||||
-rw-r--r-- | logic/auth/flows/ValidateTask.cpp | 1 | ||||
-rw-r--r-- | logic/liteloader/LiteLoaderInstaller.cpp | 9 | ||||
-rw-r--r-- | logic/liteloader/LiteLoaderVersionList.cpp | 17 | ||||
-rw-r--r-- | logic/liteloader/LiteLoaderVersionList.h | 3 | ||||
-rw-r--r-- | logic/minecraft/InstanceVersion.cpp | 1 | ||||
-rw-r--r-- | logic/minecraft/VersionBuilder.cpp | 1 | ||||
-rw-r--r-- | logic/settings/SettingsObject.h | 2 |
10 files changed, 83 insertions, 13 deletions
diff --git a/logic/RWStorage.h b/logic/RWStorage.h new file mode 100644 index 00000000..b1598ca4 --- /dev/null +++ b/logic/RWStorage.h @@ -0,0 +1,60 @@ +#pragma once +template <typename K, typename V> +class RWStorage +{ +public: + void add(K key, V value) + { + QWriteLocker l(&lock); + cache[key] = value; + stale_entries.remove(key); + } + V get(K key) + { + QReadLocker l(&lock); + if(cache.contains(key)) + { + return cache[key]; + } + else return V(); + } + bool get(K key, V& value) + { + QReadLocker l(&lock); + if(cache.contains(key)) + { + value = cache[key]; + return true; + } + else return false; + } + bool has(K key) + { + QReadLocker l(&lock); + return cache.contains(key); + } + bool stale(K key) + { + QReadLocker l(&lock); + if(!cache.contains(key)) + return true; + return stale_entries.contains(key); + } + void setStale(K key) + { + QReadLocker l(&lock); + if(cache.contains(key)) + { + stale_entries.insert(key); + } + } + void clear() + { + QWriteLocker l(&lock); + cache.clear(); + } +private: + QReadWriteLock lock; + QMap<K, V> cache; + QSet<K> stale_entries; +};
\ No newline at end of file diff --git a/logic/auth/flows/AuthenticateTask.cpp b/logic/auth/flows/AuthenticateTask.cpp index 340235e3..33634fd4 100644 --- a/logic/auth/flows/AuthenticateTask.cpp +++ b/logic/auth/flows/AuthenticateTask.cpp @@ -22,7 +22,6 @@ #include <QJsonObject> #include <QJsonArray> #include <QVariant> -#include <QDebug> #include "logger/QsLog.h" diff --git a/logic/auth/flows/RefreshTask.cpp b/logic/auth/flows/RefreshTask.cpp index 7e926c2b..61974476 100644 --- a/logic/auth/flows/RefreshTask.cpp +++ b/logic/auth/flows/RefreshTask.cpp @@ -21,7 +21,6 @@ #include <QJsonObject> #include <QJsonArray> #include <QVariant> -#include <QDebug> #include "logger/QsLog.h" diff --git a/logic/auth/flows/ValidateTask.cpp b/logic/auth/flows/ValidateTask.cpp index f3fc1e71..dd73218f 100644 --- a/logic/auth/flows/ValidateTask.cpp +++ b/logic/auth/flows/ValidateTask.cpp @@ -22,7 +22,6 @@ #include <QJsonObject> #include <QJsonArray> #include <QVariant> -#include <QDebug> #include "logger/QsLog.h" diff --git a/logic/liteloader/LiteLoaderInstaller.cpp b/logic/liteloader/LiteLoaderInstaller.cpp index ea1a4396..863c7fcb 100644 --- a/logic/liteloader/LiteLoaderInstaller.cpp +++ b/logic/liteloader/LiteLoaderInstaller.cpp @@ -49,13 +49,12 @@ bool LiteLoaderInstaller::add(OneSixInstance *to) QJsonArray libraries; - for (auto libStr : m_version->libraries) + for (auto rawLibrary : m_version->libraries) { - OneSixLibrary lib(libStr); + rawLibrary->insertType = RawLibrary::Prepend; + OneSixLibrary lib(rawLibrary); lib.finalize(); - QJsonObject libObj = lib.toJson(); - libObj.insert("insert", QString("prepend")); - libraries.append(libObj); + libraries.append(lib.toJson()); } // liteloader diff --git a/logic/liteloader/LiteLoaderVersionList.cpp b/logic/liteloader/LiteLoaderVersionList.cpp index ef95eefd..c9a21cb9 100644 --- a/logic/liteloader/LiteLoaderVersionList.cpp +++ b/logic/liteloader/LiteLoaderVersionList.cpp @@ -16,6 +16,7 @@ #include "LiteLoaderVersionList.h" #include "MultiMC.h" #include "logic/net/URLConstants.h" +#include <MMCError.h> #include <QtXml> @@ -206,7 +207,21 @@ void LLListLoadTask::listDownloaded() const QJsonArray libs = artefact.value("libraries").toArray(); for (auto lIt = libs.begin(); lIt != libs.end(); ++lIt) { - version->libraries.append((*lIt).toObject().value("name").toString()); + auto libobject = (*lIt).toObject(); + try + { + auto lib = RawLibrary::fromJson(libobject, "versions.json"); + if(lib->m_name.startsWith("org.ow2.asm:asm-all:")) + { + lib->m_base_url = "http://repo.maven.apache.org/maven2/"; + } + version->libraries.append(lib); + } + catch (MMCError &e) + { + QLOG_ERROR() << "Couldn't read JSON object:"; + continue; + } } perMcVersionList.append(version); } diff --git a/logic/liteloader/LiteLoaderVersionList.h b/logic/liteloader/LiteLoaderVersionList.h index 0aecc3e1..91ed077c 100644 --- a/logic/liteloader/LiteLoaderVersionList.h +++ b/logic/liteloader/LiteLoaderVersionList.h @@ -23,6 +23,7 @@ #include "logic/BaseVersionList.h" #include "logic/tasks/Task.h" #include "logic/net/NetJob.h" +#include <logic/minecraft/RawLibrary.h> class LLListLoadTask; class QNetworkReply; @@ -55,7 +56,7 @@ public: int timestamp; bool isLatest; QString tweakClass; - QStringList libraries; + QList<RawLibraryPtr> libraries; // meta QString defaultUrl; diff --git a/logic/minecraft/InstanceVersion.cpp b/logic/minecraft/InstanceVersion.cpp index 91393b53..e71609e6 100644 --- a/logic/minecraft/InstanceVersion.cpp +++ b/logic/minecraft/InstanceVersion.cpp @@ -13,7 +13,6 @@ * limitations under the License. */ -#include <QDebug> #include <QFile> #include <QDir> #include <QUuid> diff --git a/logic/minecraft/VersionBuilder.cpp b/logic/minecraft/VersionBuilder.cpp index ddcf6333..66e7d327 100644 --- a/logic/minecraft/VersionBuilder.cpp +++ b/logic/minecraft/VersionBuilder.cpp @@ -22,7 +22,6 @@ #include <QMessageBox> #include <QObject> #include <QDir> -#include <QDebug> #include <qresource.h> #include <modutils.h> diff --git a/logic/settings/SettingsObject.h b/logic/settings/SettingsObject.h index e46a1b7f..4f11310d 100644 --- a/logic/settings/SettingsObject.h +++ b/logic/settings/SettingsObject.h @@ -91,7 +91,7 @@ public: /*! * \brief Sets the value of the setting with the given ID. - * If no setting with the given ID exists, returns false and logs to qDebug + * If no setting with the given ID exists, returns false * \param id The ID of the setting to change. * \param value The new value of the setting. * \return True if successful, false if it failed. |