mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-28 04:35:33 +00:00
42bd2abf83
Chromium IPC locks have this and the API gets used, so we need to expose it ourselves if we're going to use our locks in place of the Chromium IPC locks. This patch changes the mozglue parts; tweaking the xpcom parts is the next patch.
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "mozilla/Assertions.h"
|
|
#include "mozilla/DebugOnly.h"
|
|
#include "mozilla/PlatformMutex.h"
|
|
|
|
#include <windows.h>
|
|
|
|
#include "MutexPlatformData_windows.h"
|
|
|
|
mozilla::detail::MutexImpl::MutexImpl(recordreplay::Behavior aRecorded) {
|
|
InitializeSRWLock(&platformData()->lock);
|
|
}
|
|
|
|
mozilla::detail::MutexImpl::~MutexImpl() {}
|
|
|
|
void mozilla::detail::MutexImpl::lock() {
|
|
AcquireSRWLockExclusive(&platformData()->lock);
|
|
}
|
|
|
|
bool mozilla::detail::MutexImpl::tryLock() { return mutexTryLock(); }
|
|
|
|
bool mozilla::detail::MutexImpl::mutexTryLock() {
|
|
return !!TryAcquireSRWLockExclusive(&platformData()->lock);
|
|
}
|
|
|
|
void mozilla::detail::MutexImpl::unlock() {
|
|
ReleaseSRWLockExclusive(&platformData()->lock);
|
|
}
|
|
|
|
mozilla::detail::MutexImpl::PlatformData*
|
|
mozilla::detail::MutexImpl::platformData() {
|
|
static_assert(sizeof(platformData_) >= sizeof(PlatformData),
|
|
"platformData_ is too small");
|
|
return reinterpret_cast<PlatformData*>(platformData_);
|
|
}
|