Isle
Loading...
Searching...
No Matches
mxcriticalsection.cpp
Go to the documentation of this file.
1#include "mxcriticalsection.h"
2
3#include "decomp.h"
4
5#include <stdio.h>
6
8
9// GLOBAL: LEGO1 0x10101e78
11
12// FUNCTION: LEGO1 0x100b6d20
14{
15 HANDLE mutex;
16
17 if (g_useMutex) {
18 mutex = CreateMutexA(NULL, FALSE, NULL);
19 m_mutex = mutex;
20 }
21 else {
22 InitializeCriticalSection(&m_criticalSection);
23 m_mutex = NULL;
24 }
25}
26
27// FUNCTION: LEGO1 0x100b6d60
29{
30 if (m_mutex != NULL) {
31 CloseHandle(m_mutex);
32 }
33 else {
34 DeleteCriticalSection(&m_criticalSection);
35 }
36}
37
38// FUNCTION: LEGO1 0x100b6d80
39// FUNCTION: BETA10 0x1013c725
41{
42 DWORD result;
43 FILE* file;
44
45 if (m_mutex != NULL) {
46 result = WaitForSingleObject(m_mutex, 5000);
47 if (result == WAIT_FAILED) {
48 file = fopen("C:\\DEADLOCK.TXT", "a");
49 if (file != NULL) {
50 fprintf(file, "mutex timeout occurred!\n");
51 fclose(file);
52 }
53
54 abort();
55 }
56 }
57 else {
58 EnterCriticalSection(&m_criticalSection);
59 }
60}
61
62// FUNCTION: LEGO1 0x100b6de0
64{
65 if (m_mutex != NULL) {
66 ReleaseMutex(m_mutex);
67 }
68 else {
69 LeaveCriticalSection(&m_criticalSection);
70 }
71}
72
73// FUNCTION: LEGO1 0x100b6e00
75{
77}
[AI] Provides a critical section object for mutual exclusion with optional use of OS mutex.
static void SetDoMutex()
[AI] Globally enforces the use of mutexes for all subsequent MxCriticalSection allocation.
void Enter()
[AI] Acquires/gains entry to the critical section or mutex, blocking if not available.
~MxCriticalSection()
[AI] Destroys the critical section object.
void Leave()
[AI] Releases/leaves the critical section or mutex.
#define TRUE
Definition: d3drmdef.h:28
#define FALSE
Definition: d3drmdef.h:27
typedef DWORD(FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper
#define DECOMP_SIZE_ASSERT(T, S)
Definition: decomp.h:19
typedef BOOL(FAR PASCAL *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA
#define NULL
[AI] Null pointer value (C/C++ semantics).
Definition: legotypes.h:26
BOOL g_useMutex