ecore_wayland: Added goto in ecore_init for exit to reduce repetition of code.

Summary:
Instead of repeating the clean-up code if any initialization fails in the init function, I've moved those to one location and added goto.

Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>

Reviewers: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1461
This commit is contained in:
Srivardhan Hebbar 2014-09-18 11:03:26 -04:00 committed by Chris Michael
parent 50a0195f7e
commit 7fd450e690
1 changed files with 23 additions and 30 deletions

View File

@ -113,27 +113,19 @@ ecore_wl_init(const char *name)
if (_ecore_wl_log_dom < 0)
{
EINA_LOG_ERR("Cannot create a log domain for Ecore Wayland");
eina_shutdown();
return --_ecore_wl_init_count;
goto exit_eina;
}
if (!ecore_init())
{
ERR("Could not initialize ecore");
eina_log_domain_unregister(_ecore_wl_log_dom);
_ecore_wl_log_dom = -1;
eina_shutdown();
return --_ecore_wl_init_count;
goto exit_ecore;
}
if (!ecore_event_init())
{
ERR("Could not initialize ecore_event");
eina_log_domain_unregister(_ecore_wl_log_dom);
_ecore_wl_log_dom = -1;
ecore_shutdown();
eina_shutdown();
return --_ecore_wl_init_count;
goto exit_ecore_event;
}
if (!ECORE_WL_EVENT_MOUSE_IN)
@ -159,12 +151,7 @@ ecore_wl_init(const char *name)
if (!(_ecore_wl_disp = malloc(sizeof(Ecore_Wl_Display))))
{
ERR("Could not allocate memory for Ecore_Wl_Display structure");
eina_log_domain_unregister(_ecore_wl_log_dom);
_ecore_wl_log_dom = -1;
ecore_event_shutdown();
ecore_shutdown();
eina_shutdown();
return --_ecore_wl_init_count;
goto exit_ecore_disp;
}
memset(_ecore_wl_disp, 0, sizeof(Ecore_Wl_Display));
@ -172,12 +159,7 @@ ecore_wl_init(const char *name)
if (!(_ecore_wl_disp->wl.display = wl_display_connect(name)))
{
ERR("Could not connect to Wayland display");
eina_log_domain_unregister(_ecore_wl_log_dom);
_ecore_wl_log_dom = -1;
ecore_event_shutdown();
ecore_shutdown();
eina_shutdown();
return --_ecore_wl_init_count;
goto exit_ecore_disp_connect;
}
_ecore_wl_disp->fd = wl_display_get_fd(_ecore_wl_disp->wl.display);
@ -198,13 +180,7 @@ ecore_wl_init(const char *name)
if (!_ecore_wl_xkb_init(_ecore_wl_disp))
{
ERR("Could not initialize XKB");
free(_ecore_wl_disp);
eina_log_domain_unregister(_ecore_wl_log_dom);
_ecore_wl_log_dom = -1;
ecore_event_shutdown();
ecore_shutdown();
eina_shutdown();
return --_ecore_wl_init_count;
goto exit_ecore_disp_connect;
}
_ecore_wl_window_init();
@ -220,6 +196,23 @@ ecore_wl_init(const char *name)
}
return _ecore_wl_init_count;
exit_ecore_disp_connect:
free(_ecore_wl_disp);
exit_ecore_disp:
ecore_event_shutdown();
exit_ecore_event:
ecore_shutdown();
exit_ecore:
eina_log_domain_unregister(_ecore_wl_log_dom);
_ecore_wl_log_dom = -1;
exit_eina:
eina_shutdown();
return --_ecore_wl_init_count;
}
EAPI int