X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcompositor.c;h=7e89926e728c9094b87ce7576c3387ef46664ebd;hb=refs%2Fchanges%2F68%2F28068%2F2;hp=634c468aa1e14853152d9b8a7b0e9ee1308b64e1;hpb=924473ef016ba8dcfa863861740be2289421313d;p=src%2Fagl-compositor.git diff --git a/src/compositor.c b/src/compositor.c index 634c468..7e89926 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -487,8 +487,21 @@ head_disable(struct ivi_compositor *ivi, struct weston_head *head) weston_head_detach(head); if (count_heads(ivi_output->output) == 0) { - weston_output_disable(ivi_output->output); + if (ivi_output->output) { + /* ivi_output->output destruction may be deferred in + * some cases (see drm_output_destroy()), so we need to + * forcibly trigger the destruction callback now, or + * otherwise would later access data that we are about + * to free + */ + struct weston_output *save = ivi_output->output; + + handle_output_destroy(&ivi_output->output_destroy, save); + weston_output_destroy(save); + } } + wl_list_remove(&ivi_output->link); + free(ivi_output); } static struct weston_config_section * @@ -1816,7 +1829,12 @@ int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_da weston_compositor_wake(ivi.compositor); ivi_shell_create_global(&ivi); - ivi_launch_shell_client(&ivi); + + ivi_launch_shell_client(&ivi, "shell-client", + &ivi.shell_client.client); + ivi_launch_shell_client(&ivi, "shell-client-ext", + &ivi.shell_client_ext.client); + if (debug) ivi_screenshooter_create(&ivi); ivi_agl_systemd_notify(&ivi);