Skip to content

Commit

Permalink
Add more robustness to screenshot preload checking
Browse files Browse the repository at this point in the history
  • Loading branch information
FenPhoenix committed Mar 6, 2024
1 parent ed872b8 commit 16e92a6
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -122,16 +122,33 @@ private void UpdatePageInternal(int index = -1)

if (ScreenshotFileNames.Count == 0)
{
CurrentScreenshotFileName = "";
ClearCurrentScreenshot();
_page.ScreenshotsPictureBox.Enabled = false;
_page.GammaLabel.Enabled = false;
_page.GammaTrackBar.Enabled = false;
_page.OpenScreenshotsFolderButton.Enabled = false;
_page.PrevButton.Enabled = false;
_page.NextButton.Enabled = false;
SetNumberLabelText("");
_forceUpdateArmed = false;
try
{
if (_owner.StartupState && ScreenshotsPreprocessing.HasBeenActivated)
{
#if TESTING
System.Diagnostics.Trace.WriteLine("Startup state, screenshot preload activated, but didn't match FM and current FM has no screenshots. Clearing...");
#endif
ScreenshotsPreprocessing.WaitOnThread();
}
CurrentScreenshotFileName = "";
ClearCurrentScreenshot();
_page.ScreenshotsPictureBox.Enabled = false;
_page.GammaLabel.Enabled = false;
_page.GammaTrackBar.Enabled = false;
_page.OpenScreenshotsFolderButton.Enabled = false;
_page.PrevButton.Enabled = false;
_page.NextButton.Enabled = false;
SetNumberLabelText("");
_forceUpdateArmed = false;
}
finally
{
if (_owner.StartupState && ScreenshotsPreprocessing.HasBeenActivated)
{
ScreenshotsPreprocessing.Clear();
}
}
}
else
{
Expand Down Expand Up @@ -202,7 +219,7 @@ private void DisplayCurrentScreenshot()
FanMission? fm = _owner.GetMainSelectedFMOrNull();
try
{
MemoryImage? mi = ScreenshotsPreprocessing.GetMemoryImage(fm);
MemoryImage? mi = ScreenshotsPreprocessing.GetMemoryImage(fm, CurrentScreenshotFileName);
if (mi != null)
{
#if TESTING
Expand Down
3 changes: 0 additions & 3 deletions AngelLoader/Forms/FormsViewEnvironment.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@ internal static MainForm ViewInternal

public void PreloadScreenshot(ConfigData config, List<FanMission> fmsViewList)
{
/*
@DockUI: Finalize these conditions
*/
FMTabData screenshotsTab = config.FMTabsData.GetTab(FMTab.Screenshots);
if (screenshotsTab.Visible == FMTabVisibleIn.Top &&
(config.TopFMTabsPanelCollapsed ||
Expand Down
8 changes: 6 additions & 2 deletions AngelLoader/Forms/ScreenshotsPreprocessing.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ internal static class ScreenshotsPreprocessing
private static Thread? _thread;
private static MemoryImage? _memoryImage;
private static string _fmInstalledDir = "";
private static string _currentScreenshotName = "";
internal static readonly List<string> ScreenshotFileNames = new();
internal static bool HasBeenActivated;

Expand All @@ -18,6 +19,7 @@ internal static void Clear()
_thread = null;
_memoryImage = null;
_fmInstalledDir = "";
_currentScreenshotName = "";
ScreenshotFileNames.Clear();
try
{
Expand All @@ -29,14 +31,15 @@ internal static void Clear()
}
}

internal static MemoryImage? GetMemoryImage(FanMission? fm)
internal static MemoryImage? GetMemoryImage(FanMission? fm, string currentScreenshotName)
{
WaitOnThread();

if (fm == null) return null;

if (!fm.InstalledDir.IsWhiteSpace() &&
!_fmInstalledDir.IsWhiteSpace() &&
currentScreenshotName.PathEqualsI(_currentScreenshotName) &&
fm.InstalledDir.EqualsI(_fmInstalledDir))
{
return _memoryImage;
Expand All @@ -47,7 +50,7 @@ internal static void Clear()
}
}

private static void WaitOnThread()
internal static void WaitOnThread()
{
if (_thread == null) return;
try
Expand All @@ -71,6 +74,7 @@ internal static void Run(
{
HasBeenActivated = true;
_fmInstalledDir = fmInstalledDir;
_currentScreenshotName = currentScreenshotFileName;
ScreenshotFileNames.ClearAndAdd_Small(screenshotFileNames);

try
Expand Down

0 comments on commit 16e92a6

Please sign in to comment.