-
Notifications
You must be signed in to change notification settings - Fork 575
SKAutoCanvasRestore avoid crash at Dispose when canvas was already disposed #3291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
omg. might be the fix for the navigating away from page with skglview crash. EDIT: Yeah! It doesn't crash when i just comment this out! So when we merge i could uncomment :) //using (new SKAutoCanvasRestore(_retainedSurface.Canvas, true))
{
OnPaintSurface(new(_retainedSurface, _renderTarget, SurfaceOrigin, ColorType));
} Re-EDIT: Ha just realized i can just use a custom-fixed |
System.NullReferenceException: Object reference not set to an instance of an object. at SkiaSharp.Views.Windows.SKXamlCanvas.Invalidate()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the continued work!
/azp run |
Azure Pipelines could not run because the pipeline triggers exclude this branch/path. |
/azp run |
Azure Pipelines could not run because the pipeline triggers exclude this branch/path. |
Description of Change
Have catched this few times myself: might be my bad coding style, but nevertheless
SKAutoCanvasRestore
should not crash app if the canvas inside was already disposed for any reason whatever. So checking to avoid that insideSKAutoCanvasRestore
Dispose
method.Bugs Fixed
SKAutoCanvasRestore
could crash if GC-ed/disposed after the containing canvas native Handler was already released whilecanvas
field still not NULL andRestore()
would be called, then crash app accessing Handle 0.EDIT: also added safety checks to mappers (second commit), after was running n Debug and catched landing into mapper code with a NULL handler parameter when navigating between pages with accelerated canvases. Would guess there want be any harm for adding those too to solve occasional very rare and random crashes.
No known issues identified, still could be related to some unknown random crashes.
No Api changes, a small code change, please see 1 file change below.
Required skia PR
None.
PR Checklist