diff --git a/src/platform/sdl/gl-sdl.c b/src/platform/sdl/gl-sdl.c index 489483026..f43156def 100644 --- a/src/platform/sdl/gl-sdl.c +++ b/src/platform/sdl/gl-sdl.c @@ -160,5 +160,5 @@ void GBASDLRunloop(struct GBAThread* context, struct SDLSoftwareRenderer* render } void GBASDLDeinit(struct SDLSoftwareRenderer* renderer) { - UNUSED(renderer); + free(renderer->d.outputBuffer); } diff --git a/src/platform/sdl/main.c b/src/platform/sdl/main.c index 4f4dc581b..71911c29b 100644 --- a/src/platform/sdl/main.c +++ b/src/platform/sdl/main.c @@ -143,8 +143,6 @@ static bool _GBASDLInit(struct SDLSoftwareRenderer* renderer) { } static void _GBASDLDeinit(struct SDLSoftwareRenderer* renderer) { - free(renderer->d.outputBuffer); - GBASDLDeinitEvents(&renderer->events); GBASDLDeinitAudio(&renderer->audio); #if SDL_VERSION_ATLEAST(2, 0, 0) diff --git a/src/platform/sdl/sw-sdl.c b/src/platform/sdl/sw-sdl.c index e147c1651..f35252e0b 100644 --- a/src/platform/sdl/sw-sdl.c +++ b/src/platform/sdl/sw-sdl.c @@ -123,7 +123,9 @@ void GBASDLRunloop(struct GBAThread* context, struct SDLSoftwareRenderer* render } void GBASDLDeinit(struct SDLSoftwareRenderer* renderer) { - UNUSED(renderer); + if (renderer->ratio > 1) { + free(renderer->d.outputBuffer); + } #if !SDL_VERSION_ATLEAST(2, 0, 0) SDL_Surface* surface = SDL_GetVideoSurface(); SDL_UnlockSurface(surface);