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;
|
cycle_index = delay_count = 0;
|
||||||
while (GLOBAL (GameClock).day_in_ticks == 0 && !Task_ReadState (task, TASK_EXIT))
|
while (GLOBAL (GameClock).day_in_ticks == 0 && !Task_ReadState (task, TASK_EXIT))
|
||||||
TaskSwitch ();
|
TaskSwitch ();
|
||||||
|
|
||||||
while (!Task_ReadState (task, TASK_EXIT))
|
while (!Task_ReadState (task, TASK_EXIT))
|
||||||
{
|
{
|
||||||
BOOLEAN OnAutoPilot;
|
BOOLEAN OnAutoPilot;
|
||||||
@@ -185,9 +186,7 @@ UninitGameClock (void)
|
|||||||
if (!GameClockRunning ())
|
if (!GameClockRunning ())
|
||||||
ResumeGameClock ();
|
ResumeGameClock ();
|
||||||
|
|
||||||
SetSemaphore (GLOBAL (GameClock.clock_sem));
|
ConcludeTask (GLOBAL (GameClock.clock_task));
|
||||||
Task_SetState (GLOBAL (GameClock.clock_task), TASK_EXIT);
|
|
||||||
ClearSemaphore (GLOBAL (GameClock.clock_sem));
|
|
||||||
|
|
||||||
GLOBAL (GameClock.clock_task) = 0;
|
GLOBAL (GameClock.clock_task) = 0;
|
||||||
}
|
}
|
||||||
@@ -200,15 +199,21 @@ UninitGameClock (void)
|
|||||||
void
|
void
|
||||||
SuspendGameClock (void)
|
SuspendGameClock (void)
|
||||||
{
|
{
|
||||||
|
if (GameClockRunning ())
|
||||||
|
{
|
||||||
SetSemaphore (GLOBAL (GameClock.clock_sem));
|
SetSemaphore (GLOBAL (GameClock.clock_sem));
|
||||||
GLOBAL (GameClock.TimeCounter) = 0;
|
GLOBAL (GameClock.TimeCounter) = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ResumeGameClock (void)
|
ResumeGameClock (void)
|
||||||
{
|
{
|
||||||
|
if (!GameClockRunning ())
|
||||||
|
{
|
||||||
GLOBAL (GameClock.TimeCounter) = GetTimeCounter ();
|
GLOBAL (GameClock.TimeCounter) = GetTimeCounter ();
|
||||||
ClearSemaphore (GLOBAL (GameClock.clock_sem));
|
ClearSemaphore (GLOBAL (GameClock.clock_sem));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
|||||||
Reference in New Issue
Block a user