elementary: Don't segfault if we are not using an X11-compatible engine

When running Enlightenment under Wayland only, during init of E we
make a call to elm_config_all_flush. elm_config_all_flush is making
calls to ecore_x_window function(s) (for setting of elm_profile),
However this causes a crash if the ELM_ENGINE is not one that is
running under X11 (ie: ELM_ENGINE=drm or wayland_*). So to fix this
crash, we will compare the current ELM_ENGINE and see if it is
X11-compatible before making unnecessary (and crashing) calls to
ecore_x_window functions.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2014-07-17 12:50:51 -04:00
parent 057d5456c6
commit 1db0e58c31
1 changed files with 13 additions and 3 deletions

View File

@ -3137,11 +3137,21 @@ elm_config_audio_mute_set(Edje_Channel channel, Eina_Bool mute)
EAPI void
elm_config_all_flush(void)
{
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
ENGINE_COMPARE(ELM_XRENDER_X11) ||
ENGINE_COMPARE(ELM_OPENGL_X11) ||
ENGINE_COMPARE(ELM_OPENGL_COCOA) ||
ENGINE_COMPARE(ELM_SOFTWARE_WIN32))
#undef ENGINE_COMPARE
{
#ifdef HAVE_ELEMENTARY_X
_prop_config_set();
ecore_x_window_prop_string_set(_config_win, _atom[ATOM_E_PROFILE],
_elm_profile);
_prop_config_set();
ecore_x_window_prop_string_set(_config_win, _atom[ATOM_E_PROFILE],
_elm_profile);
#endif
}
}
static void