Signed-off-by: Michael Teyfel <[email protected]>
---
 ivi-shell/ivi-shell.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/ivi-shell/ivi-shell.c b/ivi-shell/ivi-shell.c
index 67619b8..e9ddf9a 100644
--- a/ivi-shell/ivi-shell.c
+++ b/ivi-shell/ivi-shell.c
@@ -497,44 +497,53 @@ wet_shell_init(struct weston_compositor *compositor,
 {
        struct ivi_shell *shell;
        struct ivi_shell_setting setting = { };
-       int retval = -1;
 
        shell = zalloc(sizeof *shell);
        if (shell == NULL)
                return -1;
 
        if (ivi_shell_setting_create(&setting, compositor, argc, argv) != 0)
-               return -1;
+               goto err_shell;
 
        init_ivi_shell(compositor, shell, &setting);
+       /* 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);
 
        if (input_panel_setup(shell) < 0)
-               goto out_settings;
+               goto err_settings;
 
        shell->text_backend = text_backend_init(compositor);
        if (!shell->text_backend)
-               goto out_settings;
+               goto err_settings;
 
        if (wl_global_create(compositor->wl_display,
                             &ivi_application_interface, 1,
                             shell, bind_ivi_application) == NULL)
-               goto out_settings;
+               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);
 
        /* Call module_init of ivi-modules which are defined in weston.ini */
        if (load_controller_modules(compositor, setting.ivi_module,
                                    argc, argv) < 0)
-               goto out_settings;
+               goto err_text_backend;
+
+       return IVI_SUCCEEDED;
 
-       retval = 0;
+err_text_backend:
+       text_backend_destroy(shell->text_backend);
 
-out_settings:
+err_settings:
        free(setting.ivi_module);
 
-       return retval;
+err_shell:
+       free(shell);
+
+       return IVI_FAILED;
 }
-- 
2.7.4

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to