X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsdl.c;h=bfcd7ead12e0cdc815dd3fad2bebe9f184cbe816;hb=92b6a44481d43254055576a02ce4e335eeab12e9;hp=3d45ad0ad28d45f1c12018d2205bbb3be6f7f897;hpb=eb6f957a5666e96d9d9d428bb6e91a5e44ef8601;p=rocksndiamonds.git diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index 3d45ad0a..bfcd7ead 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -255,6 +255,7 @@ void SDLInitVideoBuffer(DrawBuffer **backbuffer, DrawWindow **window, #endif video.window_scaling_percent = setup.window_scaling_percent; + video.window_scaling_quality = setup.window_scaling_quality; #if defined(TARGET_SDL2) int num_displays = SDL_GetNumVideoDisplays(); @@ -520,7 +521,8 @@ static SDL_Surface *SDLCreateScreen(DrawBuffer **backbuffer, if (sdl_renderer != NULL) { SDL_RenderSetLogicalSize(sdl_renderer, width, height); - SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); + // SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); + SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, setup.window_scaling_quality); sdl_texture = SDL_CreateTexture(sdl_renderer, SDL_PIXELFORMAT_ARGB8888, @@ -608,6 +610,8 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) #endif SDL_Surface *new_surface = NULL; + SetWindowTitle(); + if (*backbuffer == NULL) *backbuffer = CreateBitmapStruct(); @@ -794,6 +798,7 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) video.fullscreen_enabled = FALSE; video.window_scaling_percent = setup.window_scaling_percent; + video.window_scaling_quality = setup.window_scaling_quality; success = TRUE; } @@ -826,6 +831,11 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) } #if defined(TARGET_SDL2) +void SDLSetWindowTitle() +{ + SDL_SetWindowTitle(sdl_window, program.window_title); +} + void SDLSetWindowScaling(int window_scaling_percent) { if (sdl_window == NULL) @@ -844,6 +854,32 @@ void SDLSetWindowScaling(int window_scaling_percent) video.window_scaling_percent = window_scaling_percent; video.window_width = new_window_width; video.window_height = new_window_height; + + SetWindowTitle(); +} + +void SDLSetWindowScalingQuality(char *window_scaling_quality) +{ + if (sdl_texture == NULL) + return; + + SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, window_scaling_quality); + + SDL_Texture *new_texture = SDL_CreateTexture(sdl_renderer, + SDL_PIXELFORMAT_ARGB8888, + SDL_TEXTUREACCESS_STREAMING, + video.width, video.height); + + if (new_texture != NULL) + { + SDL_DestroyTexture(sdl_texture); + + sdl_texture = new_texture; + + SDLRedrawWindow(); + } + + video.window_scaling_quality = window_scaling_quality; } void SDLSetWindowFullscreen(boolean fullscreen)