Commit f88d9b1f authored by Michel Dänzer's avatar Michel Dänzer Committed by Michel Dänzer
Browse files

xwayland: Split up xwl_screen_post_damage into two phases



The first phase sets the new surface properties for all damaged
windows, then the second phase commits all surface updates.

This is preparatory for the next change, there should be no observable
change in behaviour (other than the order of Wayland protocol
requests).
Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
parent 7b33c2d3
...@@ -273,6 +273,9 @@ static void ...@@ -273,6 +273,9 @@ static void
xwl_screen_post_damage(struct xwl_screen *xwl_screen) xwl_screen_post_damage(struct xwl_screen *xwl_screen)
{ {
struct xwl_window *xwl_window, *next_xwl_window; struct xwl_window *xwl_window, *next_xwl_window;
struct xorg_list commit_window_list;
xorg_list_init(&commit_window_list);
xorg_list_for_each_entry_safe(xwl_window, next_xwl_window, xorg_list_for_each_entry_safe(xwl_window, next_xwl_window,
&xwl_screen->damage_window_list, link_damage) { &xwl_screen->damage_window_list, link_damage) {
...@@ -290,6 +293,17 @@ xwl_screen_post_damage(struct xwl_screen *xwl_screen) ...@@ -290,6 +293,17 @@ xwl_screen_post_damage(struct xwl_screen *xwl_screen)
#endif #endif
xwl_window_post_damage(xwl_window); xwl_window_post_damage(xwl_window);
xorg_list_del(&xwl_window->link_damage);
xorg_list_append(&xwl_window->link_damage, &commit_window_list);
}
if (xorg_list_is_empty(&commit_window_list))
return;
xorg_list_for_each_entry_safe(xwl_window, next_xwl_window,
&commit_window_list, link_damage) {
wl_surface_commit(xwl_window->surface);
xorg_list_del(&xwl_window->link_damage);
} }
} }
......
...@@ -808,10 +808,7 @@ xwl_window_post_damage(struct xwl_window *xwl_window) ...@@ -808,10 +808,7 @@ xwl_window_post_damage(struct xwl_window *xwl_window)
} }
xwl_window_create_frame_callback(xwl_window); xwl_window_create_frame_callback(xwl_window);
wl_surface_commit(xwl_window->surface);
DamageEmpty(window_get_damage(xwl_window->window)); DamageEmpty(window_get_damage(xwl_window->window));
xorg_list_del(&xwl_window->link_damage);
} }
Bool Bool
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment