1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2024-12-28 18:18:52 +00:00

Merge branch 'use_qt_lockfile' into 'master'

make use of QLockFile

Closes #7345

See merge request OpenMW/openmw!2966
This commit is contained in:
psi29a 2023-04-24 13:34:06 +00:00
commit 9f4322951f
2 changed files with 8 additions and 8 deletions

View File

@ -1,6 +1,7 @@
#include "editor.hpp"
#include <QApplication>
#include <QFileInfo>
#include <QLocalServer>
#include <QLocalSocket>
#include <QMessageBox>
@ -22,6 +23,7 @@
#ifdef _WIN32
#include <components/windows.hpp>
#endif
#include <components/debug/debugging.hpp>
#include <components/debug/debuglog.hpp>
#include <components/esm3/esmreader.hpp>
@ -42,8 +44,8 @@ CS::Editor::Editor(int argc, char** argv)
: mConfigVariables(readConfiguration())
, mSettingsState(mCfgMgr)
, mDocumentManager(mCfgMgr)
, mPid("")
, mLock()
, mPid(std::filesystem::temp_directory_path() / "openmw-cs.pid")
, mLockFile(QFileInfo(mPid.c_str()).absoluteFilePath() + ".lock")
, mMerge(mDocumentManager)
, mIpcServerName("org.openmw.OpenCS")
, mServer(nullptr)
@ -95,6 +97,7 @@ CS::Editor::~Editor()
{
delete mViewManager;
mLockFile.unlock();
mPidFile.close();
if (mServer && std::filesystem::exists(mPid))
@ -336,14 +339,11 @@ bool CS::Editor::makeIPCServer()
{
try
{
mPid = std::filesystem::temp_directory_path();
mPid /= "openmw-cs.pid";
bool pidExists = std::filesystem::exists(mPid);
mPidFile.open(mPid);
mLock = boost::interprocess::file_lock(mPid.c_str());
if (!mLock.try_lock())
if (!mLockFile.tryLock())
{
Log(Debug::Error) << "Error: OpenMW-CS is already running.";
return false;

View File

@ -1,9 +1,9 @@
#ifndef CS_EDITOR_H
#define CS_EDITOR_H
#include <boost/interprocess/sync/file_lock.hpp>
#include <boost/program_options/variables_map.hpp>
#include <QLockFile>
#include <QObject>
#include <QString>
@ -58,7 +58,7 @@ namespace CS
std::filesystem::path mLocal;
std::filesystem::path mResources;
std::filesystem::path mPid;
boost::interprocess::file_lock mLock;
QLockFile mLockFile;
std::ofstream mPidFile;
bool mFsStrict;
CSVTools::Merge mMerge;