On Fri, May 29, 2015 at 05:07:08PM +0200, Arnaud Vrac wrote: > Hi Jonas,
Hi, > > This patch makes the black_surface_get_label function crash. The black > surface should track the fullscreen view in the configure_private field > instead of the black surface view. > > See the attached patch for reference. > Yes, this seems much better, thank you. Mind if I add your Signed-off-by into the fixed commit? Jonas > > > > On 13 mai 2015, at 12:26, Jonas Ådahl <jad...@gmail.com> wrote: > > > > In preparation for further refactoring. > > > > Signed-off-by: Jonas Ådahl <jad...@gmail.com> > > --- > > desktop-shell/shell.c | 23 ++++++++++++----------- > > 1 file changed, 12 insertions(+), 11 deletions(-) > > > > diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c > > index 1ac1340..efa6ac4 100644 > > --- a/desktop-shell/shell.c > > +++ b/desktop-shell/shell.c > > @@ -2843,7 +2843,7 @@ create_black_surface(struct weston_compositor *ec, > > } > > > > surface->configure = black_surface_configure; > > - surface->configure_private = fs_surface; > > + surface->configure_private = view; > > weston_surface_set_label_func(surface, black_surface_get_label); > > weston_surface_set_color(surface, 0.0, 0.0, 0.0, 1); > > pixman_region32_fini(&surface->opaque); > > @@ -5140,11 +5140,13 @@ black_surface_configure(struct weston_surface *es, > > int32_t sx, int32_t sy) > > } > > > > static bool > > -is_black_surface (struct weston_surface *es, struct weston_surface > > **fs_surface) > > +is_black_surface(struct weston_view *view, struct weston_view **fs_view) > > { > > + struct weston_surface *es = view->surface; > > + > > if (es->configure == black_surface_configure) { > > - if (fs_surface) > > - *fs_surface = (struct weston_surface > > *)es->configure_private; > > + if (fs_view) > > + *fs_view = (struct weston_view *) es->configure_private; > > return true; > > } > > return false; > > @@ -5155,21 +5157,20 @@ activate_binding(struct weston_seat *seat, > > struct desktop_shell *shell, > > struct weston_view *focus_view) > > { > > - struct weston_surface *focus; > > + struct weston_view *main_view; > > struct weston_surface *main_surface; > > > > if (!focus_view) > > return; > > - focus = focus_view->surface; > > > > - if (is_black_surface(focus, &main_surface)) > > - focus = main_surface; > > + if (is_black_surface(focus_view, &main_view)) > > + focus_view = main_view; > > > > - main_surface = weston_surface_get_main_surface(focus); > > + main_surface = weston_surface_get_main_surface(focus_view->surface); > > if (get_shell_surface_type(main_surface) == SHELL_SURFACE_NONE) > > return; > > > > - activate(shell, focus, seat, true); > > + activate(shell, focus_view->surface, seat, true); > > } > > > > static void > > @@ -6054,7 +6055,7 @@ switcher_next(struct switcher *switcher) > > weston_surface_damage(view->surface); > > } > > > > - if (is_black_surface(view->surface, NULL)) { > > + if (is_black_surface(view, NULL)) { > > view->alpha = 0.25; > > weston_view_geometry_dirty(view); > > weston_surface_damage(view->surface); > > -- > > 2.1.4 > > > > _______________________________________________ > > wayland-devel mailing list > > wayland-devel@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/wayland-devel > _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel