From cc499488dbab9167870e6088f9a1793f95894c79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 6 Jul 2014 11:15:15 +0200 Subject: [PATCH] Fix liteloader, some cleanups. --- CMakeLists.txt | 3 ++ depends/util/src/pathutils.cpp | 1 - depends/util/src/userutils.cpp | 1 - gui/dialogs/VersionSelectDialog.cpp | 2 - gui/groupview/GroupView.cpp | 12 ++--- gui/pages/ModFolderPage.cpp | 1 - gui/pages/ScreenshotsPage.cpp | 61 +--------------------- gui/pages/VersionPage.cpp | 1 - logic/RWStorage.h | 60 +++++++++++++++++++++ logic/auth/flows/AuthenticateTask.cpp | 1 - logic/auth/flows/RefreshTask.cpp | 1 - logic/auth/flows/ValidateTask.cpp | 1 - logic/liteloader/LiteLoaderInstaller.cpp | 9 ++-- logic/liteloader/LiteLoaderVersionList.cpp | 17 +++++- logic/liteloader/LiteLoaderVersionList.h | 3 +- logic/minecraft/InstanceVersion.cpp | 1 - logic/minecraft/VersionBuilder.cpp | 1 - logic/settings/SettingsObject.h | 2 +- 18 files changed, 93 insertions(+), 85 deletions(-) create mode 100644 logic/RWStorage.h diff --git a/CMakeLists.txt b/CMakeLists.txt index bd670573..83057b3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -417,6 +417,9 @@ SET(MULTIMC_SOURCES logic/MMCJson.h logic/MMCJson.cpp + # RW lock protected map + logic/RWStorage.h + # network stuffs logic/net/NetAction.h logic/net/MD5EtagDownload.h diff --git a/depends/util/src/pathutils.cpp b/depends/util/src/pathutils.cpp index 3a964806..1d09fe45 100644 --- a/depends/util/src/pathutils.cpp +++ b/depends/util/src/pathutils.cpp @@ -19,7 +19,6 @@ #include #include #include -#include QString PathCombine(QString path1, QString path2) { diff --git a/depends/util/src/userutils.cpp b/depends/util/src/userutils.cpp index 060a58e9..a26af5af 100644 --- a/depends/util/src/userutils.cpp +++ b/depends/util/src/userutils.cpp @@ -75,7 +75,6 @@ bool Util::createShortCut(QString location, QString dest, QStringList args, QStr { #if LINUX location = PathCombine(location, name + ".desktop"); - qDebug("location: %s", qPrintable(location)); QFile f(location); f.open(QIODevice::WriteOnly | QIODevice::Text); diff --git a/gui/dialogs/VersionSelectDialog.cpp b/gui/dialogs/VersionSelectDialog.cpp index fd8b569d..2745eccc 100644 --- a/gui/dialogs/VersionSelectDialog.cpp +++ b/gui/dialogs/VersionSelectDialog.cpp @@ -18,8 +18,6 @@ #include -#include - #include #include "gui/Platform.h" diff --git a/gui/groupview/GroupView.cpp b/gui/groupview/GroupView.cpp index 7094b34c..69a06fd3 100644 --- a/gui/groupview/GroupView.cpp +++ b/gui/groupview/GroupView.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include #include @@ -12,6 +11,7 @@ #include #include "Group.h" +#include "logger/QsLog.h" template bool listsIntersect(const QList &l1, const QList t2) { @@ -917,10 +917,10 @@ QModelIndex GroupView::moveCursor(QAbstractItemView::CursorAction cursorAction, auto current = currentIndex(); if(!current.isValid()) { - qDebug() << "model row: invalid"; + QLOG_DEBUG() << "model row: invalid"; return current; } - qDebug() << "model row: " << current.row(); + QLOG_DEBUG() << "model row: " << current.row(); auto cat = category(current); int i = m_groups.indexOf(cat); if(i >= 0) @@ -934,11 +934,11 @@ QModelIndex GroupView::moveCursor(QAbstractItemView::CursorAction cursorAction, break; beginning_row += group->numRows(); } - qDebug() << "category: " << real_group->text; + QLOG_DEBUG() << "category: " << real_group->text; QPair pos = categoryInternalPosition(current); int row = beginning_row + pos.second; - qDebug() << "row: " << row; - qDebug() << "column: " << pos.first; + QLOG_DEBUG() << "row: " << row; + QLOG_DEBUG() << "column: " << pos.first; } return current; } diff --git a/gui/pages/ModFolderPage.cpp b/gui/pages/ModFolderPage.cpp index 2035e57a..7e0eea52 100644 --- a/gui/pages/ModFolderPage.cpp +++ b/gui/pages/ModFolderPage.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include diff --git a/gui/pages/ScreenshotsPage.cpp b/gui/pages/ScreenshotsPage.cpp index f3ec0c1d..466b3c19 100644 --- a/gui/pages/ScreenshotsPage.cpp +++ b/gui/pages/ScreenshotsPage.cpp @@ -21,66 +21,7 @@ #include "logic/screenshots/ImgurAlbumCreation.h" #include "logic/tasks/SequentialTask.h" -template -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 cache; - QSet stale_entries; -}; - +#include "logic/RWStorage.h" typedef RWStorage SharedIconCache; typedef std::shared_ptr SharedIconCachePtr; diff --git a/gui/pages/VersionPage.cpp b/gui/pages/VersionPage.cpp index d3df5b46..ec83ef87 100644 --- a/gui/pages/VersionPage.cpp +++ b/gui/pages/VersionPage.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include #include 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 +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 cache; + QSet 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 #include #include -#include #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 #include #include -#include #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 #include #include -#include #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 #include @@ -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 class LLListLoadTask; class QNetworkReply; @@ -55,7 +56,7 @@ public: int timestamp; bool isLatest; QString tweakClass; - QStringList libraries; + QList 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 #include #include #include 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 #include #include -#include #include #include 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.