From f1c31aa3474bdf600a46fdf75709ad9aba402240 Mon Sep 17 00:00:00 2001 From: Crsky Date: Sun, 28 Sep 2025 00:41:39 +0800 Subject: [PATCH] Avoid unnecessary memory copying. --- ArcFormats/Cyberworks/ImageTINK.cs | 13 +++---------- SchemeTool/Program.cs | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/ArcFormats/Cyberworks/ImageTINK.cs b/ArcFormats/Cyberworks/ImageTINK.cs index d5f00247..a46c2ab1 100644 --- a/ArcFormats/Cyberworks/ImageTINK.cs +++ b/ArcFormats/Cyberworks/ImageTINK.cs @@ -148,18 +148,11 @@ namespace GameRes.Formats.Cyberworks input.Read (size_buf, 0 , 4); int png_size = BigEndian.ToInt32 (size_buf, 0); - List mem_list; - using (var membuf = new MemoryStream()) - { - input.CopyTo(membuf); - mem_list = membuf.ToArray().ToList(); - mem_list.RemoveRange(0, mem_list.Count - png_size); - } - BitmapSource frame; - using (var membuf = new MemoryStream(mem_list.ToArray())) + using (var membuf = new MemoryStream (png_size+4)) { - var decoder = new PngBitmapDecoder (membuf, BitmapCreateOptions.None, + input.CopyTo (membuf); + var decoder = new PngBitmapDecoder (new StreamRegion (membuf, membuf.Length-png_size), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); frame = decoder.Frames[0]; } diff --git a/SchemeTool/Program.cs b/SchemeTool/Program.cs index 36b92486..14f7a476 100644 --- a/SchemeTool/Program.cs +++ b/SchemeTool/Program.cs @@ -18,7 +18,7 @@ namespace SchemeTool { GameRes.FormatCatalog.Instance.DeserializeScheme(stream); } -#if false +#if true using (Stream stream = File.Create(".\\GameData\\Formats.json")) { GameRes.FormatCatalog.Instance.SerializeSchemeJson(stream);