From e3a07c33099c9a3db1ef90ccc1d0c50fb3bdb0df Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Thu, 13 Sep 2018 22:24:26 +0200 Subject: [PATCH] update-on-event --- app/src/scrcpy.c | 1 + app/src/screen.c | 4 ++++ app/src/screen.h | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/app/src/scrcpy.c b/app/src/scrcpy.c index 54a7f993..2e2e911d 100644 --- a/app/src/scrcpy.c +++ b/app/src/scrcpy.c @@ -88,6 +88,7 @@ static SDL_bool event_loop(void) { switch (event.window.event) { case SDL_WINDOWEVENT_EXPOSED: case SDL_WINDOWEVENT_SIZE_CHANGED: + screen_update_scale(&screen); screen_render(&screen); break; } diff --git a/app/src/screen.c b/app/src/screen.c index 1ae6c36e..1666a783 100644 --- a/app/src/screen.c +++ b/app/src/screen.c @@ -313,3 +313,7 @@ void screen_resize_to_pixel_perfect(struct screen *screen) { LOGD("Resized to pixel-perfect"); } } + +void screen_update_scale(struct screen *screen) { + render_set_scaled_logical_size(screen, screen->frame_size); +} diff --git a/app/src/screen.h b/app/src/screen.h index 13103eaa..67dcb295 100644 --- a/app/src/screen.h +++ b/app/src/screen.h @@ -66,4 +66,8 @@ void screen_resize_to_fit(struct screen *screen); // resize window to 1:1 (pixel-perfect) void screen_resize_to_pixel_perfect(struct screen *screen); +// recompute the scale in case the window moved from/to another screen with a +// different HiDPI +void screen_update_scale(struct screen *screen); + #endif