elementary: Don't segfault if we are not using an X11-compatible engine
authorChris Michael <cp.michael@samsung.com>
Thu, 17 Jul 2014 16:50:51 +0000 (12:50 -0400)
committerChris Michael <cp.michael@samsung.com>
Thu, 17 Jul 2014 16:54:13 +0000 (12:54 -0400)
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>
legacy/elementary/src/lib/elm_config.c

index f3bce0d..b308928 100644 (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