diff --git a/client/X11/xf_interface.c b/client/X11/xf_interface.c index 5c19e545b..e8cc9aa05 100644 --- a/client/X11/xf_interface.c +++ b/client/X11/xf_interface.c @@ -1520,6 +1520,15 @@ double freerdp_client_get_scale(xfInfo* xfi) return xfi->scale; } +void freerdp_client_reset_scale(xfInfo* xfi) +{ + xfi->scale = 1.0; + + XResizeWindow(xfi->display, xfi->window->handle, xfi->orig_width * xfi->scale, xfi->orig_height * xfi->scale); + IFCALL(xfi->client->OnResizeWindow, xfi->instance, xfi->orig_width * xfi->scale, xfi->orig_height * xfi->scale); + xf_draw_screen_scaled(xfi); +} + int freerdp_client_global_init() { setlocale(LC_ALL, ""); diff --git a/client/X11/xf_interface.h b/client/X11/xf_interface.h index 0fafde13b..400da4b31 100644 --- a/client/X11/xf_interface.h +++ b/client/X11/xf_interface.h @@ -245,6 +245,7 @@ DWORD xf_exit_code_from_disconnect_reason(DWORD reason); #define cfInfo xfInfo FREERDP_API double freerdp_client_get_scale(xfInfo* xfi); +FREERDP_API void freerdp_client_reset_scale(xfInfo* xfi); FREERDP_API int freerdp_client_global_init(); FREERDP_API int freerdp_client_global_uninit();