From 46df25bb8071ebd27aa4d607da2de61d20d79d73 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Mon, 12 Oct 2020 23:27:33 +1100 Subject: [PATCH] [client] added new option win:dontUpscale --- client/src/config.c | 8 ++++++++ client/src/main.c | 11 +++++++++++ client/src/main.h | 1 + 3 files changed, 20 insertions(+) diff --git a/client/src/config.c b/client/src/config.c index 1843c7cb..1c8abd0e 100644 --- a/client/src/config.c +++ b/client/src/config.c @@ -142,6 +142,13 @@ static struct Option options[] = .type = OPTION_TYPE_BOOL, .value.x_bool = true, }, + { + .module = "win", + .name = "dontUpscale", + .description = "Never try to upscale the window", + .type = OPTION_TYPE_BOOL, + .value.x_bool = false, + }, { .module = "win", .name = "borderless", @@ -400,6 +407,7 @@ bool config_load(int argc, char * argv[]) params.allowResize = option_get_bool ("win", "allowResize" ); params.keepAspect = option_get_bool ("win", "keepAspect" ); params.forceAspect = option_get_bool ("win", "forceAspect" ); + params.dontUpscale = option_get_bool ("win", "dontUpscale" ); params.borderless = option_get_bool ("win", "borderless" ); params.fullscreen = option_get_bool ("win", "fullScreen" ); params.maximize = option_get_bool ("win", "maximize" ); diff --git a/client/src/main.c b/client/src/main.c index b44f9c73..6c71a1f5 100644 --- a/client/src/main.c +++ b/client/src/main.c @@ -92,6 +92,17 @@ static void updatePositionInfo() const float wndAspect = (float)state.windowH / (float)state.windowW; bool force = true; + if (params.dontUpscale && + state.srcSize.x <= state.windowW && + state.srcSize.y <= state.windowH) + { + force = false; + state.dstRect.w = state.srcSize.x; + state.dstRect.h = state.srcSize.y; + state.dstRect.x = state.windowW / 2 - state.srcSize.x / 2; + state.dstRect.y = state.windowH / 2 - state.srcSize.y / 2; + } + else if ((int)(wndAspect * 1000) == (int)(srcAspect * 1000)) { force = false; diff --git a/client/src/main.h b/client/src/main.h index 68c13ba6..b5669518 100644 --- a/client/src/main.h +++ b/client/src/main.h @@ -128,6 +128,7 @@ struct AppParams bool allowResize; bool keepAspect; bool forceAspect; + bool dontUpscale; bool borderless; bool fullscreen; bool maximize;