From 058213366bccf7f62d4c4c6061477d7a69ea336d Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 1 Dec 2023 10:51:54 -0800
Subject: [PATCH] Make sure we use alpha of 0 when clearing a transparent
window with no content
---
src/render/metal/SDL_render_metal.m | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/render/metal/SDL_render_metal.m b/src/render/metal/SDL_render_metal.m
index 4686fbd888ab..4cb7577fb2cc 100644
--- a/src/render/metal/SDL_render_metal.m
+++ b/src/render/metal/SDL_render_metal.m
@@ -1525,9 +1525,10 @@ static int METAL_RenderPresent(SDL_Renderer *renderer)
// If we don't have a command buffer, we can't present, so activate to get one.
if (data.mtlcmdencoder == nil) {
- // We haven't even gotten a backbuffer yet? Clear it to black. Otherwise, load the existing data.
+ // We haven't even gotten a backbuffer yet? Load and clear it. Otherwise, load the existing data.
if (data.mtlbackbuffer == nil) {
- MTLClearColor color = MTLClearColorMake(0.0f, 0.0f, 0.0f, 1.0f);
+ float alpha = (SDL_GetWindowFlags(renderer->window) & SDL_WINDOW_TRANSPARENT) ? 0.0f : 1.0f;
+ MTLClearColor color = MTLClearColorMake(0.0f, 0.0f, 0.0f, alpha);
ready = METAL_ActivateRenderCommandEncoder(renderer, MTLLoadActionClear, &color, nil);
} else {
ready = METAL_ActivateRenderCommandEncoder(renderer, MTLLoadActionLoad, NULL, nil);