From dd4edb23ed72fb2dcc54b1d89aa5dba73bd62052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Toma=C5=BEi=C4=8D?= Date: Fri, 28 Dec 2018 10:57:47 +0100 Subject: [PATCH] Use existing metal layer if present on NSWindow If we create and assign a new metal layer to NSWindow, when another one was already assigned, the window content stays black. --- src/renderer_mtl.mm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/renderer_mtl.mm b/src/renderer_mtl.mm index 62714537c..09988fc0d 100644 --- a/src/renderer_mtl.mm +++ b/src/renderer_mtl.mm @@ -2868,9 +2868,17 @@ namespace bgfx { namespace mtl else { NSWindow* nsWindow = (NSWindow*)_nwh; - [nsWindow.contentView setWantsLayer:YES]; - m_metalLayer = [CAMetalLayer layer]; - [nsWindow.contentView setLayer:m_metalLayer]; + CALayer* layer = nsWindow.contentView.layer; + if(NULL != layer && [layer isKindOfClass:NSClassFromString(@"CAMetalLayer")]) + { + m_metalLayer = (CAMetalLayer*)layer; + } + else + { + [nsWindow.contentView setWantsLayer:YES]; + m_metalLayer = [CAMetalLayer layer]; + [nsWindow.contentView setLayer:m_metalLayer]; + } } } #endif // BX_PLATFORM_*