diff options
author | gdkchan <gab.dark.100@gmail.com> | 2024-07-20 16:27:40 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-20 16:27:40 -0300 |
commit | 99f04ac1a64400d45052e4a83c572e50ba86de0d (patch) | |
tree | d7ccf3799c5a27dca23c1d5f9cd36c2be15bc941 /src | |
parent | ce09450743ad36f6478af1a21b5fbff283f08e59 (diff) |
Fix Skia saving screenshot with transparent background and incorrect origin (#7073)1.1.1356
* Fix Skia saving screenshot with transparent background and incorrect origin
* Remove code that is no longer necessary
Diffstat (limited to 'src')
-rw-r--r-- | src/Ryujinx/AppHost.cs | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/Ryujinx/AppHost.cs b/src/Ryujinx/AppHost.cs index 8c643f34..0db8ef41 100644 --- a/src/Ryujinx/AppHost.cs +++ b/src/Ryujinx/AppHost.cs @@ -367,32 +367,24 @@ namespace Ryujinx.Ava } var colorType = e.IsBgra ? SKColorType.Bgra8888 : SKColorType.Rgba8888; - using var bitmap = new SKBitmap(new SKImageInfo(e.Width, e.Height, colorType, SKAlphaType.Premul)); + using SKBitmap bitmap = new SKBitmap(new SKImageInfo(e.Width, e.Height, colorType, SKAlphaType.Premul)); Marshal.Copy(e.Data, 0, bitmap.GetPixels(), e.Data.Length); - SKBitmap bitmapToSave = null; + using SKBitmap bitmapToSave = new SKBitmap(bitmap.Width, bitmap.Height); + using SKCanvas canvas = new SKCanvas(bitmapToSave); - if (e.FlipX || e.FlipY) - { - bitmapToSave = new SKBitmap(bitmap.Width, bitmap.Height); - - using var canvas = new SKCanvas(bitmapToSave); - - canvas.Clear(SKColors.Transparent); + canvas.Clear(SKColors.Black); - float scaleX = e.FlipX ? -1 : 1; - float scaleY = e.FlipY ? -1 : 1; + float scaleX = e.FlipX ? -1 : 1; + float scaleY = e.FlipY ? -1 : 1; - var matrix = SKMatrix.CreateScale(scaleX, scaleY, bitmap.Width / 2f, bitmap.Height / 2f); + var matrix = SKMatrix.CreateScale(scaleX, scaleY, bitmap.Width / 2f, bitmap.Height / 2f); - canvas.SetMatrix(matrix); - - canvas.DrawBitmap(bitmap, new SKPoint(e.FlipX ? -bitmap.Width : 0, e.FlipY ? -bitmap.Height : 0)); - } + canvas.SetMatrix(matrix); + canvas.DrawBitmap(bitmap, SKPoint.Empty); - SaveBitmapAsPng(bitmapToSave ?? bitmap, path); - bitmapToSave?.Dispose(); + SaveBitmapAsPng(bitmapToSave, path); Logger.Notice.Print(LogClass.Application, $"Screenshot saved to {path}", "Screenshot"); } |