On 08/09/15 13:31, Pekka Paalanen wrote: > From: John Sadler <[email protected]> > > When running with the RPi backend, Weston now segfaults at startup on the > line: > > flippipe->clk_id = output->base.compositor->presentation_clock; > > in `rpi_flippipe_init()`. > > This is because `output->base.compositor` is NULL. This problem did not > exist on 1.8.0, and it looks like it may have been introduced by 954f183e2f. > > This commit ensures that the `compositor` is initialised in `rpi_backend` > and that flippipe init uses the compositor pointer from backend. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91885 > > Signed-off-by: John Sadler <[email protected]> > > Changes in v2: > - fix summary to not break the build > - use output->backend->compositor in rpi_flippipe_init() instead of > output->base.compositor. The latter is set by weston_output_init() > which gets called later than rpi_flippipe_init(). > > Signed-off-by: Pekka Paalanen <[email protected]> > > --- > Hi John, > > a good find! I adjusted this patch a bit. If you can give a Tested-by > for the v2, I can push this.
Sure. I re-built with your v2 and ran on RPi2. It runs fine, no segfault. Tested-by: John Sadler <[email protected]> Thanks, John. > > Thanks, > pq > --- > src/compositor-rpi.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c > index 602cbee..0aeb077 100644 > --- a/src/compositor-rpi.c > +++ b/src/compositor-rpi.c > @@ -184,6 +184,7 @@ rpi_flippipe_handler(int fd, uint32_t mask, void *data) > static int > rpi_flippipe_init(struct rpi_flippipe *flippipe, struct rpi_output *output) > { > + struct weston_compositor *compositor = output->backend->compositor; > struct wl_event_loop *loop; > int fd[2]; > > @@ -192,9 +193,9 @@ rpi_flippipe_init(struct rpi_flippipe *flippipe, struct > rpi_output *output) > > flippipe->readfd = fd[0]; > flippipe->writefd = fd[1]; > - flippipe->clk_id = output->base.compositor->presentation_clock; > + flippipe->clk_id = compositor->presentation_clock; > > - loop = wl_display_get_event_loop(output->base.compositor->wl_display); > + loop = wl_display_get_event_loop(compositor->wl_display); > flippipe->source = wl_event_loop_add_fd(loop, flippipe->readfd, > WL_EVENT_READABLE, > rpi_flippipe_handler, output); > @@ -498,6 +499,7 @@ rpi_backend_create(struct weston_compositor *compositor, > backend->base.destroy = rpi_backend_destroy; > backend->base.restore = rpi_restore; > > + backend->compositor = compositor; > backend->prev_state = WESTON_COMPOSITOR_ACTIVE; > backend->single_buffer = param->renderer.single_buffer; > _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
