diff --git a/gaseous-server/Classes/ImportGames.cs b/gaseous-server/Classes/ImportGames.cs index 1b8f8ce..b4fd70e 100644 --- a/gaseous-server/Classes/ImportGames.cs +++ b/gaseous-server/Classes/ImportGames.cs @@ -487,13 +487,15 @@ namespace gaseous_server.Classes public void LibraryScan() { + int maxWorkers = 4; + // setup background tasks for each library foreach (GameLibrary.LibraryItem library in GameLibrary.GetLibraries) { Logging.Log(Logging.LogType.Information, "Library Scan", "Starting worker process for library " + library.Name); ProcessQueue.QueueItem queue = new ProcessQueue.QueueItem( ProcessQueue.QueueItemType.LibraryScanWorker, - 0, + 1, new List { ProcessQueue.QueueItemType.OrganiseLibrary, @@ -502,11 +504,34 @@ namespace gaseous_server.Classes false, true); queue.Options = library; + queue.ForceExecute(); ProcessQueue.QueueItems.Add(queue); + + // check number of running tasks is less than maxWorkers + bool allowContinue; + do + { + allowContinue = true; + int currentWorkerCount = 0; + List queueItems = new List(); + queueItems.AddRange(ProcessQueue.QueueItems); + foreach (ProcessQueue.QueueItem item in queueItems) + { + if (item.ItemType == ProcessQueue.QueueItemType.LibraryScanWorker) + { + currentWorkerCount += 1; + } + } + if (currentWorkerCount >= maxWorkers) + { + allowContinue = false; + Thread.Sleep(60000); + } + } while (allowContinue == false); } - bool WorkersStillWorking = false; + bool WorkersStillWorking; do { WorkersStillWorking = false; diff --git a/gaseous-server/Classes/Metadata/PlatformVersions.cs b/gaseous-server/Classes/Metadata/PlatformVersions.cs index 7afe668..8e378b3 100644 --- a/gaseous-server/Classes/Metadata/PlatformVersions.cs +++ b/gaseous-server/Classes/Metadata/PlatformVersions.cs @@ -94,7 +94,14 @@ namespace gaseous_server.Classes.Metadata { if (platformVersion.PlatformLogo != null) { - PlatformLogo platformLogo = PlatformLogos.GetPlatformLogo(platformVersion.PlatformLogo.Id, Path.Combine(Config.LibraryConfiguration.LibraryMetadataDirectory_Platform(ParentPlatform), "Versions", platformVersion.Slug)); + try + { + PlatformLogo platformLogo = PlatformLogos.GetPlatformLogo(platformVersion.PlatformLogo.Id, Path.Combine(Config.LibraryConfiguration.LibraryMetadataDirectory_Platform(ParentPlatform), "Versions", platformVersion.Slug)); + } + catch (Exception ex) + { + Logging.Log(Logging.LogType.Warning, "Platform Update", "Unable to fetch platform logo", ex); + } } } diff --git a/gaseous-server/Classes/Metadata/Platforms.cs b/gaseous-server/Classes/Metadata/Platforms.cs index 9d754b5..531d771 100644 --- a/gaseous-server/Classes/Metadata/Platforms.cs +++ b/gaseous-server/Classes/Metadata/Platforms.cs @@ -132,7 +132,14 @@ namespace gaseous_server.Classes.Metadata if (platform.PlatformLogo != null) { - PlatformLogo platformLogo = PlatformLogos.GetPlatformLogo(platform.PlatformLogo.Id, Config.LibraryConfiguration.LibraryMetadataDirectory_Platform(platform)); + try + { + PlatformLogo platformLogo = PlatformLogos.GetPlatformLogo(platform.PlatformLogo.Id, Config.LibraryConfiguration.LibraryMetadataDirectory_Platform(platform)); + } + catch (Exception ex) + { + Logging.Log(Logging.LogType.Warning, "Platform Update", "Unable to fetch platform logo", ex); + } } } diff --git a/gaseous-server/Models/PlatformMapping.cs b/gaseous-server/Models/PlatformMapping.cs index 77a1c48..0503e78 100644 --- a/gaseous-server/Models/PlatformMapping.cs +++ b/gaseous-server/Models/PlatformMapping.cs @@ -106,11 +106,19 @@ namespace gaseous_server.Models long mapId = (long)row["Id"]; if (PlatformMapCache.ContainsKey(mapId.ToString())) { - platformMaps.Add(PlatformMapCache[mapId.ToString()]); + PlatformMapItem mapItem = PlatformMapCache[mapId.ToString()]; + if (mapItem != null) + { + platformMaps.Add(mapItem); + } } else { - platformMaps.Add(BuildPlatformMapItem(row)); + PlatformMapItem mapItem = BuildPlatformMapItem(row); + if (mapItem != null) + { + platformMaps.Add(mapItem); + } } } diff --git a/gaseous-server/wwwroot/pages/first.html b/gaseous-server/wwwroot/pages/first.html index 51d4b55..2a357b9 100644 --- a/gaseous-server/wwwroot/pages/first.html +++ b/gaseous-server/wwwroot/pages/first.html @@ -52,7 +52,7 @@
Gaseous Games
- +