From bc3f5c7e146c080cbfb17c7af75574b13c287fcb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 12 Nov 2022 16:38:11 +1100 Subject: GHOST/Wayland: skip resizing the EGL surface unnecessarily wl_egl_window_resize ran when the window became active/inactive for e.g. --- intern/ghost/intern/GHOST_WindowWayland.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/intern/ghost/intern/GHOST_WindowWayland.cpp b/intern/ghost/intern/GHOST_WindowWayland.cpp index 58c6025f24c..d395888f600 100644 --- a/intern/ghost/intern/GHOST_WindowWayland.cpp +++ b/intern/ghost/intern/GHOST_WindowWayland.cpp @@ -370,11 +370,16 @@ static void frame_handle_configure(struct libdecor_frame *frame, size_next[1] = win->size[1] / win->scale; } + const int size_prev[2] = {UNPACK2(win->size)}; win->size[0] = win->scale * size_next[0]; win->size[1] = win->scale * size_next[1]; - wl_egl_window_resize(win->egl_window, UNPACK2(win->size), 0, 0); - win->ghost_window->notify_size(); + const bool do_resize = (size_prev[0] != win->size[0]) || (size_prev[1] != win->size[1]); + + if (do_resize) { + wl_egl_window_resize(win->egl_window, UNPACK2(win->size), 0, 0); + win->ghost_window->notify_size(); + } if (!libdecor_configuration_get_window_state(configuration, &window_state)) { window_state = LIBDECOR_WINDOW_STATE_NONE; -- cgit v1.2.3