From 2d1a357d1b44084b3b49b8fcf6062e3e95de6b6b Mon Sep 17 00:00:00 2001 From: Daniil Vinogradov Date: Mon, 17 Feb 2025 14:36:51 +0100 Subject: [PATCH] CAMetalLayer usage from background thread fix --- src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift b/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift index a4a2558ee..c2e2d2c96 100644 --- a/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift +++ b/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift @@ -484,23 +484,21 @@ class Ryujinx { func repeatuntilfindLayer() { - DispatchQueue.global(qos: .background).async { + Task { @MainActor in while self.metalLayer == nil { let layer = self.getMetalLayer(nil) if layer != nil { - DispatchQueue.main.async { - self.metalLayer = layer - } + self.metalLayer = layer break } - Thread.sleep(forTimeInterval: 0.1) + try await Task.sleep(nanoseconds: 100_000_000) } } } - + @MainActor func getMetalLayer(_ window: OpaquePointer?) -> CAMetalLayer? { var window = window if window == nil {