diff --git a/ivi-shell/ivi-shell.c b/ivi-shell/ivi-shell.c index 58f53bc5..34cdce27 100644 --- a/ivi-shell/ivi-shell.c +++ b/ivi-shell/ivi-shell.c @@ -484,13 +484,14 @@ wet_shell_init(struct weston_compositor *compositor, int *argc, char *argv[]) { struct ivi_shell *shell; - int retval = -1; shell = zalloc(sizeof *shell); if (shell == NULL) - return -1; + goto err_shell; init_ivi_shell(compositor, shell); + /* TODO deinit_ivi_shell should be implemented, since init_ivi_shell is + * initializing multiple lists. */ shell->destroy_listener.notify = shell_destroy; wl_signal_add(&compositor->destroy_signal, &shell->destroy_listener); @@ -499,22 +500,29 @@ wet_shell_init(struct weston_compositor *compositor, wl_signal_add(&compositor->wake_signal, &shell->wake_listener); if (input_panel_setup(shell) < 0) - goto out; + goto err_shell; shell->text_backend = text_backend_init(compositor); if (!shell->text_backend) - goto out; + goto err_shell; if (wl_global_create(compositor->wl_display, &ivi_application_interface, 1, shell, bind_ivi_application) == NULL) - goto out; + goto err_text_backend; ivi_layout_init_with_compositor(compositor); + /* TODO ivi_layout_destroy should be implemented, since multiple lists + * and signals are initialized.*/ shell_add_bindings(compositor, shell); - retval = 0; + return IVI_SUCCEEDED; -out: - return retval; +err_text_backend: + text_backend_destroy(shell->text_backend); + +err_shell: + free(shell); + + return IVI_FAILED; }