File tree Expand file tree Collapse file tree
src/Avalonia.Wayland/Server/Transient/Rendering Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -37,16 +37,27 @@ private sealed class RenderTarget : EglPlatformSurfaceRenderTargetBase
3737 private IntPtr _eglWindow ;
3838 private EglSurface ? _eglSurface ;
3939 private PixelSize _currentSize ;
40+ private bool _disposed ;
4041
4142 public RenderTarget ( WSurface surface , EglContext context ) : base ( context )
4243 {
4344 _surface = surface ;
45+ _surface . RegisterRenderTarget ( this ) ;
4446 }
45-
47+
4648 protected override bool SkipWaits => true ;
4749
48- public override PlatformRenderTargetState State =>
49- IsCorrupted ? PlatformRenderTargetState . Corrupted : _surface . State ;
50+ public override PlatformRenderTargetState State
51+ {
52+ get
53+ {
54+ if ( _disposed )
55+ return PlatformRenderTargetState . Disposed ;
56+ if ( IsCorrupted )
57+ return PlatformRenderTargetState . Corrupted ;
58+ return _surface . State ;
59+ }
60+ }
5061
5162 public override IGlPlatformSurfaceRenderingSession BeginDrawCore ( IRenderTarget . RenderTargetSceneInfo sceneInfo )
5263 {
@@ -89,6 +100,11 @@ public override IGlPlatformSurfaceRenderingSession BeginDrawCore(IRenderTarget.R
89100
90101 public override void Dispose ( )
91102 {
103+ if ( _disposed )
104+ return ;
105+
106+ _disposed = true ;
107+ _surface . UnregisterRenderTarget ( this ) ;
92108 _eglSurface ? . Dispose ( ) ;
93109 _eglSurface = null ;
94110 if ( _eglWindow != IntPtr . Zero )
You can’t perform that action at this time.
0 commit comments