window: throttle resizing to the main surface

In case a toytoolkit application manages to schedule resizes constantly,
throttle them to the main surface display.

When resizing, all surfaces are updated synchronously, so it also makes
sense to synchronize on the main surface's frame callback particularly.
Rendering any faster will not make sense.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Pekka Paalanen 12 years ago committed by Kristian Høgsberg
parent e9297f8e7e
commit eebff54c03
  1. 13
      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)

Loading…
Cancel
Save