same than my previous mail : doc, @since, ChangeLog, NEWS

Vincent

On Tue, Dec 27, 2011 at 12:27 AM, Enlightenment SVN
<[email protected]> wrote:
> Log:
> Ecore: Add Ecore_Wayland (Wayland backend like ecore_x).
>
>  Ecore_Evas: Add 'drame_frame' functions.
>  Add ecore_evas_wayland code (for creating ecore_evas' in wayland).
>
>  NB: Merry Christmas EFL !!, Here is you're gift :)
>
>
>
> Author:       devilhorns
> Date:         2011-12-26 15:27:20 -0800 (Mon, 26 Dec 2011)
> New Revision: 66542
> Trac:         http://trac.enlightenment.org/e/changeset/66542
>
> Added:
>  trunk/ecore/ecore-wayland.pc.in 
> trunk/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c 
> trunk/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c 
> trunk/ecore/src/lib/ecore_wayland/ 
> trunk/ecore/src/lib/ecore_wayland/Ecore_Wayland.h 
> trunk/ecore/src/lib/ecore_wayland/Makefile.am 
> trunk/ecore/src/lib/ecore_wayland/ecore_wl.c 
> trunk/ecore/src/lib/ecore_wayland/ecore_wl_private.h 
> trunk/ecore/src/lib/ecore_wayland/ecore_wl_window.c
> Modified:
>  trunk/ecore/Makefile.am trunk/ecore/configure.ac 
> trunk/ecore/src/lib/Makefile.am trunk/ecore/src/lib/ecore_evas/Ecore_Evas.h 
> trunk/ecore/src/lib/ecore_evas/Makefile.am 
> trunk/ecore/src/lib/ecore_evas/ecore_evas.c 
> trunk/ecore/src/lib/ecore_evas/ecore_evas_fb.c 
> trunk/ecore/src/lib/ecore_evas/ecore_evas_private.h
>
> Modified: trunk/ecore/Makefile.am
> ===================================================================
> --- trunk/ecore/Makefile.am     2011-12-26 23:13:52 UTC (rev 66541)
> +++ trunk/ecore/Makefile.am     2011-12-26 23:27:20 UTC (rev 66542)
> @@ -106,6 +106,7 @@
>  ecore-psl1ght.pc.in \
>  ecore-input.pc.in \
>  ecore-wince.pc.in \
> +ecore-wayland.pc.in \
>  ecore.spec.in \
>  ecore.spec \
>  m4/ac_abstract_socket.m4 \
> @@ -190,6 +191,10 @@
>  pkgconfig_DATA += ecore-psl1ght.pc
>  endif
>
> +if BUILD_ECORE_WAYLAND
> +pkgconfig_DATA += ecore-wayland.pc
> +endif
> +
>  .PHONY: doc
>
>  # Documentation
>
> Modified: trunk/ecore/configure.ac
> ===================================================================
> --- trunk/ecore/configure.ac    2011-12-26 23:13:52 UTC (rev 66541)
> +++ trunk/ecore/configure.ac    2011-12-26 23:27:20 UTC (rev 66542)
> @@ -133,6 +133,7 @@
>  want_ecore_fb="no"
>  want_ecore_directfb="no"
>  want_ecore_wince="no"
> +want_ecore_wayland="no"
>
>  # ecore_x options (both xlib and xcb)
>  want_ecore_x_composite="yes"
> @@ -173,6 +174,8 @@
>  want_ecore_evas_fb="no"
>  want_ecore_evas_software_16_wince="no"
>  want_ecore_evas_ews="yes"
> +want_ecore_evas_wayland_shm="no"
> +want_ecore_evas_wayland_egl="no"
>
>  # ecore_imf modules
>  want_ecore_imf_xim="no"
> @@ -225,6 +228,7 @@
>       want_ecore_fb="yes"
>       want_ecore_imf="yes"
>       want_ecore_x="yes"
> +      want_ecore_wayland="yes"
>       want_ecore_evas_software_x11="yes"
>       want_ecore_evas_opengl_x11="yes"
>       want_ecore_evas_software_16_x11="yes"
> @@ -235,6 +239,8 @@
>       want_ecore_evas_gl_cocoa="no"
>       want_ecore_evas_directfb="yes"
>       want_ecore_evas_fb="yes"
> +      want_ecore_evas_wayland_shm="yes"
> +      want_ecore_evas_wayland_egl="yes"
>       want_ecore_imf_xim="yes"
>       want_ecore_imf_scim="yes"
>       ;;
> @@ -265,6 +271,7 @@
>  requirements_ecore_wince=""
>  requirements_ecore_imf_xim=""
>  requirements_ecore_imf_scim=""
> +requirements_ecore_wayland=""
>
>  AC_CHECK_DECL([MAXHOSTNAMELEN],[FOUND_MAXHOSTNAMELEN=yes])
>
> @@ -1838,6 +1845,34 @@
>    [${have_ecore_psl1ght}],
>    [requirements_ecore_evas="ecore-psl1ght >= 1.1.99 
> ${requirements_ecore_evas}"])
>
> +### WAYLAND
> +
> +ecore_wayland_deps="no"
> +have_wayland="no"
> +if test "x${want_ecore_wayland}" = "xyes" ; then
> +  PKG_CHECK_MODULES([WAYLAND], [wayland-client xkbcommon], 
> [have_wayland="yes"], [have_wayland="no"])
> +fi
> +if test "x${have_ecore_input}" = "xyes" -a "x${have_wayland}" = "xyes" ; then
> +  ecore_wayland_deps="yes"
> +fi
> +
> +ECORE_CHECK_MODULE([wayland], [${want_ecore_wayland}], [Wayland], 
> [${ecore_wayland_deps}])
> +if test "x${have_ecore_wayland}" = "xyes" ; then
> +  requirements_ecore_wayland="ecore-input >= 1.1.0 wayland-client xkbcommon 
> ${requirements_ecore_wayland}"
> +fi
> +
> +ECORE_EVAS_CHECK_MODULE_FULL([wayland-shm], [wayland-shm],
> +   [${want_ecore_evas_wayland_shm}],
> +   [Wayland Shm],
> +   [${have_ecore_wayland}],
> +   [requirements_ecore_evas="ecore-wayland >= 1.1.0 
> ${requirements_ecore_evas}"])
> +
> +ECORE_EVAS_CHECK_MODULE_FULL([wayland-egl], [wayland-egl],
> +   [${want_ecore_evas_wayland_egl}],
> +   [Wayland Egl],
> +   [${have_ecore_wayland}],
> +   [requirements_ecore_evas="ecore-wayland >= 1.1.0 
> ${requirements_ecore_evas}"])
> +
>  ### install and build examples
>
>  EFL_CHECK_BUILD_EXAMPLES([enable_build_examples="yes"], 
> [enable_build_examples="no"])
> @@ -1865,6 +1900,7 @@
>  AC_SUBST(requirements_ecore_wince)
>  AC_SUBST(requirements_ecore_imf_xim)
>  AC_SUBST(requirements_ecore_imf_scim)
> +AC_SUBST(requirements_ecore_wayland)
>
>  AC_CONFIG_FILES([
>  Makefile
> @@ -1885,6 +1921,7 @@
>  ecore-cocoa.pc
>  ecore-psl1ght.pc
>  ecore-wince.pc
> +ecore-wayland.pc
>  ecore.pc
>  doc/ecore.dox
>  doc/Makefile
> @@ -1913,6 +1950,7 @@
>  src/lib/ecore_x/Makefile
>  src/lib/ecore_x/xlib/Makefile
>  src/lib/ecore_x/xcb/Makefile
> +src/lib/ecore_wayland/Makefile
>  src/examples/Makefile
>  src/tests/Makefile
>  src/modules/Makefile
> @@ -2033,6 +2071,7 @@
>  echo "  Ecore_DirectFB...............: $have_ecore_directfb"
>  echo "  Ecore_WinCE..................: $have_ecore_wince"
>  echo "  Ecore_PSL1GHT................: $have_ecore_psl1ght"
> +echo "  Ecore_Wayland................: $have_ecore_wayland"
>
>  echo
>  echo " Ecore Evas:"
> @@ -2066,6 +2105,8 @@
>   echo "    Software 16bit DirectDraw..: $have_ecore_evas_software_16_ddraw"
>   echo "    Software 16bit WinCE.......: $have_ecore_evas_software_16_wince"
>   echo "    Sing.Proc. Windowing System: $have_ecore_evas_ews"
> +  echo "    Wayland Shm................: $have_ecore_evas_wayland_shm"
> +  echo "    Wayland Egl................: $have_ecore_evas_wayland_egl"
>  fi
>  echo
>  echo "  Tests................: ${enable_tests}"
>
> Modified: trunk/ecore/src/lib/Makefile.am
> ===================================================================
> --- trunk/ecore/src/lib/Makefile.am     2011-12-26 23:13:52 UTC (rev 66541)
> +++ trunk/ecore/src/lib/Makefile.am     2011-12-26 23:27:20 UTC (rev 66542)
> @@ -46,6 +46,10 @@
>  SUBDIRS += ecore_cocoa
>  endif
>
> +if BUILD_ECORE_WAYLAND
> +SUBDIRS += ecore_wayland
> +endif
> +
>  if BUILD_ECORE_IPC
>  SUBDIRS += ecore_ipc
>  endif
>
> Modified: trunk/ecore/src/lib/ecore_evas/Ecore_Evas.h
> ===================================================================
> --- trunk/ecore/src/lib/ecore_evas/Ecore_Evas.h 2011-12-26 23:13:52 UTC (rev 
> 66541)
> +++ trunk/ecore/src/lib/ecore_evas/Ecore_Evas.h 2011-12-26 23:27:20 UTC (rev 
> 66542)
> @@ -81,6 +81,8 @@
>  #define HAVE_ECORE_EVAS_WINCE 1
>  #define HAVE_ECORE_EVAS_EWS 1
>  #define HAVE_ECORE_EVAS_PSL1GHT 1
> +#define HAVE_ECORE_EVAS_WAYLAND_SHM 1
> +#define HAVE_ECORE_EVAS_WAYLAND_EGL 1
>
>  typedef enum _Ecore_Evas_Engine_Type
>  {
> @@ -104,7 +106,9 @@
>    ECORE_EVAS_ENGINE_SOFTWARE_16_WINCE,
>    ECORE_EVAS_ENGINE_OPENGL_SDL,
>    ECORE_EVAS_ENGINE_EWS,
> -   ECORE_EVAS_ENGINE_PSL1GHT
> +   ECORE_EVAS_ENGINE_PSL1GHT,
> +   ECORE_EVAS_ENGINE_WAYLAND_SHM,
> +   ECORE_EVAS_ENGINE_WAYLAND_EGL
>  } Ecore_Evas_Engine_Type;
>
>  typedef enum _Ecore_Evas_Avoid_Damage_Type
> @@ -144,6 +148,10 @@
>  typedef struct _Ecore_Cocoa_Window Ecore_Cocoa_Window;
>  #endif
>
> +#ifndef _ECORE_WAYLAND_H_
> +typedef struct _Ecore_Wl_Window Ecore_Wl_Window;
> +#endif
> +
>  #ifndef _ECORE_EVAS_PRIVATE_H
>  /* basic data types */
>  typedef struct _Ecore_Evas Ecore_Evas;
> @@ -689,6 +697,9 @@
>  EAPI Ecore_Evas     *ecore_evas_directfb_new(const char *disp_name, int 
> windowed, int x, int y, int w, int h);
>  EAPI Ecore_DirectFB_Window *ecore_evas_directfb_window_get(const Ecore_Evas 
> *ee);
>
> +EAPI Ecore_Evas     *ecore_evas_wayland_shm_new(const char *disp_name, int 
> x, int y, int w, int h, int frame);
> +//EAPI Ecore_Evas     *ecore_evas_wayland_egl_new(const char *disp_name, int 
> x, int y, int w, int h, int frame);
> +
>  /**
>  * @brief Create a new @c Ecore_Evas canvas bound to the Evas
>  * @b buffer engine
> @@ -1450,6 +1461,9 @@
>  */
>  EAPI void        ecore_evas_screen_geometry_get(const Ecore_Evas *ee, int 
> *x, int *y, int *w, int *h);
>
> +EAPI void        ecore_evas_draw_frame_set(Ecore_Evas *ee, Eina_Bool 
> draw_frame);
> +EAPI Eina_Bool   ecore_evas_draw_frame_get(const Ecore_Evas *ee);
> +
>  /**
>  * @brief Associate the given object to this ecore evas.
>  *
>
> Modified: trunk/ecore/src/lib/ecore_evas/Makefile.am
> ===================================================================
> --- trunk/ecore/src/lib/ecore_evas/Makefile.am  2011-12-26 23:13:52 UTC (rev 
> 66541)
> +++ trunk/ecore/src/lib/ecore_evas/Makefile.am  2011-12-26 23:27:20 UTC (rev 
> 66542)
> @@ -1,8 +1,8 @@
>  MAINTAINERCLEANFILES = Makefile.in
>
>  if BUILD_ECORE_X
> -ECORE_X_INC = -I$(top_srcdir)/src/lib/ecore_x @x_cflags@ @ECORE_XCB_CFLAGS@
> -ECORE_X_LIB = $(top_builddir)/src/lib/ecore_x/libecore_x.la @x_libs@ 
> @ECORE_XCB_LIBS@
> +ECORE_X_INC = -I$(top_srcdir)/src/lib/ecore_x @x_cflags@
> +ECORE_X_LIB = $(top_builddir)/src/lib/ecore_x/libecore_x.la @x_libs@
>  else
>  ECORE_X_INC =
>  ECORE_X_LIB =
> @@ -66,6 +66,16 @@
>  ECORE_PSL1GHT_LIB =
>  endif
>
> +if BUILD_ECORE_WAYLAND
> +ECORE_WAYLAND_INC = -I$(top_srcdir)/src/lib/ecore_wayland @WAYLAND_CFLAGS@
> +ECORE_WAYLAND_LIB = $(top_builddir)/src/lib/ecore_wayland/libecore_wayland.la
> +ECORE_WAYLAND_LIBADD = @WAYLAND_LIBS@ $(ECORE_WAYLAND_LIB)
> +else
> +ECORE_WAYLAND_INC =
> +ECORE_WAYLAND_LIB =
> +ECORE_WAYLAND_LIBADD =
> +endif
> +
>  if BUILD_ECORE_IPC
>  ECORE_IPC_INC= \
>  -I$(top_srcdir)/src/lib/ecore_ipc \
> @@ -92,6 +102,7 @@
>  $(ECORE_COCOA_INC) \
>  $(ECORE_WINCE_INC) \
>  $(ECORE_PSL1GHT_INC) \
> +$(ECORE_WAYLAND_INC) \
>  $(ECORE_IPC_INC) \
>  @EVAS_CFLAGS@ \
>  @EINA_CFLAGS@ \
> @@ -116,6 +127,7 @@
>  ecore_evas_wince.c \
>  ecore_evas_ews.c \
>  ecore_evas_psl1ght.c \
> +ecore_evas_wayland_shm.c \
>  ecore_evas_extn.c
>
>  libecore_evas_la_LIBADD = \
> @@ -129,6 +141,8 @@
>  $(ECORE_WINCE_LIB) \
>  $(ECORE_IPC_LIB) \
>  $(ECORE_PSL1GHT_LIB) \
> +$(ECORE_WAYLAND_LIB) \
> +$(ECORE_WAYLAND_LIBADD) \
>  $(top_builddir)/src/lib/ecore_input/libecore_input.la \
>  $(top_builddir)/src/lib/ecore_input_evas/libecore_input_evas.la \
>  $(top_builddir)/src/lib/ecore/libecore.la \
>
> Modified: trunk/ecore/src/lib/ecore_evas/ecore_evas.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore_evas/ecore_evas.c 2011-12-26 23:13:52 UTC (rev 
> 66541)
> +++ trunk/ecore/src/lib/ecore_evas/ecore_evas.c 2011-12-26 23:27:20 UTC (rev 
> 66542)
> @@ -201,6 +201,18 @@
>  #else
>         return EINA_FALSE;
>  #endif
> +     case ECORE_EVAS_ENGINE_WAYLAND_SHM:
> +#ifdef BUILD_ECORE_EVAS_WAYLAND_SHM
> +        return EINA_TRUE;
> +#else
> +        return EINA_FALSE;
> +#endif
> +     case ECORE_EVAS_ENGINE_WAYLAND_EGL:
> +#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL
> +        return EINA_TRUE;
> +#else
> +        return EINA_FALSE;
> +#endif
>       default:
>         return EINA_FALSE;
>      };
> @@ -293,6 +305,7 @@
>  #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
>    while (_ecore_evas_wince_shutdown());
>  #endif
> +
>    if (_ecore_evas_async_events_fd)
>      ecore_main_fd_handler_del(_ecore_evas_async_events_fd);
>
> @@ -588,6 +601,40 @@
>  }
>  #endif
>
> +#ifdef BUILD_ECORE_EVAS_WAYLAND_SHM
> +static Ecore_Evas *
> +_ecore_evas_constructor_wayland_shm(int x, int y, int w, int h, const char 
> *extra_options)
> +{
> +   char *disp_name = NULL;
> +   unsigned int frame = 0;
> +   Ecore_Evas *ee;
> +
> +   _ecore_evas_parse_extra_options_str(extra_options, "display=", 
> &disp_name);
> +   _ecore_evas_parse_extra_options_uint(extra_options, "frame=", &frame);
> +   ee = ecore_evas_wayland_shm_new(disp_name, x, y, w, h, frame);
> +   free(disp_name);
> +
> +   return ee;
> +}
> +#endif
> +
> +#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL
> +static Ecore_Evas *
> +_ecore_evas_constructor_wayland_egl(int x, int y, int w, int h, const char 
> *extra_options)
> +{
> +   char *disp_name = NULL;
> +   unsigned int frame = 0;
> +//   Ecore_Evas *ee;
> +
> +   _ecore_evas_parse_extra_options_str(extra_options, "display=", 
> &disp_name);
> +   _ecore_evas_parse_extra_options_uint(extra_options, "frame=", &frame);
> +//   ee = ecore_evas_wayland_egl_new(disp_name, x, y, w, h, frame);
> +   free(disp_name);
> +
> +   return NULL;
> +}
> +#endif
> +
>  #ifdef BUILD_ECORE_EVAS_SOFTWARE_GDI
>  static Ecore_Evas *
>  _ecore_evas_constructor_software_gdi(int x, int y, int w, int h, const char 
> *extra_options)
> @@ -725,7 +772,16 @@
>   {"psl1ght", _ecore_evas_constructor_psl1ght},
>  #endif
>
> -  /* Last chance to have a window */
> +   /* Wayland */
> +#ifdef BUILD_ECORE_EVAS_WAYLAND_SHM
> +  {"wayland_shm", _ecore_evas_constructor_wayland_shm},
> +#endif
> +
> +#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL
> +  {"wayland_egl", _ecore_evas_constructor_wayland_egl},
> +#endif
> +
> +   /* Last chance to have a window */
>  #ifdef BUILD_ECORE_EVAS_OPENGL_SDL
>   {"opengl_sdl", _ecore_evas_constructor_opengl_sdl},
>  #endif
> @@ -2019,8 +2075,8 @@
>         ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
>                          "ecore_evas_withdrawn_get");
>         return EINA_FALSE;
> -     } else
> -     return ee->prop.withdrawn ? EINA_TRUE : EINA_FALSE;
> +     }
> +   return ee->prop.withdrawn ? EINA_TRUE : EINA_FALSE;
>  }
>
>  /**
> @@ -2059,8 +2115,8 @@
>         ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
>                          "ecore_evas_sticky_get");
>         return EINA_FALSE;
> -     } else
> -     return ee->prop.sticky ? EINA_TRUE : EINA_FALSE;
> +     }
> +   return ee->prop.sticky ? EINA_TRUE : EINA_FALSE;
>  }
>
>  EAPI void
> @@ -2181,6 +2237,28 @@
>    IFE;
>  }
>
> +EAPI void
> +ecore_evas_draw_frame_set(Ecore_Evas *ee, Eina_Bool draw_frame)
> +{
> +   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
> +     {
> +        ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, "ecore_evas_draw_frame_set");
> +        return;
> +     }
> +   ee->prop.draw_frame = draw_frame;
> +}
> +
> +EAPI Eina_Bool
> +ecore_evas_draw_frame_get(const Ecore_Evas *ee)
> +{
> +   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
> +     {
> +        ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, "ecore_evas_draw_frame_get");
> +        return EINA_FALSE;
> +     }
> +   return ee->prop.draw_frame;
> +}
> +
>  /* fps debug calls - for debugging how much time your app actually spends */
>  /* rendering graphics... :) */
>
>
> Modified: trunk/ecore/src/lib/ecore_evas/ecore_evas_fb.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore_evas/ecore_evas_fb.c      2011-12-26 23:13:52 
> UTC (rev 66541)
> +++ trunk/ecore/src/lib/ecore_evas/ecore_evas_fb.c      2011-12-26 23:27:20 
> UTC (rev 66542)
> @@ -155,9 +155,9 @@
>    if (ee->visible)
>      {
>         Eina_List *updates;
> -
>         Eina_List *ll;
>         Ecore_Evas *ee2;
> +
>         if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
>
>         EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
>
> Modified: trunk/ecore/src/lib/ecore_evas/ecore_evas_private.h
> ===================================================================
> --- trunk/ecore/src/lib/ecore_evas/ecore_evas_private.h 2011-12-26 23:13:52 
> UTC (rev 66541)
> +++ trunk/ecore/src/lib/ecore_evas/ecore_evas_private.h 2011-12-26 23:27:20 
> UTC (rev 66542)
> @@ -79,10 +79,18 @@
>  # include <Evas_Engine_Gl_Cocoa.h>
>  #endif
>
> -/**
> -   Log domain macros and variable
> - **/
> +#ifdef BUILD_ECORE_EVAS_WAYLAND_SHM
> +# include "Ecore_Wayland.h"
> +# include <Evas_Engine_Wayland_Shm.h>
> +#endif
>
> +#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL
> +# include "Ecore_Wayland.h"
> +# include <Evas_Engine_Wayland_Egl.h>
> +#endif
> +
> +/** Log domain macros and variables **/
> +
>  extern int _ecore_evas_log_dom;
>
>  #ifdef ECORE_EVAS_DEFAULT_LOG_COLOR
> @@ -260,6 +268,20 @@
>    } ews;
>  #endif
>
> +#if defined(BUILD_ECORE_EVAS_WAYLAND_SHM) || 
> defined(BUILD_ECORE_EVAS_WAYLAND_EGL)
> +   struct
> +     {
> +        Evas_Object *frame;
> +
> +# ifdef BUILD_ECORE_EVAS_WAYLAND_SHM
> +        struct wl_surface *surface;
> +        struct wl_shell_surface *shell_surface;
> +        struct wl_buffer *buffer;
> +# endif
> +
> +     } wl;
> +#endif
> +
>    Ecore_Timer *idle_flush_timer;
>  };
>
> @@ -322,6 +344,7 @@
>       char            withdrawn    : 1;
>       char            sticky       : 1;
>       char            request_pos  : 1;
> +      char            draw_frame   : 1;
>    } prop;
>
>    struct {
>
>
> ------------------------------------------------------------------------------
> Write once. Port to many.
> Get the SDK and tools to simplify cross-platform app development. Create
> new or port existing apps to sell to consumers worldwide. Explore the
> Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
> http://p.sf.net/sfu/intel-appdev
> _______________________________________________
> enlightenment-svn mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn

------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to