diff options
Diffstat (limited to 'clients')
-rw-r--r-- | clients/window.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/clients/window.c b/clients/window.c index ab9a36e..b72c2ca 100644 --- a/clients/window.c +++ b/clients/window.c @@ -3561,16 +3561,21 @@ idle_redraw(struct task *task, uint32_t events) struct window *window = container_of(task, struct window, redraw_task); struct surface *surface; - if (window->resize_needed) + wl_list_init(&window->redraw_task.link); + window->redraw_task_scheduled = 0; + + if (window->resize_needed) { + /* throttle resizing to the main surface display */ + if (window->main_surface->frame_cb) + return; + idle_resize(window); + } wl_list_for_each(surface, &window->subsurface_list, link) surface_redraw(surface); window->redraw_needed = 0; - wl_list_init(&window->redraw_task.link); - window->redraw_task_scheduled = 0; - window_flush(window); wl_list_for_each(surface, &window->subsurface_list, link) |