refactor(video/sdl): dedupe scale computation and use calloc for framebuffer

This commit is contained in:
2026-08-19 21:53:18 +02:00
parent 4e7049f49a
commit c4bed2f596
+3 -10
View File
@@ -82,7 +82,7 @@ uint8_t skele_video_init(skele_video_config_t cfg)
SDL_DisplayID display;
SDL_WindowFlags flags = 0;
const SDL_DisplayMode *mode;
uint16_t window_w, window_h, aw, ah;
uint16_t window_w, window_h;
if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD)) {
stk_log(STK_LOG_ERROR, "video: SDL_Init failed: %s",
@@ -125,24 +125,17 @@ uint8_t skele_video_init(skele_video_config_t cfg)
return SKELE_INIT_FAILURE;
}
aw = (uint16_t)((mode->w * 3) / 4);
ah = (uint16_t)((mode->h * 3) / 4);
cur_scale = 1;
while ((vid_w * (cur_scale + 1)) <= aw &&
(vid_h * (cur_scale + 1)) <= ah)
cur_scale++;
cur_scale = max_scale(vid_w, vid_h);
window_w = vid_w * cur_scale;
window_h = vid_h * cur_scale;
}
rgba_buf = malloc(vid_total * sizeof(uint32_t));
rgba_buf = calloc(vid_total, sizeof(uint32_t));
if (!rgba_buf) {
stk_log(STK_LOG_ERROR, "video: out of memory");
SDL_Quit();
return SKELE_INIT_FAILURE;
}
memset(rgba_buf, 0, vid_total * sizeof(uint32_t));
window = SDL_CreateWindow("skele", window_w, window_h,
flags | SDL_WINDOW_HIDDEN);