Force ELM_WAYLAND_EGL if engine set called when DISPLAY not set
authorMikko Ylinen <mikko.ylinen@intel.com>
Thu, 10 Jan 2013 12:30:37 +0000 (14:30 +0200)
committerPhilippe Coval <philippe.coval@open.eurogiciel.org>
Tue, 22 Apr 2014 11:21:26 +0000 (13:21 +0200)
Some applications are directly calling elm_config_preferred_engine_set.
To avoid patching all apps to work with Wayland, always set
ELM_WAYLAND_EGL if elm_config_preferred_engine_set is called with
EGL_OPENGL_X11 or EGL_SOFTWARE_X11 when DISPLAY is not set.

Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
src/lib/elm_config.c

index 0134bf712d9a58d292add5ff93f317c0abeb5fc6..8b2a6d731ce2ee5a1294b140dda33e3f92cdbab8 100644 (file)
@@ -2732,8 +2732,16 @@ elm_config_preferred_engine_get(void)
 EAPI void
 elm_config_preferred_engine_set(const char *engine)
 {
-   if (engine)
-     eina_stringshare_replace(&(_elm_preferred_engine), engine);
+   char *d;
+   if (engine) {
+#define ENGINE_COMPARE(name) (!strcmp(name, engine))
+     if (!(d = getenv("DISPLAY")) && (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
+                                     ENGINE_COMPARE(ELM_OPENGL_X11)))
+       eina_stringshare_replace(&(_elm_preferred_engine), ELM_WAYLAND_EGL);
+     else
+       eina_stringshare_replace(&(_elm_preferred_engine), engine);
+#undef ENGINE_COMPARE
+   }
    else
      {
         ELM_SAFE_FREE(_elm_preferred_engine, eina_stringshare_del);