1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-23 20:47:45 +00:00

common: Add mutex guards to the FileCache

This commit is contained in:
Joshua Goins 2023-09-26 20:20:36 -04:00
parent 71007249b6
commit 1cd3f989df
2 changed files with 6 additions and 0 deletions

View file

@ -5,6 +5,7 @@
#include <QHash>
#include <QMap>
#include <QMutex>
#include <QString>
#include <physis.hpp>
@ -21,4 +22,5 @@ private:
QMap<QLatin1String, physis_Buffer> cachedBuffers;
QHash<QLatin1String, bool> cachedExist;
GameData& data;
QMutex bufferMutex, existMutex;
};

View file

@ -9,6 +9,8 @@ FileCache::FileCache(GameData& data) : data(data) {}
physis_Buffer &FileCache::lookupFile(const QLatin1String &path)
{
QMutexLocker locker(&bufferMutex);
if (!cachedBuffers.contains(path)) {
cachedBuffers[path] = physis_gamedata_extract_file(&data, path.data());
}
@ -18,6 +20,8 @@ physis_Buffer &FileCache::lookupFile(const QLatin1String &path)
bool FileCache::fileExists(const QLatin1String &path)
{
QMutexLocker locker(&existMutex);
if (!cachedExist.contains(path)) {
cachedExist[path] = physis_gamedata_exists(&data, path.data());
}