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:
@@ -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)
|
||||
{
|
||||
if (GameClockRunning ())
|
||||
{
|
||||
SetSemaphore (GLOBAL (GameClock.clock_sem));
|
||||
GLOBAL (GameClock.TimeCounter) = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ResumeGameClock (void)
|
||||
{
|
||||
if (!GameClockRunning ())
|
||||
{
|
||||
GLOBAL (GameClock.TimeCounter) = GetTimeCounter ();
|
||||
ClearSemaphore (GLOBAL (GameClock.clock_sem));
|
||||
}
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
|
||||
Reference in New Issue
Block a user