why don't try to match with ecore_evas_new() and it's ECORE_EVAS_ENGINE?

On Sat, Mar 8, 2014 at 1:27 PM, Carsten Haitzler <[email protected]> wrote:
> raster pushed a commit to branch master.
>
> http://git.enlightenment.org/core/elementary.git/commit/?id=245a740c25f55bc3aa649757f05869a9ad8feba1
>
> commit 245a740c25f55bc3aa649757f05869a9ad8feba1
> Author: Carsten Haitzler (Rasterman) <[email protected]>
> Date:   Sun Mar 9 00:49:33 2014 +0900
>
>     win - improve window engine choosing code to be simpler and support 
> display
>
>     this isn't a feature or a bug fix - it's a code logic improvement that
>     also uses an ELM_DISPLAY environment variablew to choose a specific
>     engine list, and still uses ELM_ENGINE and preferred engine. this
>     makes it easy to add new api to prefer accel or not etc.
> ---
>  src/lib/elm_win.c | 235 
> ++++++++++++++++++++++++------------------------------
>  1 file changed, 104 insertions(+), 131 deletions(-)
>
> diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
> index b7625f4..e53088e 100644
> --- a/src/lib/elm_win.c
> +++ b/src/lib/elm_win.c
> @@ -2844,7 +2844,8 @@ _win_constructor(Eo *obj, void *_pd, va_list *list)
>     Evas_Object *parent;
>     Evas *e;
>     const Eina_List *l;
> -   const char *fontpath, *fallback = NULL;
> +   const char *fontpath, *engine = NULL, *enginelist[32], *disp;
> +   int i;
>
>     Elm_Win_Smart_Data tmp_sd;
>
> @@ -2853,17 +2854,6 @@ _win_constructor(Eo *obj, void *_pd, va_list *list)
>     /* just to store some data while trying out to create a canvas */
>     memset(&tmp_sd, 0, sizeof(Elm_Win_Smart_Data));
>
> -#define FALLBACK_TRY(engine)                                      \
> -  if (!tmp_sd.ee) {                                               \
> -     CRI(engine " engine creation failed. Trying default."); \
> -  } while (0)
> -#define FALLBACK_STORE(engine)                               \
> -   if (tmp_sd.ee)                                            \
> -   {                                                         \
> -      CRI(engine "Fallback to %s successful.", engine); \
> -      fallback = engine;                                     \
> -   }
> -
>     switch (type)
>       {
>        case ELM_WIN_INLINED_IMAGE:
> @@ -2893,140 +2883,128 @@ _win_constructor(Eo *obj, void *_pd, va_list *list)
>          break;
>
>        default:
> -        if (ENGINE_COMPARE(ELM_SOFTWARE_X11))
> +        disp = getenv("ELM_DISPLAY");
> +        if ((disp) && (!strcmp(disp, "x11")))
>            {
> -             tmp_sd.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
> -             FALLBACK_TRY("Software X11");
> -             if (!tmp_sd.ee)
> -               {
> -                  tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1);
> -                  FALLBACK_STORE("Software FB");
> -               }
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_SOFTWARE_X11;
> +             enginelist[2] = ELM_OPENGL_X11;
> +             enginelist[3] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_SOFTWARE_FB))
> +        else if ((disp) && (!strcmp(disp, "wl")))
>            {
> -             tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1);
> -             FALLBACK_TRY("Software FB");
> -             if (!tmp_sd.ee)
> -               {
> -                  tmp_sd.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 
> 1);
> -                  FALLBACK_STORE("Software X11");
> -               }
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_WAYLAND_SHM;
> +             enginelist[2] = ELM_WAYLAND_EGL;
> +             enginelist[3] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_OPENGL_X11))
> +        else if ((disp) && (!strcmp(disp, "win")))
>            {
> -             int opt[10];
> -             int opt_i = 0;
> -
> -             if (_elm_config->vsync)
> -               {
> -                  opt[opt_i] = ECORE_EVAS_GL_X11_OPT_VSYNC;
> -                  opt_i++;
> -                  opt[opt_i] = 1;
> -                  opt_i++;
> -                  opt[opt_i] = 0;
> -               }
> -             if (opt_i > 0)
> -               tmp_sd.ee = ecore_evas_gl_x11_options_new
> -                   (NULL, 0, 0, 0, 1, 1, opt);
> -             else
> -               tmp_sd.ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1);
> -             FALLBACK_TRY("OpenGL");
> -             if (!tmp_sd.ee)
> -               {
> -                  tmp_sd.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 
> 1);
> -                  FALLBACK_STORE("Software X11");
> -                  if (!tmp_sd.ee)
> -                    {
> -                       tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1);
> -                       FALLBACK_STORE("Software FB");
> -                    }
> -               }
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_SOFTWARE_WIN32;
> +             enginelist[2] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_SOFTWARE_WIN32))
> +        else if ((disp) && (!strcmp(disp, "sdl")))
>            {
> -             tmp_sd.ee = ecore_evas_software_gdi_new(NULL, 0, 0, 1, 1);
> -             FALLBACK_TRY("Software Win32");
> -          }
> -        else if (ENGINE_COMPARE(ELM_SOFTWARE_PSL1GHT))
> -          {
> -             tmp_sd.ee = ecore_evas_psl1ght_new(NULL, 1, 1);
> -             FALLBACK_TRY("PSL1GHT");
> -          }
> -        else if (ENGINE_COMPARE(ELM_SOFTWARE_SDL))
> -          {
> -             tmp_sd.ee = ecore_evas_sdl_new(NULL, 0, 0, 0, 0, 0, 1);
> -             FALLBACK_TRY("Software SDL");
> -             if (!tmp_sd.ee)
> -               {
> -                  tmp_sd.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 
> 1);
> -                  FALLBACK_STORE("Software X11");
> -                  if (!tmp_sd.ee)
> -                    {
> -                       tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1);
> -                       FALLBACK_STORE("Software FB");
> -                    }
> -               }
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_SOFTWARE_SDL;
> +             enginelist[2] = ELM_OPENGL_SDL;
> +             enginelist[3] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_SOFTWARE_16_SDL))
> +        else if ((disp) && (!strcmp(disp, "mac")))
>            {
> -             tmp_sd.ee = ecore_evas_sdl16_new(NULL, 0, 0, 0, 0, 0, 1);
> -             FALLBACK_TRY("Software-16-SDL");
> -             if (!tmp_sd.ee)
> -               {
> -                  tmp_sd.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 
> 1);
> -                  FALLBACK_STORE("Software X11");
> -                  if (!tmp_sd.ee)
> -                    {
> -                       tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1);
> -                       FALLBACK_STORE("Software FB");
> -                    }
> -               }
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_OPENGL_COCOA;
> +             enginelist[2] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_OPENGL_SDL))
> +        else if ((disp) && (!strcmp(disp, "ews")))
>            {
> -             tmp_sd.ee = ecore_evas_gl_sdl_new(NULL, 1, 1, 0, 0);
> -             FALLBACK_TRY("OpenGL SDL");
> -             if (!tmp_sd.ee)
> -               {
> -                  tmp_sd.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 
> 1);
> -                  FALLBACK_STORE("Software X11");
> -                  if (!tmp_sd.ee)
> -                    {
> -                       tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1);
> -                       FALLBACK_STORE("Software FB");
> -                    }
> -               }
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_EWS;
> +             enginelist[2] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_OPENGL_COCOA))
> +        else if ((disp) && (!strcmp(disp, "fb")))
>            {
> -             tmp_sd.ee = ecore_evas_cocoa_new(NULL, 1, 1, 0, 0);
> -             FALLBACK_TRY("OpenGL Cocoa");
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_SOFTWARE_FB;
> +             enginelist[2] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_BUFFER))
> +        else if ((disp) && (!strcmp(disp, "buffer")))
>            {
> -             tmp_sd.ee = ecore_evas_buffer_new(1, 1);
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_BUFFER;
> +             enginelist[2] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_EWS))
> +        else if ((disp) && (!strcmp(disp, "ps3")))
>            {
> -             tmp_sd.ee = ecore_evas_ews_new(0, 0, 1, 1);
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_SOFTWARE_PSL1GHT;
> +             enginelist[2] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_WAYLAND_SHM))
> +        else if ((disp) && (!strcmp(disp, "shot")))
>            {
> -             tmp_sd.ee = ecore_evas_wayland_shm_new(NULL, 0, 0, 0, 1, 1, 0);
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = NULL;
>            }
> -        else if (ENGINE_COMPARE(ELM_WAYLAND_EGL))
> +        else
>            {
> -             tmp_sd.ee = ecore_evas_wayland_egl_new(NULL, 0, 0, 0, 1, 1, 0);
> +             enginelist[0] = ENGINE_GET();
> +             enginelist[1] = ELM_SOFTWARE_X11;
> +             enginelist[2] = ELM_WAYLAND_SHM;
> +             enginelist[3] = ELM_SOFTWARE_FB;
> +             enginelist[4] = ELM_OPENGL_COCOA;
> +             enginelist[5] = ELM_SOFTWARE_SDL;
> +             enginelist[6] = NULL;
>            }
> -        else if (!strncmp(ENGINE_GET(), "shot:", 5))
> +        for (i = 0; i < 30; i++)
>            {
> -             tmp_sd.ee = ecore_evas_buffer_new(1, 1);
> -             ecore_evas_manual_render_set(tmp_sd.ee, EINA_TRUE);
> -             tmp_sd.shot.info = eina_stringshare_add
> -                 (ENGINE_GET() + 5);
> +             if ((i > 0) && (!enginelist[i])) break;
> +             if (!strcmp(enginelist[i], ELM_SOFTWARE_X11))
> +               tmp_sd.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
> +             else if (!strcmp(enginelist[i], ELM_OPENGL_X11))
> +               {
> +                  int opt[10], opt_i = 0;
> +
> +                  if (_elm_config->vsync)
> +                    {
> +                       opt[opt_i++] = ECORE_EVAS_GL_X11_OPT_VSYNC;
> +                       opt[opt_i++] = 1;
> +                       opt[opt_i++] = 0;
> +                    }
> +                  if (opt_i > 0)
> +                    tmp_sd.ee = ecore_evas_gl_x11_options_new(NULL, 0, 0, 0, 
> 1, 1, opt);
> +                  else
> +                    tmp_sd.ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1);
> +               }
> +             else if (!strcmp(enginelist[i], ELM_WAYLAND_SHM))
> +               tmp_sd.ee = ecore_evas_wayland_shm_new(NULL, 0, 0, 0, 1, 1, 
> 0);
> +             else if (!strcmp(enginelist[i], ELM_WAYLAND_EGL))
> +               tmp_sd.ee = ecore_evas_wayland_egl_new(NULL, 0, 0, 0, 1, 1, 
> 0);
> +             else if (!strcmp(enginelist[i], ELM_SOFTWARE_WIN32))
> +               tmp_sd.ee = ecore_evas_software_gdi_new(NULL, 0, 0, 1, 1);
> +             else if (!strcmp(enginelist[i], ELM_SOFTWARE_SDL))
> +               tmp_sd.ee = ecore_evas_sdl_new(NULL, 0, 0, 0, 0, 0, 1);
> +             else if (!strcmp(enginelist[i], ELM_OPENGL_SDL))
> +               tmp_sd.ee = ecore_evas_gl_sdl_new(NULL, 1, 1, 0, 0);
> +             else if (!strcmp(enginelist[i], ELM_OPENGL_COCOA))
> +               tmp_sd.ee = ecore_evas_cocoa_new(NULL, 1, 1, 0, 0);
> +             else if (!strcmp(enginelist[i], ELM_EWS))
> +               tmp_sd.ee = ecore_evas_ews_new(0, 0, 1, 1);
> +             else if (!strcmp(enginelist[i], ELM_SOFTWARE_FB))
> +               tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1);
> +             else if (!strcmp(enginelist[i], ELM_BUFFER))
> +               tmp_sd.ee = ecore_evas_buffer_new(1, 1);
> +             else if (!strcmp(enginelist[i], ELM_SOFTWARE_PSL1GHT))
> +               tmp_sd.ee = ecore_evas_psl1ght_new(NULL, 1, 1);
> +             else if (!strncmp(enginelist[i], "shot:", 5))
> +               {
> +                  tmp_sd.ee = ecore_evas_buffer_new(1, 1);
> +                  ecore_evas_manual_render_set(tmp_sd.ee, EINA_TRUE);
> +                  tmp_sd.shot.info = eina_stringshare_add(ENGINE_GET() + 5);
> +               }
> +             engine = enginelist[i];
> +             if (tmp_sd.ee) break;
>            }
> -#undef FALLBACK_TRY
>          break;
>       }
>
> @@ -3069,8 +3047,6 @@ _win_constructor(Eo *obj, void *_pd, va_list *list)
>
>  #ifdef HAVE_ELEMENTARY_X
>     else if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
> -            ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
> -            ENGINE_COMPARE(ELM_SOFTWARE_8_X11) ||
>              ENGINE_COMPARE(ELM_OPENGL_X11))
>       {
>          sd->x.client_message_handler = ecore_event_handler_add
> @@ -3079,7 +3055,6 @@ _win_constructor(Eo *obj, void *_pd, va_list *list)
>              (ECORE_X_EVENT_WINDOW_PROPERTY, _elm_win_property_change, obj);
>       }
>  #endif
> -
>     else if (!strncmp(ENGINE_GET(), "shot:", 5))
>       _shot_init(sd);
>
> @@ -3181,14 +3156,13 @@ _win_constructor(Eo *obj, void *_pd, va_list *list)
>     _elm_win_list = eina_list_append(_elm_win_list, obj);
>     _elm_win_count++;
>
> -   if (((fallback) && (!strcmp(fallback, "Software FB"))) ||
> -       ((!fallback) && (ENGINE_COMPARE(ELM_SOFTWARE_FB))))
> +   if (!strcmp(engine, ELM_SOFTWARE_FB))
>       {
>          TRAP(sd, fullscreen_set, 1);
>       }
>     else if ((type != ELM_WIN_INLINED_IMAGE) &&
> -            (ENGINE_COMPARE(ELM_WAYLAND_SHM) ||
> -             ENGINE_COMPARE(ELM_WAYLAND_EGL)))
> +            (!strcmp(engine, ELM_WAYLAND_SHM) ||
> +            (!strcmp(engine, ELM_WAYLAND_EGL))))
>       _elm_win_frame_add(sd, "default");
>
>     if (_elm_config->focus_highlight_enable)
> @@ -3209,8 +3183,7 @@ _win_constructor(Eo *obj, void *_pd, va_list *list)
>
>     if ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_ON) ||
>         ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_AUTO) &&
> -           (((fallback) && (!strcmp(fallback, "Software FB"))) ||
> -               ((!fallback) && (ENGINE_COMPARE(ELM_SOFTWARE_FB))))))
> +        (!strcmp(engine, ELM_SOFTWARE_FB))))
>       {
>          Evas_Object *o;
>          Evas_Coord mw = 1, mh = 1, hx = 0, hy = 0;
>
> --
>
>



-- 
Gustavo Sverzut Barbieri
--------------------------------------
Mobile: +55 (19) 99225-2202
Contact: http://www.gustavobarbieri.com.br/contact

------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to