On 15.08.2017 09:43, Pekka Paalanen wrote: > From: Pekka Paalanen <[email protected]> > > Fixes the failure to start with fbdev-backend: > > weston: /home/pq/git/weston/libweston/compositor.c:4733: > weston_compositor_add_pending_output: Assertion `output->disable' failed. > > The disable hook was completely unimplemented, and the regression was > caused by e952a01c3b42c7c870091e71488e9469bd897153 > "libweston: move asserts to add_pending_output()". > It used to work because Weston never tried to explicitly disable the > fbdev output, but now it is hitting the assert. > > Fix it by tentatively implementing a disable hook. It has not been > tested to work for explicit disabling, but it does solve the regression. > > Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=102208 > Cc: [email protected] > Signed-off-by: Pekka Paalanen <[email protected]>
Hi, Looks reasonable: Reviewed-by: Armin Krezović <[email protected]> Cheers. > --- > libweston/compositor-fbdev.c | 23 +++++++++++++++++------ > 1 file changed, 17 insertions(+), 6 deletions(-) > > diff --git a/libweston/compositor-fbdev.c b/libweston/compositor-fbdev.c > index e80a5040..6a305385 100644 > --- a/libweston/compositor-fbdev.c > +++ b/libweston/compositor-fbdev.c > @@ -473,6 +473,21 @@ out_hw_surface: > } > > static int > +fbdev_output_disable_handler(struct weston_output *base) > +{ > + if (!base->enabled) > + return 0; > + > + /* Close the frame buffer. */ > + fbdev_output_disable(base); > + > + if (base->renderer_state != NULL) > + pixman_renderer_output_destroy(base); > + > + return 0; > +} > + > +static int > fbdev_output_create(struct fbdev_backend *backend, > const char *device) > { > @@ -497,7 +512,7 @@ fbdev_output_create(struct fbdev_backend *backend, > > output->base.name = strdup("fbdev"); > output->base.destroy = fbdev_output_destroy; > - output->base.disable = NULL; > + output->base.disable = fbdev_output_disable_handler; > output->base.enable = fbdev_output_enable; > > weston_output_init(&output->base, backend->compositor); > @@ -539,11 +554,7 @@ fbdev_output_destroy(struct weston_output *base) > > weston_log("Destroying fbdev output.\n"); > > - /* Close the frame buffer. */ > - fbdev_output_disable(base); > - > - if (base->renderer_state != NULL) > - pixman_renderer_output_destroy(base); > + fbdev_output_disable_handler(base); > > /* Remove the output. */ > weston_output_destroy(&output->base); > _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
