aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Orbis/OrbisExtras/ShutdownManager.h
blob: 38d9c36e6bdae747fecbf46270de88d21407dc16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#pragma once

class ShutdownManager
{
public:
	typedef enum
	{
		eMainThread,

		eLeaderboardThread,
		eCommerceThread,
		ePostProcessThread,
		eRunUpdateThread,
		eRenderChunkUpdateThread,
		eServerThread,
		eStorageManagerThreads,
		eConnectionReadThreads,
		eConnectionWriteThreads,
		eEventQueueThreads,

		eThreadIdCount
	} EThreadId;

	static void Initialise() {}
	static void StartShutdown() {}
	static void MainThreadHandleShutdown() {}
#ifdef __PS3__
	static void SysUtilCallback(uint64_t status, uint64_t param, void *userdata);
#endif

	static void HasStarted(EThreadId threadId) {};
	static void HasStarted(EThreadId threadId, C4JThread::EventArray *eventArray) {};
	static bool ShouldRun(EThreadId threadId) {return true;};
	static void HasFinished(EThreadId threadId) {};

private:
#ifdef __PS3__
	static bool s_threadShouldRun[eThreadIdCount];
	static int s_threadRunning[eThreadIdCount];
	static CRITICAL_SECTION s_threadRunningCS;
	static C4JThread::EventArray *s_eventArray[eThreadIdCount];

	static void RequestThreadToStop(int i);
	static void WaitForSignalledToComplete();
	static void StorageManagerCompleteFn();
#endif
};