Speed up load screen

This commit is contained in:
elasota
2020-11-25 15:35:12 -05:00
parent 3c3f9e3675
commit 8f4ecfafe1

View File

@@ -517,7 +517,7 @@ void CreateLoadScreenWindow(int phase)
} }
} }
void StepLoadScreen(int steps) void StepLoadScreen(int steps, bool insertDelay)
{ {
if (loadScreenWindow) if (loadScreenWindow)
{ {
@@ -549,7 +549,7 @@ void StepLoadScreen(int steps)
loadScreenWindow->GetDrawSurface()->FillRect(Rect::Create(loadScreenProgressBarFillRect.top, loadScreenProgressBarFillRect.left + prevStep, loadScreenProgressBarFillRect.bottom, loadScreenProgressBarFillRect.left + thisStep), fillColor); loadScreenWindow->GetDrawSurface()->FillRect(Rect::Create(loadScreenProgressBarFillRect.top, loadScreenProgressBarFillRect.left + prevStep, loadScreenProgressBarFillRect.bottom, loadScreenProgressBarFillRect.left + thisStep), fillColor);
ForceSyncFrame(); ForceSyncFrame();
for (int i = 0; i < steps; i++) if (insertDelay)
{ {
StepLoadScreenRing(); StepLoadScreenRing();
Delay(1, nullptr); Delay(1, nullptr);
@@ -690,7 +690,7 @@ void PreloadFonts()
slot.m_queued = false; slot.m_queued = false;
completedSpecs++; completedSpecs++;
StepLoadScreen(1); StepLoadScreen(1, false);
} }
} }
@@ -825,7 +825,7 @@ void PreloadAATables()
for (size_t i = 0; i < numAASpecs; i++) for (size_t i = 0; i < numAASpecs; i++)
{ {
PreloadAATableThreadFunc(specs + i); PreloadAATableThreadFunc(specs + i);
StepLoadScreen(1); StepLoadScreen(1, false);
} }
} }
else else
@@ -849,6 +849,7 @@ void PreloadAATables()
while (completedSpecs < numAASpecs) while (completedSpecs < numAASpecs)
{ {
int completedThisStep = 0;
for (unsigned int i = 0; i < cpus; i++) for (unsigned int i = 0; i < cpus; i++)
{ {
PreloadAATableWorkSlot &slot = slots[i]; PreloadAATableWorkSlot &slot = slots[i];
@@ -861,7 +862,7 @@ void PreloadAATables()
slot.m_queued = false; slot.m_queued = false;
completedSpecs++; completedSpecs++;
StepLoadScreen(1); completedThisStep++;
} }
} }
@@ -879,6 +880,9 @@ void PreloadAATables()
} }
} }
if (completedThisStep > 0)
StepLoadScreen(completedThisStep, false);
StepLoadScreenRing(); StepLoadScreenRing();
Delay(1, nullptr); Delay(1, nullptr);
} }
@@ -929,10 +933,10 @@ int gpAppMain()
SpinCursor(2); // Tick once to let the display driver flush any resolution changes from prefs SpinCursor(2); // Tick once to let the display driver flush any resolution changes from prefs
FlushResolutionChange(); FlushResolutionChange();
InitLoadingWindow(); StepLoadScreen(2); InitLoadingWindow(); StepLoadScreen(2, true);
PreloadAATables(); PreloadAATables();
assert(isPrefsLoaded || loadScreenWindowPhase == 0); assert(isPrefsLoaded || loadScreenWindowPhase == 0);
PreloadFonts(); StepLoadScreen(2); PreloadFonts(); StepLoadScreen(2, true);
#if defined COMPILEDEMO #if defined COMPILEDEMO
copyGood = true; copyGood = true;
@@ -951,12 +955,12 @@ int gpAppMain()
// if ((thisMac.numScreens > 1) && (isUseSecondScreen)) // if ((thisMac.numScreens > 1) && (isUseSecondScreen))
// ReflectSecondMonitorEnvirons(false, true, true); // ReflectSecondMonitorEnvirons(false, true, true);
HandleDepthSwitching(); HandleDepthSwitching();
VariableInit(); StepLoadScreen(2); VariableInit(); StepLoadScreen(2, true);
GetExtraCursors(); StepLoadScreen(2); GetExtraCursors(); StepLoadScreen(2, true);
InitMarquee(); InitMarquee();
CreatePointers(); StepLoadScreen(2); CreatePointers(); StepLoadScreen(2, true);
InitSrcRects(); InitSrcRects();
CreateOffscreens(); StepLoadScreen(2); CreateOffscreens(); StepLoadScreen(2, true);
if (loadScreenWindow) if (loadScreenWindow)
{ {