Sometimes the Bitmap is released before the canvas... Fixes #292
- this is fairly scary since my view has a strong reference to it - so we first check to make sure that the bitmap's handle is not nullptr
This commit is contained in:
Родитель
fb0eee9f6e
Коммит
1ee8d2bcc9
|
@ -74,7 +74,7 @@ namespace SkiaSharp.Views.Android
|
|||
return;
|
||||
|
||||
// create the bitmap data if we need it
|
||||
if (bitmap == null || bitmap.Width != info.Width || bitmap.Height != info.Height)
|
||||
if (bitmap == null || bitmap.Handle == IntPtr.Zero || bitmap.Width != info.Width || bitmap.Height != info.Height)
|
||||
{
|
||||
FreeBitmap();
|
||||
bitmap = Bitmap.CreateBitmap(info.Width, info.Height, Bitmap.Config.Argb8888);
|
||||
|
@ -141,7 +141,10 @@ namespace SkiaSharp.Views.Android
|
|||
if (bitmap != null)
|
||||
{
|
||||
// free and recycle the bitmap data
|
||||
if (bitmap.Handle != IntPtr.Zero && !bitmap.IsRecycled)
|
||||
{
|
||||
bitmap.Recycle();
|
||||
}
|
||||
bitmap.Dispose();
|
||||
bitmap = null;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Android.Content;
|
||||
using System;
|
||||
using Android.Content;
|
||||
using Android.Graphics;
|
||||
using Android.Runtime;
|
||||
using Android.Util;
|
||||
|
@ -77,7 +78,7 @@ namespace SkiaSharp.Views.Android
|
|||
private void CreateBitmap(int width, int height)
|
||||
{
|
||||
// create the bitmap data
|
||||
if (bitmap == null || bitmap.Width != width || bitmap.Height != height)
|
||||
if (bitmap == null || bitmap.Handle == IntPtr.Zero || bitmap.Width != width || bitmap.Height != height)
|
||||
{
|
||||
FreeBitmap();
|
||||
bitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888);
|
||||
|
@ -89,7 +90,10 @@ namespace SkiaSharp.Views.Android
|
|||
if (bitmap != null)
|
||||
{
|
||||
// free and recycle the bitmap data
|
||||
if (bitmap.Handle != IntPtr.Zero && !bitmap.IsRecycled)
|
||||
{
|
||||
bitmap.Recycle();
|
||||
}
|
||||
bitmap.Dispose();
|
||||
bitmap = null;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче