mirror of
https://github.com/isledecomp/isle-portable.git
synced 2024-11-22 23:48:12 -05:00
1ae3b07dc2
* First commit of order tool * More flexible match on module name. Bugfix on blank_or_comment * Report inexact offset comments in verbose mode. Bugfix for exact regex * Refactor checkorder into reusable isledecomp module * Find bad comments in one pass, add awareness of TEMPLATE * Refactor of state machine to prepare for reccmp integration * Use isledecomp lib in reccmp * Build isledecomp in GH actions, fix mypy complaint * Ensure unit test cpp files will be ignored by reccmp * Allow multiple offset markers, pep8 cleanup * Remove unused variable * Code style, remove unneeded module and TODO * Final renaming and type hints * Fix checkorder issues, add GH action and enforce (#2) * Fix checkorder issues * Add GH action * Test error case * Works * Fixes --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
72 lines
1.2 KiB
C++
72 lines
1.2 KiB
C++
#include "mxcriticalsection.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
// 0x10101e78
|
|
int g_useMutex = 0;
|
|
|
|
// OFFSET: LEGO1 0x100b6d20
|
|
MxCriticalSection::MxCriticalSection()
|
|
{
|
|
HANDLE mutex;
|
|
|
|
if (g_useMutex != 0) {
|
|
mutex = CreateMutexA(NULL, FALSE, NULL);
|
|
this->m_mutex = mutex;
|
|
return;
|
|
}
|
|
|
|
InitializeCriticalSection(&this->m_criticalSection);
|
|
this->m_mutex = NULL;
|
|
}
|
|
|
|
// OFFSET: LEGO1 0x100b6d60
|
|
MxCriticalSection::~MxCriticalSection()
|
|
{
|
|
if (this->m_mutex != NULL) {
|
|
CloseHandle(this->m_mutex);
|
|
return;
|
|
}
|
|
|
|
DeleteCriticalSection(&this->m_criticalSection);
|
|
}
|
|
|
|
// OFFSET: LEGO1 0x100b6d80
|
|
void MxCriticalSection::Enter()
|
|
{
|
|
DWORD result;
|
|
FILE* file;
|
|
|
|
if (this->m_mutex != NULL) {
|
|
result = WaitForSingleObject(this->m_mutex, 5000);
|
|
if (result == WAIT_FAILED) {
|
|
file = fopen("C:\\DEADLOCK.TXT", "a");
|
|
if (file != NULL) {
|
|
fprintf(file, "mutex timeout occurred!\n");
|
|
fclose(file);
|
|
}
|
|
|
|
abort();
|
|
}
|
|
}
|
|
else {
|
|
EnterCriticalSection(&this->m_criticalSection);
|
|
}
|
|
}
|
|
|
|
// OFFSET: LEGO1 0x100b6de0
|
|
void MxCriticalSection::Leave()
|
|
{
|
|
if (this->m_mutex != NULL) {
|
|
ReleaseMutex(this->m_mutex);
|
|
return;
|
|
}
|
|
|
|
LeaveCriticalSection(&this->m_criticalSection);
|
|
}
|
|
|
|
// OFFSET: LEGO1 0x100b6e00
|
|
void MxCriticalSection::SetDoMutex()
|
|
{
|
|
g_useMutex = 1;
|
|
}
|