Create Renderer Only When It Doesn't Exist (#1315)

This commit is contained in:
adityaraj 2023-01-12 05:23:23 +05:30 committed by George Sokianos
parent 4d35dc4969
commit 9a831cb206
1 changed files with 7 additions and 6 deletions

View File

@ -10,7 +10,7 @@ static int query_surface_scale(RenWindow *ren) {
SDL_GetWindowSize(ren->window, &w_points, &h_points);
/* We consider that the ratio pixel/point will always be an integer and
it is the same along the x and the y axis. */
#if defined(__amigaos4__) || defined(__morphos__)
// This is a workaround when the w_pixels != w_points and h_pixels != h_points
// because of redraw delays, especially when the "Resize with contents" is enabled
@ -21,7 +21,7 @@ static int query_surface_scale(RenWindow *ren) {
h_pixels = h_points;
}
#endif
assert(w_pixels % w_points == 0 && h_pixels % h_points == 0 && w_pixels / w_points == h_pixels / h_points);
return w_pixels / w_points;
}
@ -29,11 +29,12 @@ static int query_surface_scale(RenWindow *ren) {
static void setup_renderer(RenWindow *ren, int w, int h) {
/* Note that w and h here should always be in pixels and obtained from
a call to SDL_GL_GetDrawableSize(). */
if (ren->renderer) {
SDL_DestroyTexture(ren->texture);
SDL_DestroyRenderer(ren->renderer);
if (!ren->renderer) {
ren->renderer = SDL_CreateRenderer(ren->window, -1, 0);
}
if (ren->texture) {
SDL_DestroyTexture(ren->texture);
}
ren->renderer = SDL_CreateRenderer(ren->window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
ren->texture = SDL_CreateTexture(ren->renderer, SDL_PIXELFORMAT_BGRA32, SDL_TEXTUREACCESS_STREAMING, w, h);
ren->surface_scale = query_surface_scale(ren);
}