From 8491a4fc7ca5ed920365d3f4ca1efbebd1f70348 Mon Sep 17 00:00:00 2001 From: ClemensF Date: Sat, 8 Jun 2019 23:18:33 +0200 Subject: [PATCH] Version 4.12.2 Minor changes in TileImageLoader. --- FileDbCache/UWP/Properties/AssemblyInfo.cs | 4 +- FileDbCache/WPF/Properties/AssemblyInfo.cs | 4 +- MBTiles/UWP/Properties/AssemblyInfo.cs | 4 +- MBTiles/WPF/Properties/AssemblyInfo.cs | 4 +- MapControl/Shared/TileImageLoader.cs | 87 +++++++++---------- MapControl/Shared/TileSource.cs | 8 +- MapControl/UWP/Properties/AssemblyInfo.cs | 4 +- MapControl/UWP/TileImageLoader.UWP.cs | 4 +- MapControl/WPF/Properties/AssemblyInfo.cs | 4 +- MapControl/WPF/TileImageLoader.WPF.cs | 4 +- MapImages/UWP/Properties/AssemblyInfo.cs | 4 +- MapImages/WPF/Properties/AssemblyInfo.cs | 4 +- MapProjections/UWP/Properties/AssemblyInfo.cs | 4 +- MapProjections/WPF/Properties/AssemblyInfo.cs | 4 +- .../UniversalApp/Properties/AssemblyInfo.cs | 4 +- .../WpfApplication/Properties/AssemblyInfo.cs | 4 +- 16 files changed, 70 insertions(+), 81 deletions(-) diff --git a/FileDbCache/UWP/Properties/AssemblyInfo.cs b/FileDbCache/UWP/Properties/AssemblyInfo.cs index c646db41..f2479bc2 100644 --- a/FileDbCache/UWP/Properties/AssemblyInfo.cs +++ b/FileDbCache/UWP/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/FileDbCache/WPF/Properties/AssemblyInfo.cs b/FileDbCache/WPF/Properties/AssemblyInfo.cs index 60479a83..4c7f3764 100644 --- a/FileDbCache/WPF/Properties/AssemblyInfo.cs +++ b/FileDbCache/WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MBTiles/UWP/Properties/AssemblyInfo.cs b/MBTiles/UWP/Properties/AssemblyInfo.cs index 828c0d6c..89d1e845 100644 --- a/MBTiles/UWP/Properties/AssemblyInfo.cs +++ b/MBTiles/UWP/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MBTiles/WPF/Properties/AssemblyInfo.cs b/MBTiles/WPF/Properties/AssemblyInfo.cs index 30b590f2..8032e522 100644 --- a/MBTiles/WPF/Properties/AssemblyInfo.cs +++ b/MBTiles/WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/Shared/TileImageLoader.cs b/MapControl/Shared/TileImageLoader.cs index a9e991f0..889cb86b 100644 --- a/MapControl/Shared/TileImageLoader.cs +++ b/MapControl/Shared/TileImageLoader.cs @@ -63,71 +63,66 @@ namespace MapControl if (tileSource != null && tiles.Any()) { + if (Cache == null || tileSource.UriFormat == null || !tileSource.UriFormat.StartsWith("http")) + { + sourceName = null; // do not use cache + } + pendingTiles.PushRange(tiles.Reverse().ToArray()); - Func loadFunc; - - if (Cache != null && !string.IsNullOrEmpty(sourceName) && - tileSource.UriFormat != null && tileSource.UriFormat.StartsWith("http")) - { - loadFunc = tile => LoadCachedTileImageAsync(tile, tileSource, sourceName); - } - else - { - loadFunc = tile => LoadTileImageAsync(tile, tileSource); - } - var newTasks = Math.Min(pendingTiles.Count, MaxLoadTasks) - taskCount; while (--newTasks >= 0) { Interlocked.Increment(ref taskCount); - var task = Task.Run(() => LoadTilesAsync(loadFunc)); // do not await - } + Task.Run(async () => // do not await + { + Tile tile; - //Debug.WriteLine("{0}: {1} tasks", Environment.CurrentManagedThreadId, taskCount); + while (pendingTiles.TryPop(out tile)) + { + tile.Pending = false; + + try + { + await LoadTileImageAsync(tile, tileSource, sourceName); + } + catch (Exception ex) + { + Debug.WriteLine("TileImageLoader: {0}/{1}/{2}: {3}", tile.ZoomLevel, tile.XIndex, tile.Y, ex.Message); + } + } + + Interlocked.Decrement(ref taskCount); + }); + } } } - private async Task LoadTilesAsync(Func loadTileImageFunc) + private async Task LoadTileImageAsync(Tile tile, TileSource tileSource, string sourceName) { - Tile tile; - - while (pendingTiles.TryPop(out tile)) + if (string.IsNullOrEmpty(sourceName)) { - tile.Pending = false; - - try - { - await loadTileImageFunc(tile); - } - catch (Exception ex) - { - Debug.WriteLine("TileImageLoader: {0}/{1}/{2}: {3}", tile.ZoomLevel, tile.XIndex, tile.Y, ex.Message); - } + await LoadTileImageAsync(tile, tileSource); } - - Interlocked.Decrement(ref taskCount); - //Debug.WriteLine("{0}: {1} tasks", Environment.CurrentManagedThreadId, taskCount); - } - - private async Task LoadCachedTileImageAsync(Tile tile, TileSource tileSource, string sourceName) - { - var uri = tileSource.GetUri(tile.XIndex, tile.Y, tile.ZoomLevel); - - if (uri != null) + else { - var extension = Path.GetExtension(uri.LocalPath); + var uri = tileSource.GetUri(tile.XIndex, tile.Y, tile.ZoomLevel); - if (string.IsNullOrEmpty(extension) || extension == ".jpeg") + if (uri != null) { - extension = ".jpg"; + var extension = Path.GetExtension(uri.LocalPath); + + if (string.IsNullOrEmpty(extension) || extension == ".jpeg") + { + extension = ".jpg"; + } + + var cacheKey = string.Format(CacheKeyFormat, sourceName, tile.ZoomLevel, tile.XIndex, tile.Y, extension); + + await LoadTileImageAsync(tile, uri, cacheKey); } - - var cacheKey = string.Format(CacheKeyFormat, sourceName, tile.ZoomLevel, tile.XIndex, tile.Y, extension); - - await LoadCachedTileImageAsync(tile, uri, cacheKey); } } diff --git a/MapControl/Shared/TileSource.cs b/MapControl/Shared/TileSource.cs index 91b66755..64288083 100644 --- a/MapControl/Shared/TileSource.cs +++ b/MapControl/Shared/TileSource.cs @@ -110,15 +110,9 @@ namespace MapControl /// public virtual async Task LoadImageAsync(int x, int y, int zoomLevel) { - ImageSource imageSource = null; var uri = GetUri(x, y, zoomLevel); - if (uri != null) - { - imageSource = await ImageLoader.LoadImageAsync(uri); - } - - return imageSource; + return uri != null ? await ImageLoader.LoadImageAsync(uri) : null; } private string GetDefaultUri(int x, int y, int zoomLevel) diff --git a/MapControl/UWP/Properties/AssemblyInfo.cs b/MapControl/UWP/Properties/AssemblyInfo.cs index 0b9e4fea..4630d9d0 100644 --- a/MapControl/UWP/Properties/AssemblyInfo.cs +++ b/MapControl/UWP/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/UWP/TileImageLoader.UWP.cs b/MapControl/UWP/TileImageLoader.UWP.cs index 90fa2a32..13f9b70b 100644 --- a/MapControl/UWP/TileImageLoader.UWP.cs +++ b/MapControl/UWP/TileImageLoader.UWP.cs @@ -26,7 +26,7 @@ namespace MapControl /// public static Caching.IImageCache Cache { get; set; } - private async Task LoadCachedTileImageAsync(Tile tile, Uri uri, string cacheKey) + private async Task LoadTileImageAsync(Tile tile, Uri uri, string cacheKey) { var cacheItem = await Cache.GetAsync(cacheKey); var cacheBuffer = cacheItem?.Buffer; @@ -47,7 +47,7 @@ namespace MapControl } } - if (cacheBuffer != null) + if (cacheBuffer != null) // cached image not expired or download failed { await LoadTileImageAsync(tile, cacheBuffer); } diff --git a/MapControl/WPF/Properties/AssemblyInfo.cs b/MapControl/WPF/Properties/AssemblyInfo.cs index d2acf334..6d94fc62 100644 --- a/MapControl/WPF/Properties/AssemblyInfo.cs +++ b/MapControl/WPF/Properties/AssemblyInfo.cs @@ -8,8 +8,8 @@ using System.Windows; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/WPF/TileImageLoader.WPF.cs b/MapControl/WPF/TileImageLoader.WPF.cs index 2de47a4e..d3f2e976 100644 --- a/MapControl/WPF/TileImageLoader.WPF.cs +++ b/MapControl/WPF/TileImageLoader.WPF.cs @@ -28,7 +28,7 @@ namespace MapControl /// public static ObjectCache Cache { get; set; } = MemoryCache.Default; - private async Task LoadCachedTileImageAsync(Tile tile, Uri uri, string cacheKey) + private async Task LoadTileImageAsync(Tile tile, Uri uri, string cacheKey) { DateTime expiration; var cacheBuffer = GetCachedImage(cacheKey, out expiration); @@ -52,7 +52,7 @@ namespace MapControl } } - if (cacheBuffer != null) + if (cacheBuffer != null) // cached image not expired or download failed { using (var stream = new MemoryStream(cacheBuffer)) { diff --git a/MapImages/UWP/Properties/AssemblyInfo.cs b/MapImages/UWP/Properties/AssemblyInfo.cs index d6443787..23aa85e2 100644 --- a/MapImages/UWP/Properties/AssemblyInfo.cs +++ b/MapImages/UWP/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapImages/WPF/Properties/AssemblyInfo.cs b/MapImages/WPF/Properties/AssemblyInfo.cs index d3ba367a..45ff704c 100644 --- a/MapImages/WPF/Properties/AssemblyInfo.cs +++ b/MapImages/WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapProjections/UWP/Properties/AssemblyInfo.cs b/MapProjections/UWP/Properties/AssemblyInfo.cs index b2635b00..60818a4c 100644 --- a/MapProjections/UWP/Properties/AssemblyInfo.cs +++ b/MapProjections/UWP/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapProjections/WPF/Properties/AssemblyInfo.cs b/MapProjections/WPF/Properties/AssemblyInfo.cs index 7d9ae6b2..1e5cbc5c 100644 --- a/MapProjections/WPF/Properties/AssemblyInfo.cs +++ b/MapProjections/WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/UniversalApp/Properties/AssemblyInfo.cs b/SampleApps/UniversalApp/Properties/AssemblyInfo.cs index 1481d979..1bcc2d65 100644 --- a/SampleApps/UniversalApp/Properties/AssemblyInfo.cs +++ b/SampleApps/UniversalApp/Properties/AssemblyInfo.cs @@ -8,7 +8,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: ComVisible(false)] diff --git a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs index 37cecf1f..86e815fe 100644 --- a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.12.1")] -[assembly: AssemblyFileVersion("4.12.1")] +[assembly: AssemblyVersion("4.12.2")] +[assembly: AssemblyFileVersion("4.12.2")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)]