diff --git a/src/Avalonia.Native.OSX/gl.mm b/src/Avalonia.Native.OSX/gl.mm index f3e6be5cb3..768ff23ceb 100644 --- a/src/Avalonia.Native.OSX/gl.mm +++ b/src/Avalonia.Native.OSX/gl.mm @@ -103,6 +103,7 @@ class GlFeature : public virtual ComSingleObjectGlContext]; } NSOpenGLContext* CreateContext() { - return [[NSOpenGLContext alloc] initWithFormat:_format shareContext:nil]; + return _shared; + //return [[NSOpenGLContext alloc] initWithFormat:_format shareContext:nil]; } virtual HRESULT ObtainDisplay(IAvnGlDisplay**retOut) @@ -208,6 +211,7 @@ public: glFlush(); [_context flushBuffer]; [_context setView:nil]; + CGLUnlockContext([_context CGLContextObj]); [_view unlockFocus]; } }; @@ -235,6 +239,7 @@ public: return E_ABORT; auto gl = _context; + CGLLockContext([_context CGLContextObj]); [gl setView: _view]; [gl makeCurrentContext]; auto frame = [_view frame]; diff --git a/src/Avalonia.Native.OSX/window.mm b/src/Avalonia.Native.OSX/window.mm index 9fa2b9affc..d7b313c325 100644 --- a/src/Avalonia.Native.OSX/window.mm +++ b/src/Avalonia.Native.OSX/window.mm @@ -782,7 +782,7 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent } auto swOp = &_parent->CurrentSwDrawingOperation; - _parent->BaseEvents->Paint(); + _parent->BaseEvents->Paint(); if(swOp->Data != NULL) [self drawFb: &swOp->Desc]; diff --git a/src/Avalonia.Native/AvaloniaNativePlatform.cs b/src/Avalonia.Native/AvaloniaNativePlatform.cs index 381697a99b..9fc1677611 100644 --- a/src/Avalonia.Native/AvaloniaNativePlatform.cs +++ b/src/Avalonia.Native/AvaloniaNativePlatform.cs @@ -76,6 +76,7 @@ namespace Avalonia.Native .Bind().ToConstant(new RenderLoop()) .Bind().ToConstant(new DefaultRenderTimer(60)) .Bind().ToConstant(new SystemDialogs(_factory.CreateSystemDialogs())) + .Bind().ToConstant(new GlPlatformFeature(_factory.ObtainGlFeature())) .Bind().ToConstant(opts); } diff --git a/src/Avalonia.Native/WindowImplBase.cs b/src/Avalonia.Native/WindowImplBase.cs index c8d049d70f..e81e912a0a 100644 --- a/src/Avalonia.Native/WindowImplBase.cs +++ b/src/Avalonia.Native/WindowImplBase.cs @@ -188,7 +188,7 @@ namespace Avalonia.Native void IAvnWindowBaseEvents.RunRenderPriorityJobs() { - if (_parent._deferredRendering && !_parent._gpu + if (_parent._deferredRendering && _parent._lastRenderedLogicalSize != _parent.ClientSize) // Hack to trigger Paint event on the renderer _parent.Paint?.Invoke(new Rect());