From 984fcdaa8a7855516a8b84016c0c253680bec3af Mon Sep 17 00:00:00 2001 From: ceski <56656010+ceski-1@users.noreply.github.com> Date: Sun, 17 May 2026 07:21:08 -0700 Subject: [PATCH] testcontroller: free/allocate touchpads only when needed --- test/gamepadutils.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/gamepadutils.c b/test/gamepadutils.c index 4da9522d16..6fff0b419b 100644 --- a/test/gamepadutils.c +++ b/test/gamepadutils.c @@ -706,6 +706,7 @@ static void FreeTouchpads(GamepadImage *ctx) void UpdateGamepadImageFromGamepad(GamepadImage *ctx, SDL_Gamepad *gamepad) { int i; + int num_touchpads; if (!ctx) { return; @@ -763,9 +764,12 @@ void UpdateGamepadImageFromGamepad(GamepadImage *ctx, SDL_Gamepad *gamepad) ctx->connection_state = SDL_GetGamepadConnectionState(gamepad); ctx->battery_state = SDL_GetGamepadPowerInfo(gamepad, &ctx->battery_percent); - FreeTouchpads(ctx); - ctx->num_touchpads = SDL_GetNumGamepadTouchpads(gamepad); - ctx->num_touchpads = SDL_min(ctx->num_touchpads, MAX_TOUCHPADS); + num_touchpads = SDL_GetNumGamepadTouchpads(gamepad); + num_touchpads = SDL_min(num_touchpads, MAX_TOUCHPADS); + if (num_touchpads != ctx->num_touchpads) { + FreeTouchpads(ctx); + ctx->num_touchpads = num_touchpads; + } if (ctx->num_touchpads > 0) { ctx->touchpads = (GamepadTouchpad *)SDL_malloc(sizeof(*ctx->touchpads) * ctx->num_touchpads); if (ctx->touchpads) {