public void GetNextDrawable() { if (!_drawable.IsNull) { ObjectiveCRuntime.release(_drawable.NativePtr); } using (NSAutoreleasePool.Begin()) { _drawable = _metalLayer.nextDrawable(); ObjectiveCRuntime.retain(_drawable.NativePtr); } }
private protected override void SwapBuffersCore(Swapchain swapchain) { MTLSwapchain mtlSC = Util.AssertSubtype <Swapchain, MTLSwapchain>(swapchain); IntPtr currentDrawablePtr = mtlSC.CurrentDrawable.NativePtr; if (currentDrawablePtr != IntPtr.Zero) { using (NSAutoreleasePool.Begin()) { MTLCommandBuffer submitCB = _commandQueue.commandBuffer(); submitCB.presentDrawable(currentDrawablePtr); submitCB.commit(); } } mtlSC.GetNextDrawable(); }