mirror of
https://github.com/nextcloud/desktop.git
synced 2025-10-26 11:17:43 +00:00
40 lines
735 B
C++
40 lines
735 B
C++
/*
|
|
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#include "SimpleNamedMutex.h"
|
|
|
|
SimpleNamedMutex::SimpleNamedMutex(const std::wstring &name)
|
|
{
|
|
_name = name;
|
|
}
|
|
|
|
bool SimpleNamedMutex::lock()
|
|
{
|
|
if (_name.empty() || _hMutex) {
|
|
return false;
|
|
}
|
|
|
|
// Mutex
|
|
_hMutex = CreateMutex(nullptr, TRUE, _name.data());
|
|
|
|
if (GetLastError() == ERROR_ALREADY_EXISTS) {
|
|
CloseHandle(_hMutex);
|
|
_hMutex = nullptr;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void SimpleNamedMutex::unlock()
|
|
{
|
|
// Release mutex
|
|
if (_hMutex) {
|
|
ReleaseMutex(_hMutex);
|
|
CloseHandle(_hMutex);
|
|
_hMutex = nullptr;
|
|
}
|
|
}
|