On Sat, 8 Mar 2014 14:20:54 -0300 Gustavo Sverzut Barbieri <[email protected]>
said:

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

match in what way? notice my next commit/feature that modifies the choice list
based on accel preference... this kind of doesn't match with ecore_evas_new()
which either uses the engine name (if passed or set in env var) - if that
fails, literally fail, or uses a single fixed list (order) to try. this code
has a different list based on ELM_DISPLAY (not currently used by anyone, but an
attempt to limit the number of tries to only engines valid for the display
target - eg x11 vs wl), and then that list changes based on accel preference
too...

> 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
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
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