SDL: Merge commit 'a905a7869f18332579ff06ba3f7f3777708a3007' into main

From a905a7869f18332579ff06ba3f7f3777708a3007 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 22 Oct 2022 08:50:18 -0700
Subject: [PATCH] Clear the previous bitmap when calculating a new window shape

Fixes https://github.com/libsdl-org/SDL/issues/6428
---
 src/video/SDL_shape.c                   | 5 +++++
 src/video/directfb/SDL_DirectFB_shape.c | 3 +--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/video/SDL_shape.c b/src/video/SDL_shape.c
index ef4cc6045506..f393bdf1cdb6 100644
--- a/src/video/SDL_shape.c
+++ b/src/video/SDL_shape.c
@@ -77,8 +77,12 @@ SDL_CalculateShapeBitmap(SDL_WindowShapeMode mode,SDL_Surface *shape,Uint8* bitm
     int bytes_per_scanline = (shape->w + (ppb - 1)) / ppb;
     Uint8 *bitmap_scanline;
     SDL_Color key;
+
     if(SDL_MUSTLOCK(shape))
         SDL_LockSurface(shape);
+
+	SDL_memset(bitmap, 0, shape->h * bytes_per_scanline);
+
     for(y = 0;y<shape->h;y++) {
         bitmap_scanline = bitmap + y * bytes_per_scanline;
         for(x=0;x<shape->w;x++) {
@@ -118,6 +122,7 @@ SDL_CalculateShapeBitmap(SDL_WindowShapeMode mode,SDL_Surface *shape,Uint8* bitm
             bitmap_scanline[x / ppb] |= mask_value << (x % ppb);
         }
     }
+
     if(SDL_MUSTLOCK(shape))
         SDL_UnlockSurface(shape);
 }
diff --git a/src/video/directfb/SDL_DirectFB_shape.c b/src/video/directfb/SDL_DirectFB_shape.c
index da2290f6dc04..ff334c80491d 100644
--- a/src/video/directfb/SDL_DirectFB_shape.c
+++ b/src/video/directfb/SDL_DirectFB_shape.c
@@ -96,8 +96,7 @@ DirectFB_SetWindowShape(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowSh
         SDL_DFB_CHECKERR(devdata->dfb->CreateSurface(devdata->dfb, &dsc, &data->surface));
 
         /* Assume that shaper->alphacutoff already has a value, because SDL_SetWindowShape() should have given it one. */
-        SDL_DFB_ALLOC_CLEAR(bitmap, shape->w * shape->h);
-        SDL_CalculateShapeBitmap(shaper->mode,shape,bitmap,1);
+        SDL_CalculateShapeBitmap(shaper->mode, shape, bitmap, 1);
 
         src = bitmap;