Fixed a deadlock that was freezing the calendar.

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@71 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
mcmartin
2002-09-23 22:11:50 +00:00
parent 047dcc8980
commit fe329193b7
+12 -7
View File
@@ -48,6 +48,7 @@ int clock_task_func(void* data)
cycle_index = delay_count = 0;
while (GLOBAL (GameClock).day_in_ticks == 0 && !Task_ReadState (task, TASK_EXIT))
TaskSwitch ();
while (!Task_ReadState (task, TASK_EXIT))
{
BOOLEAN OnAutoPilot;
@@ -185,9 +186,7 @@ UninitGameClock (void)
if (!GameClockRunning ())
ResumeGameClock ();
SetSemaphore (GLOBAL (GameClock.clock_sem));
Task_SetState (GLOBAL (GameClock.clock_task), TASK_EXIT);
ClearSemaphore (GLOBAL (GameClock.clock_sem));
ConcludeTask (GLOBAL (GameClock.clock_task));
GLOBAL (GameClock.clock_task) = 0;
}
@@ -200,15 +199,21 @@ UninitGameClock (void)
void
SuspendGameClock (void)
{
SetSemaphore (GLOBAL (GameClock.clock_sem));
GLOBAL (GameClock.TimeCounter) = 0;
if (GameClockRunning ())
{
SetSemaphore (GLOBAL (GameClock.clock_sem));
GLOBAL (GameClock.TimeCounter) = 0;
}
}
void
ResumeGameClock (void)
{
GLOBAL (GameClock.TimeCounter) = GetTimeCounter ();
ClearSemaphore (GLOBAL (GameClock.clock_sem));
if (!GameClockRunning ())
{
GLOBAL (GameClock.TimeCounter) = GetTimeCounter ();
ClearSemaphore (GLOBAL (GameClock.clock_sem));
}
}
BOOLEAN