On Tue, Jan 07, 2014 at 04:41:39PM +0100, [email protected] wrote: > From: Emilio Pozuelo Monfort <[email protected]> > > We were calling exposay_highlight_surface() inside a wl_list_for_each > loop for a layer, but exposay_highlight_surface() calls activate() > which calls shell_surface_update_layer(), which removes the surface > from its layer and reinserts it, causing an infinite loop. > > Call exposay_highlight_surface() outside the for_each to avoid this.
That fixes it for me, thanks. Kristian > https://bugs.freedesktop.org/show_bug.cgi?id=72404 > --- > desktop-shell/exposay.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/desktop-shell/exposay.c b/desktop-shell/exposay.c > index 81da00a..f409aa3 100644 > --- a/desktop-shell/exposay.c > +++ b/desktop-shell/exposay.c > @@ -187,7 +187,7 @@ exposay_layout(struct desktop_shell *shell) > struct weston_compositor *compositor = shell->compositor; > struct weston_output *output = get_default_output(compositor); > struct weston_view *view; > - struct exposay_surface *esurface; > + struct exposay_surface *esurface, *highlight = NULL; > int w, h; > int i; > int last_row_removed = 0; > @@ -284,13 +284,16 @@ exposay_layout(struct desktop_shell *shell) > esurface->height = view->surface->height * esurface->scale; > > if (shell->exposay.focus_current == esurface->view) > - exposay_highlight_surface(shell, esurface); > + highlight = esurface; > > exposay_animate_in(esurface); > > i++; > } > > + if (highlight) > + exposay_highlight_surface(shell, highlight); > + > weston_compositor_schedule_repaint(shell->compositor); > > return EXPOSAY_LAYOUT_ANIMATE_TO_OVERVIEW; > -- > 1.8.5.2 > > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
