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 <ajax@redhat.com>
This commit is contained in:
parent
7b33c2d3f3
commit
f88d9b1f77
|
@ -273,6 +273,9 @@ static void
|
|||
xwl_screen_post_damage(struct xwl_screen *xwl_screen)
|
||||
{
|
||||
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,
|
||||
&xwl_screen->damage_window_list, link_damage) {
|
||||
|
@ -290,6 +293,17 @@ xwl_screen_post_damage(struct xwl_screen *xwl_screen)
|
|||
#endif
|
||||
|
||||
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)
|
|||
}
|
||||
|
||||
xwl_window_create_frame_callback(xwl_window);
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
DamageEmpty(window_get_damage(xwl_window->window));
|
||||
|
||||
xorg_list_del(&xwl_window->link_damage);
|
||||
}
|
||||
|
||||
Bool
|
||||
|
|
Loading…
Reference in New Issue
Block a user