summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-12-05 09:52:04 +0100
committerPetr Mrázek <peterix@gmail.com>2017-12-05 09:52:04 +0100
commit6d034bda825c506bede7bf0229f47095222edfc2 (patch)
treee305701ed2eb2afb080ade007d3fe1668f1cfa4e /api
parent44475350ebfed97f6b0cb14c1e62c8ef67fb9a31 (diff)
downloadMultiMC-6d034bda825c506bede7bf0229f47095222edfc2.tar
MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.tar.gz
MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.tar.lz
MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.tar.xz
MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.zip
GH-2059 fix instance directory not being created on first launch
Diffstat (limited to 'api')
-rw-r--r--api/logic/FolderInstanceProvider.cpp9
-rw-r--r--api/logic/InstanceList.cpp5
-rw-r--r--api/logic/InstanceList.h6
3 files changed, 8 insertions, 12 deletions
diff --git a/api/logic/FolderInstanceProvider.cpp b/api/logic/FolderInstanceProvider.cpp
index 296b366e..74ac456a 100644
--- a/api/logic/FolderInstanceProvider.cpp
+++ b/api/logic/FolderInstanceProvider.cpp
@@ -34,12 +34,13 @@ struct WatchLock
FolderInstanceProvider::FolderInstanceProvider(SettingsObjectPtr settings, const QString& instDir)
: BaseInstanceProvider(settings)
{
- // Normalize path
- m_instDir = QDir(instDir).canonicalPath();
- if (!QDir::current().exists(m_instDir))
+ // Create aand normalize path
+ if (!QDir::current().exists(instDir))
{
- QDir::current().mkpath(m_instDir);
+ QDir::current().mkpath(instDir);
}
+ // NOTE: canonicalPath requires the path to exist. Do not move this above the creation block!
+ m_instDir = QDir(instDir).canonicalPath();
m_watcher = new QFileSystemWatcher(this);
connect(m_watcher, &QFileSystemWatcher::directoryChanged, this, &FolderInstanceProvider::instanceDirContentsChanged);
m_watcher->addPath(m_instDir);
diff --git a/api/logic/InstanceList.cpp b/api/logic/InstanceList.cpp
index 96251b60..d5b71d50 100644
--- a/api/logic/InstanceList.cpp
+++ b/api/logic/InstanceList.cpp
@@ -26,10 +26,9 @@
#include "FolderInstanceProvider.h"
-InstanceList::InstanceList(SettingsObjectPtr globalSettings, const QString &instDir, QObject *parent)
- : QAbstractListModel(parent), m_instDir(instDir)
+InstanceList::InstanceList(QObject *parent)
+ : QAbstractListModel(parent)
{
- m_globalSettings = globalSettings;
resumeWatch();
}
diff --git a/api/logic/InstanceList.h b/api/logic/InstanceList.h
index 89be10de..dceca043 100644
--- a/api/logic/InstanceList.h
+++ b/api/logic/InstanceList.h
@@ -27,16 +27,14 @@
#include "QObjectPtr.h"
-class QFileSystemWatcher;
class BaseInstance;
-class QDir;
class MULTIMC_LOGIC_EXPORT InstanceList : public QAbstractListModel
{
Q_OBJECT
public:
- explicit InstanceList(SettingsObjectPtr globalSettings, const QString &instDir, QObject *parent = 0);
+ explicit InstanceList(QObject *parent = 0);
virtual ~InstanceList();
public:
@@ -101,9 +99,7 @@ private:
protected:
int m_watchLevel = 0;
QSet<BaseInstanceProvider *> m_updatedProviders;
- QString m_instDir;
QList<InstancePtr> m_instances;
QSet<QString> m_groups;
- SettingsObjectPtr m_globalSettings;
QVector<shared_qobject_ptr<BaseInstanceProvider>> m_providers;
};