compositor-fbdev: fix start-up assertion
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: bluescreen_avenger@verizon.net Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Armin Krezović <krezovic.armin@gmail.com> Tested-by: n3rdopolis <bluescreen_avenger@verizon.net>
This commit is contained in:
parent
167bbb6d10
commit
acd71fb0af
@ -472,6 +472,21 @@ out_hw_surface:
|
||||
return -1;
|
||||
}
|
||||
|
||||
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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user