[PATCH weston v3 12/13] window: throttle resizing to the main surface
Pekka Paalanen
ppaalanen at gmail.com
Thu Apr 25 03:57:52 PDT 2013
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 at gmail.com>
---
clients/window.c | 13 +++++++++----
1 file 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)
--
1.8.1.5
More information about the wayland-devel
mailing list