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 e952a01c3b
"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>
dev
Pekka Paalanen 7 years ago
parent 167bbb6d10
commit acd71fb0af
  1. 23
      libweston/compositor-fbdev.c

@ -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…
Cancel
Save