From 6abeec507ff3f70b89155508dbb2b7ec6d137328 Mon Sep 17 00:00:00 2001 From: Kurt Date: Tue, 28 Aug 2018 18:21:46 -0700 Subject: [PATCH] Catch gdi exception & ignore #2072 --- PKHeX.WinForms/Controls/SAV Editor/BitmapAnimator.cs | 8 +++++--- PKHeX.WinForms/Util/ImageUtil.cs | 5 +---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/PKHeX.WinForms/Controls/SAV Editor/BitmapAnimator.cs b/PKHeX.WinForms/Controls/SAV Editor/BitmapAnimator.cs index 8448a4a63..1f53d99ce 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/BitmapAnimator.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/BitmapAnimator.cs @@ -73,8 +73,10 @@ private void TimerElapsed(object sender, ElapsedEventArgs elapsedEventArgs) lock (Lock) { - if (Enabled) - pb.BackgroundImage = GetFrame(frameIndex); + if (!Enabled) + return; + try { pb.BackgroundImage = GetFrame(frameIndex); } // drawing GDI can be silly sometimes #2072 + catch (AccessViolationException ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } } } @@ -89,7 +91,7 @@ private Image GetFrame(int frameIndex) var frameData = (byte[])GlowData.Clone(); ImageUtil.ChangeAllColorTo(frameData, frameColor); - frame = (Image)ImageUtil.GetBitmap(frameData, imgWidth, imgHeight).Clone(); + frame = ImageUtil.GetBitmap(frameData, imgWidth, imgHeight); if (ExtraLayer != null) frame = ImageUtil.LayerImage(frame, ExtraLayer, 0, 0); frame = ImageUtil.LayerImage(OriginalBackground, frame, 0, 0); diff --git a/PKHeX.WinForms/Util/ImageUtil.cs b/PKHeX.WinForms/Util/ImageUtil.cs index 3e39702af..dfe90945f 100644 --- a/PKHeX.WinForms/Util/ImageUtil.cs +++ b/PKHeX.WinForms/Util/ImageUtil.cs @@ -22,12 +22,9 @@ public static Bitmap LayerImage(Image baseLayer, Image overLayer, int x, int y) { if (baseLayer == null) return overLayer as Bitmap; - Bitmap img = new Bitmap(baseLayer.Width, baseLayer.Height); + Bitmap img = new Bitmap(baseLayer); using (Graphics gr = Graphics.FromImage(img)) - { - gr.DrawImage(baseLayer, 0, 0); gr.DrawImage(overLayer, x, y, overLayer.Width, overLayer.Height); - } return img; }