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