[EGIT] [core/efl] master 01/03: efl - emotion modules - unbreak due to EAPI changes

2015-05-07 Thread Carsten Haitzler
raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7485c41cf45903c2653058180a500e69948440aa

commit 7485c41cf45903c2653058180a500e69948440aa
Author: Carsten Haitzler (Rasterman) 
Date:   Fri May 8 14:12:29 2015 +0900

efl - emotion modules - unbreak due to EAPI changes

emotion relied on Emotion.h's EAPI defs... now they have been removed
fix!
---
 src/lib/emotion/emotion_modules.h | 26 ++
 1 file changed, 26 insertions(+)

diff --git a/src/lib/emotion/emotion_modules.h 
b/src/lib/emotion/emotion_modules.h
index 03fb7db..0ff2065 100644
--- a/src/lib/emotion/emotion_modules.h
+++ b/src/lib/emotion/emotion_modules.h
@@ -3,6 +3,32 @@
 
 #include "Emotion.h"
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EMOTION_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EMOTION_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
 #define META_TRACK_TITLE 1
 #define META_TRACK_ARTIST 2
 #define META_TRACK_GENRE 3

-- 




[EGIT] [core/efl] master 03/03: eina - start a much improved eina dbug infra and have eina_log use it

2015-05-07 Thread Carsten Haitzler
raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=664708b817ab0cdc7177df3743b5d9c9ab7dd2b0

commit 664708b817ab0cdc7177df3743b5d9c9ab7dd2b0
Author: Carsten Haitzler (Rasterman) 
Date:   Tue May 5 11:35:16 2015 +0900

eina - start a much improved eina dbug infra and have eina_log use it

this makes eina_log give bt's for all error logs. this is very useful
in finding just where a problem happens. the problem int he past is
that these have not been too useful due to backtrace_symbols() being
"useless". thus use the eina_btlog tool i added too.

also started infra for a debug monitor that can use the backtrace
infra to collect runtime stats ANY TIME for a process (don't need to
run under a debugger).

@feat
---
 configure.ac  |   8 +-
 src/Makefile_Efl.am   |  17 ++
 src/Makefile_Eina.am  |  25 ++-
 src/bin/efl/.gitignore|   2 +
 src/bin/efl/efl_debug.c   | 179 +
 src/bin/efl/efl_debugd.c  | 219 ++
 src/bin/eina/.gitignore   |   1 +
 src/bin/eina/eina_btlog.c | 198 +++
 src/lib/eina/eina_debug.c |  69 
 src/lib/eina/eina_debug.h |  86 ++
 src/lib/eina/eina_debug_bt.c  |  31 
 src/lib/eina/eina_debug_bt_file.c | 145 +
 src/lib/eina/eina_debug_chunk.c   | 228 +++
 src/lib/eina/eina_debug_monitor.c | 320 ++
 src/lib/eina/eina_debug_proto.c   |  19 +++
 src/lib/eina/eina_debug_thread.c  |  80 ++
 src/lib/eina/eina_log.c   |  32 ++--
 src/lib/eina/eina_main.c  |   2 +
 src/lib/eina/eina_thread.c|  11 +-
 19 files changed, 1648 insertions(+), 24 deletions(-)

diff --git a/configure.ac b/configure.ac
index 63cc54d..ab76615 100644
--- a/configure.ac
+++ b/configure.ac
@@ -849,6 +849,12 @@ case "${build_profile}" in
  ;;
 esac
 
+PKG_CHECK_MODULES(UNWIND, [libunwind libunwind-generic],
+  [have_unwind=yes], [have_unwind=no])
+AS_IF([test "x$have_unwind" = "xyes"],
+  [AC_DEFINE([HAVE_UNWIND], [1], [Have libunwind])])
+AM_CONDITIONAL(HAVE_UNWIND, test "x$have_unwind" = "xyes")
+
 EINA_CONFIG([HAVE_ALLOCA_H], [test "x${ac_cv_working_alloca_h}" = "xyes"])
 EINA_CONFIG([SAFETY_CHECKS], [test "x${have_safety_checks}" = "xyes"])
 EINA_CONFIG([DEFAULT_MEMPOOL], [test "x${want_default_mempool}" = "xyes"])
@@ -4801,7 +4807,7 @@ echo "  Cryptography..: ${build_crypto}"
 echo "  X11...: ${with_x11}"
 echo "  OpenGL: ${with_opengl}"
 echo "  C++11.: ${have_cxx11}"
-echo "Eina: yes (${features_eina})"
+echo "Eina: yes (${features_eina} unwind=$have_unwind)"
 echo "Eo..: yes (${features_eo})"
 echo "Eolian..: yes (${features_eolian})"
 echo "Emile...: yes (${features_emile})"
diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am
index cf6310a..b80a46c 100644
--- a/src/Makefile_Efl.am
+++ b/src/Makefile_Efl.am
@@ -67,3 +67,20 @@ installed_eflluadir = $(datadir)/elua/modules/efl
 nodist_installed_efllua_DATA = $(generated_efl_lua_all)
 
 endif
+
+### Binary
+
+bin_PROGRAMS += \
+bin/efl/efl_debugd \
+bin/efl/efl_debug
+
+bin_efl_efl_debugd_SOURCES = bin/efl/efl_debugd.c
+bin_efl_efl_debugd_CPPFLAGS = -I$(top_builddir)/src/bin/efl @EINA_CFLAGS@ 
@ECORE_CFLAGS@ @ECORE_CON_CFLAGS@
+bin_efl_efl_debugd_LDADD = @USE_EINA_INTERNAL_LIBS@ @USE_ECORE_INTERNAL_LIBS@ 
@USE_ECORE_CON_INTERNAL_LIBS@
+bin_efl_efl_debugd_DEPENDENCIES = @USE_EINA_INTERNAL_LIBS@ 
@USE_ECORE_INTERNAL_LIBS@ @USE_ECORE_CON_INTERNAL_LIBS@
+
+bin_efl_efl_debug_SOURCES = bin/efl/efl_debug.c
+bin_efl_efl_debug_CPPFLAGS = -I$(top_builddir)/src/bin/efl @EINA_CFLAGS@ 
@ECORE_CFLAGS@ @ECORE_CON_CFLAGS@
+bin_efl_efl_debug_LDADD = @USE_EINA_INTERNAL_LIBS@ @USE_ECORE_INTERNAL_LIBS@ 
@USE_ECORE_CON_INTERNAL_LIBS@
+bin_efl_efl_debug_DEPENDENCIES = @USE_EINA_INTERNAL_LIBS@ 
@USE_ECORE_INTERNAL_LIBS@ @USE_ECORE_CON_INTERNAL_LIBS@
+
diff --git a/src/Makefile_Eina.am b/src/Makefile_Eina.am
index 3591b10..a92b758 100644
--- a/src/Makefile_Eina.am
+++ b/src/Makefile_Eina.am
@@ -101,6 +101,14 @@ lib/eina/eina_convert.c \
 lib/eina/eina_counter.c \
 lib/eina/eina_cow.c \
 lib/eina/eina_cpu.c \
+lib/eina/eina_debug.h \
+lib/eina/eina_debug.c \
+lib/eina/eina_debug_chunk.c \
+lib/eina/eina_debug_bt.c \
+lib/eina/eina_debug_bt_file.c \
+lib/eina/eina_debug_thread.c \
+lib/eina/eina_debug_monitor.c \
+lib/eina/eina_debug_proto.c \
 lib/eina/eina_error.c \
 lib/eina/eina_file_common.h \
 lib/eina/eina_file_common.c \
@@ -221,15 +229,30 @@ endif
 
 lib_eina_libeina_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
 @EINA_CFLAGS@ \
+@UNWIND_CFLAGS@ \
 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
 -DPACKAGE_DATA_DIR=\"$(datadir)/eina\" \
 @VALGRIND_CFLAGS@
 
-lib_eina_libeina_la_LIBADD = @EINA_L

[EGIT] [core/efl] master 02/03: ecore - ecore_pipe_wait timeout broken as it never adjusts while waiting

2015-05-07 Thread Carsten Haitzler
raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=38faeacee1a1aa10eabebb52edfaf91e2a2c158b

commit 38faeacee1a1aa10eabebb52edfaf91e2a2c158b
Author: Carsten Haitzler (Rasterman) 
Date:   Tue May 5 19:28:14 2015 +0900

ecore - ecore_pipe_wait timeout broken as it never adjusts while waiting

if select gets interrupted it just waits again from the start because
it uses loop time not "now" time. this is wrong and makes timeout
waits possibly hang if enough things interrupt select without reading
data. this fixes that.

@fix
---
 src/lib/ecore/ecore_pipe.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore/ecore_pipe.c b/src/lib/ecore/ecore_pipe.c
index 23b80d1..823f07d 100644
--- a/src/lib/ecore/ecore_pipe.c
+++ b/src/lib/ecore/ecore_pipe.c
@@ -438,7 +438,7 @@ _ecore_pipe_wait(Ecore_Pipe *p,
FD_SET(p->fd_read, &rset);
 
if (wait >= 0.0)
- end = ecore_loop_time_get() + wait;
+ end = ecore_time_get() + wait;
timeout = wait;
 
while (message_count > 0 && (timeout > 0.0 || wait <= 0.0))
@@ -493,7 +493,7 @@ _ecore_pipe_wait(Ecore_Pipe *p,
   }
 
 if (wait >= 0.0)
-  timeout = end - ecore_loop_time_get();
+  timeout = end - ecore_time_get();
  }
 
return total;

-- 




[EGIT] [core/enlightenment] master 01/01: Fix misspelling in e_client.h

2015-05-07 Thread Yomi
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=413463d2cd39209e141ba1e3fc6c42f7aa4beb2b

commit 413463d2cd39209e141ba1e3fc6c42f7aa4beb2b
Author: Yomi 
Date:   Thu May 7 19:01:04 2015 -0400

Fix misspelling in e_client.h

Summary: Fix misspelling in e_client.h

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2477
---
 src/bin/e_client.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_client.h b/src/bin/e_client.h
index 2144e0c..e9b7454 100644
--- a/src/bin/e_client.h
+++ b/src/bin/e_client.h
@@ -106,7 +106,7 @@ typedef enum _E_Fullscreen
 {
/* Resize window */
E_FULLSCREEN_RESIZE,
-   /* Change screen resoultion and resize window */
+   /* Change screen resolution and resize window */
E_FULLSCREEN_ZOOM
 } E_Fullscreen;
 

-- 




[EGIT] [core/enlightenment] master 01/01: Fix misspelling in e_randr2.c

2015-05-07 Thread Yomi
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=aa56794304d814dbac62d2d1e932fcf0033f9ee4

commit aa56794304d814dbac62d2d1e932fcf0033f9ee4
Author: Yomi 
Date:   Thu May 7 18:41:10 2015 -0400

Fix misspelling in e_randr2.c

Summary: Fix misspelling in e_randr2.c

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2476
---
 src/bin/e_randr2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_randr2.c b/src/bin/e_randr2.c
index ddf8c60..f5b17a5 100644
--- a/src/bin/e_randr2.c
+++ b/src/bin/e_randr2.c
@@ -535,7 +535,7 @@ _cb_screen_change_delay(void *data EINA_UNUSED)
   }
 printf("RRR: change = %i\n", change);
 // we plugged or unplugged some monitor - re-apply config so
-// known screens can be coonfigured
+// known screens can be configured
 if (change) e_randr2_config_apply();
  }
// update screen info after the above apply or due to external changes

-- 




[EGIT] [core/efl] master 09/19: ecore-drm: Add some debug code to spit out planes and plane properties

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0341d08831436faa6d280ec8b040654c417491a2

commit 0341d08831436faa6d280ec8b040654c417491a2
Author: Chris Michael 
Date:   Wed May 6 09:33:17 2015 -0400

ecore-drm: Add some debug code to spit out planes and plane properties

Summary: This adds a debug function to spit out planes and their
properties while debugging rotation support

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/ecore_drm_output.c | 124 +++
 1 file changed, 124 insertions(+)

diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index fbd2a2a..5a1f531 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -706,6 +706,123 @@ next:
  }
 }
 
+static void
+_ecore_drm_output_planes_get(Ecore_Drm_Device *dev)
+{
+   drmModePlaneRes *pres;
+   unsigned int i = 0, j = 0;
+   int k = 0;
+
+   pres = drmModeGetPlaneResources(dev->drm.fd);
+   if (!pres) return;
+
+   for (; i < pres->count_planes; i++)
+ {
+drmModePlane *plane;
+drmModeObjectPropertiesPtr props;
+int type = -1;
+
+plane = drmModeGetPlane(dev->drm.fd, pres->planes[i]);
+if (!plane) continue;
+
+props = drmModeObjectGetProperties(dev->drm.fd, plane->plane_id,
+   DRM_MODE_OBJECT_PLANE);
+if (!props) goto free_plane;
+
+DBG("Plane %u Properties:", plane->plane_id);
+
+for (j = 0; type == -1 && j < props->count_props; j++)
+  {
+ drmModePropertyPtr prop;
+
+ prop = drmModeGetProperty(dev->drm.fd, props->props[j]);
+ if (!prop) continue;
+
+ if (!strcmp(prop->name, "type"))
+   {
+  type = props->prop_values[j];
+  DBG("\tType: %d", type);
+  for (k = 0; k < prop->count_enums; k++)
+{
+   DBG("\t\t%s=%llu", prop->enums[k].name,
+   prop->enums[k].value);
+}
+   }
+
+ drmModeFreeProperty(prop);
+  }
+
+DBG("\tFormats:");
+for (j = 0; j < plane->count_formats; j++)
+  DBG("\t\t%4.4s", (char *)&plane->formats[j]);
+
+for (j = 0; j < props->count_props; j++ )
+  {
+ drmModePropertyPtr prop;
+
+ prop = drmModeGetProperty(dev->drm.fd, props->props[j]);
+ if (!prop) continue;
+
+ DBG("\tProperty Name: %s", prop->name);
+
+ if (prop->flags & DRM_MODE_PROP_RANGE)
+   {
+  DBG("\t\tRange Property");
+  for (k = 0; k < prop->count_values; k++)
+DBG("\t\t\t%"PRIu64, prop->values[k]);
+   }
+ if (prop->flags & DRM_MODE_PROP_ENUM)
+   {
+  DBG("\t\tEnum Property");
+  for (k = 0; k < prop->count_enums; k++)
+DBG("\t\t\t%s=%llu", prop->enums[k].name,
+prop->enums[k].value);
+   }
+ if (prop->flags & DRM_MODE_PROP_BITMASK)
+   {
+  DBG("\t\tBitmask Property");
+  for (k = 0; k < prop->count_enums; k++)
+DBG("\t\t\t%s=0x%llx", prop->enums[k].name,
+(1LL << prop->enums[k].value));
+   }
+
+ if (!strcmp(prop->name, "rotation"))
+   {
+  DBG("\t\tSupported Rotations:");
+  for (k = 0; k < prop->count_enums; k++)
+{
+   if (!strcmp(prop->enums[k].name, "rotate-0"))
+ DBG("\t\t\tRotate 0");
+   else if (!strcmp(prop->enums[k].name, "rotate-90"))
+ DBG("\t\t\tRotate 90");
+   else if (!strcmp(prop->enums[k].name, "rotate-180"))
+ DBG("\t\t\tRotate 180");
+   else if (!strcmp(prop->enums[k].name, "rotate-270"))
+ DBG("\t\t\tRotate 270");
+   else if (!strcmp(prop->enums[k].name, "reflect-x"))
+ DBG("\t\t\tReflect X");
+   else if (!strcmp(prop->enums[k].name, "reflect-y"))
+ DBG("\t\t\tReflect Y");
+   else
+ DBG("\t\t\t%s", prop->enums[k].name);
+}
+   }
+
+ drmModeFreeProperty(prop);
+  }
+
+DBG("\tCurrent Crtc: %d", plane->crtc_id);
+DBG("\tPossible Crtcs: 0x%08x", plane->possible_crtcs);
+
+drmModeFreeObjectProperties(props);
+
+free_plane:
+drmModeFreePlane(plane);
+ }
+
+   drmModeFreePlaneResources(pres);
+}
+
 /* public functions */
 
 /**
@@ -752,6 +869,12 @@ ecore_drm_

[EGIT] [core/efl] master 12/19: ecore-drm: Set drm client capabilities to support universal planes

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c79922f392d01102cd6a9eb9db58565d149b3134

commit c79922f392d01102cd6a9eb9db58565d149b3134
Author: Chris Michael 
Date:   Wed May 6 11:31:57 2015 -0400

ecore-drm: Set drm client capabilities to support universal planes

Summary: If we do not set client capabilities to support universal
planes, then libdrm does not expose the primary or cursor planes so
this adds a quick call to set DRM_CLIENT_CAP_UNIVERSAL_PLANES

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/ecore_drm_device.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/lib/ecore_drm/ecore_drm_device.c 
b/src/lib/ecore_drm/ecore_drm_device.c
index bc28205..81636c6 100644
--- a/src/lib/ecore_drm/ecore_drm_device.c
+++ b/src/lib/ecore_drm/ecore_drm_device.c
@@ -281,6 +281,10 @@ ecore_drm_device_open(Ecore_Drm_Device *dev)
 
DBG("Opened Device %s : %d", dev->drm.name, dev->drm.fd);
 
+   /* set client capabilities to 'universal planes' so drm core will expose
+* the full universal plane list (including primary & cursor planes) */
+   drmSetClientCap(dev->drm.fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
+
if (!drmGetCap(dev->drm.fd, DRM_CAP_TIMESTAMP_MONOTONIC, &caps))
  {
 if (caps == 1)

-- 




[EGIT] [core/efl] master 15/19: ecore-drm: Add API function to get an output's crtc size

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=49de7d0ee8180de6d8d0692cbf718f11f874e5ef

commit 49de7d0ee8180de6d8d0692cbf718f11f874e5ef
Author: Chris Michael 
Date:   Wed May 6 13:19:08 2015 -0400

ecore-drm: Add API function to get an output's crtc size

Summary: This adds a new API function to return an output's crtc size.
This is mainly used for drm RandR config in E

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h| 12 
 src/lib/ecore_drm/ecore_drm_output.c | 12 
 2 files changed, 24 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index fcf784b..0003ef5 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -868,6 +868,18 @@ EAPI Eina_List 
*ecore_drm_output_modes_get(Ecore_Drm_Output *output);
  */
 EAPI Ecore_Drm_Output *ecore_drm_output_primary_get(Ecore_Drm_Device *dev);
 
+/**
+ * Get the size of the crtc for a given output
+ *
+ * @param output The Ecore_Drm_Output to get the crtc size of
+ * @param *width The parameter in which width is stored
+ * @param *height The parameter in which height is stored
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI void ecore_drm_output_crtc_size_get(Ecore_Drm_Output *output, int *width, 
int *height);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index d9283f1..8b4369e 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -1263,3 +1263,15 @@ ecore_drm_output_primary_get(Ecore_Drm_Device *dev)
 
return NULL;
 }
+
+EAPI void
+ecore_drm_output_crtc_size_get(Ecore_Drm_Output *output, int *width, int 
*height)
+{
+   if (width) *width = 0;
+   if (height) *height = 0;
+
+   EINA_SAFETY_ON_NULL_RETURN(output);
+
+   if (width) *width = output->crtc->width;
+   if (height) *height = output->crtc->height;
+}

-- 




[EGIT] [core/efl] master 10/19: ecore-drm: Set output connected property in the creation function

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e8754ee9d2c68f616eb7e5e9e9a79488c6e70336

commit e8754ee9d2c68f616eb7e5e9e9a79488c6e70336
Author: Chris Michael 
Date:   Wed May 6 09:41:03 2015 -0400

ecore-drm: Set output connected property in the creation function

Summary: Makes more sense to set the output's connected property
inside the function which creates outputs.

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/ecore_drm_output.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index 5a1f531..2e91909 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -422,6 +422,7 @@ _ecore_drm_output_create(Ecore_Drm_Device *dev, drmModeRes 
*res, drmModeConnecto
output->model = eina_stringshare_add("UNKNOWN");
output->name = eina_stringshare_add("UNKNOWN");
 
+   output->connected = (conn->connection == DRM_MODE_CONNECTED);
output->conn_type = conn->connector_type;
if (conn->connector_type < ALEN(conn_types))
  type = conn_types[conn->connector_type];
@@ -888,8 +889,6 @@ ecore_drm_outputs_create(Ecore_Drm_Device *dev)
   _ecore_drm_output_create(dev, res, conn, x, y, EINA_FALSE)))
   goto next;
 
-output->connected = (conn->connection == DRM_MODE_CONNECTED);
-
 x += output->current_mode->width;
 
 next:

-- 




[EGIT] [core/efl] master 13/19: ecore-drm: Add support for a Primary Output

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=94adf30b93e7a1bc2f7d77ea98beddc81bffdd06

commit 94adf30b93e7a1bc2f7d77ea98beddc81bffdd06
Author: Chris Michael 
Date:   Wed May 6 12:15:56 2015 -0400

ecore-drm: Add support for a Primary Output

Summary: As 'primary' output support is not implemented in hardware,
we need to support this feature via software. For now, the first
output returned via libdrm will be marked as 'primary' until user
changes it via config

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/ecore_drm_output.c  | 8 
 src/lib/ecore_drm/ecore_drm_private.h | 1 +
 2 files changed, 9 insertions(+)

diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index 32249cb..9ce8641 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -507,6 +507,13 @@ _ecore_drm_output_create(Ecore_Drm_Device *dev, drmModeRes 
*res, drmModeConnecto
 
dev->outputs = eina_list_append(dev->outputs, output);
 
+   /* NB: 'primary' output property is not supported in HW, so we need to
+* implement it via software. As such, the First output which gets
+* listed via libdrm will be assigned 'primary' until user changes
+* it via config */
+   if (eina_list_count(dev->outputs) == 1)
+ output->primary = EINA_TRUE;
+
DBG("Created New Output At %d,%d", output->x, output->y);
DBG("\tCrtc Pos: %d %d", output->crtc->x, output->crtc->y);
DBG("\tCrtc: %d", output->crtc_id);
@@ -515,6 +522,7 @@ _ecore_drm_output_create(Ecore_Drm_Device *dev, drmModeRes 
*res, drmModeConnecto
DBG("\tModel: %s", output->model);
DBG("\tName: %s", output->name);
DBG("\tCloned: %d", output->cloned);
+   DBG("\tPrimary: %d", output->primary);
 
EINA_LIST_FOREACH(output->modes, l, mode)
  {
diff --git a/src/lib/ecore_drm/ecore_drm_private.h 
b/src/lib/ecore_drm/ecore_drm_private.h
index 8a2ca3c..063ac06 100644
--- a/src/lib/ecore_drm/ecore_drm_private.h
+++ b/src/lib/ecore_drm/ecore_drm_private.h
@@ -135,6 +135,7 @@ struct _Ecore_Drm_Output
 
Ecore_Drm_Backlight *backlight;   
 
+   Eina_Bool primary : 1;
Eina_Bool connected : 1;
Eina_Bool enabled : 1;
Eina_Bool cloned : 1;

-- 




[EGIT] [core/efl] master 06/19: ecore-drm: Add API function to return if a given output has a backlight

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=130ad6d60fa7e67c50db7aeffa3fab37b92de404

commit 130ad6d60fa7e67c50db7aeffa3fab37b92de404
Author: Chris Michael 
Date:   Mon May 4 14:41:18 2015 -0400

ecore-drm: Add API function to return if a given output has a backlight

Summary: This adds a new API function to call so we can check if a
given Ecore_Drm_Output has a backlight

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h| 12 
 src/lib/ecore_drm/ecore_drm_output.c |  7 +++
 2 files changed, 19 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index 319d007..d0a2c36 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -812,6 +812,18 @@ EAPI Eina_Bool 
ecore_drm_output_connected_get(Ecore_Drm_Output *output);
  */
 EAPI unsigned int ecore_drm_output_connector_type_get(Ecore_Drm_Output 
*output);
 
+/**
+ * Get if a given output has a backlight
+ *
+ * @param output The Ecore_Drm_Output to get the backlight of
+ *
+ * @return EINA_TRUE if this output has a backlight, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI Eina_Bool ecore_drm_output_backlight_get(Ecore_Drm_Output *output);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index 78882d6..3ffc131 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -1118,3 +1118,10 @@ ecore_drm_output_connector_type_get(Ecore_Drm_Output 
*output)
 
return output->conn_type;
 }
+
+EAPI Eina_Bool
+ecore_drm_output_backlight_get(Ecore_Drm_Output *output)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
+   return (output->backlight != NULL);
+}

-- 




[EGIT] [core/efl] master 14/19: ecore-drm: Add API function to return primary output

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8120cdcc1369acb0b1f69d8995e9843a4656511c

commit 8120cdcc1369acb0b1f69d8995e9843a4656511c
Author: Chris Michael 
Date:   Wed May 6 12:22:15 2015 -0400

ecore-drm: Add API function to return primary output

Summary: This adds a new API function to return the output which is
marked as the primary output.

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h| 12 
 src/lib/ecore_drm/ecore_drm_output.c | 14 ++
 2 files changed, 26 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index 2177b3f..fcf784b 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -856,6 +856,18 @@ EAPI char *ecore_drm_output_edid_get(Ecore_Drm_Output 
*output);
  */
 EAPI Eina_List *ecore_drm_output_modes_get(Ecore_Drm_Output *output);
 
+/**
+ * Get the output which is marked as primary
+ *
+ * @param dev The Ecore_Drm_Device to get the primary output from
+ *
+ * @return The primary Ecore_Drm_Output or NULL if no primary output is set
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI Ecore_Drm_Output *ecore_drm_output_primary_get(Ecore_Drm_Device *dev);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index 9ce8641..d9283f1 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -1249,3 +1249,17 @@ ecore_drm_output_modes_get(Ecore_Drm_Output *output)
 
return output->modes;
 }
+
+EAPI Ecore_Drm_Output *
+ecore_drm_output_primary_get(Ecore_Drm_Device *dev)
+{
+   Ecore_Drm_Output *ret;
+   const Eina_List *l;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(dev, NULL);
+
+   EINA_LIST_FOREACH(dev->outputs, l, ret)
+ if (ret->primary) return ret;
+
+   return NULL;
+}

-- 




[EGIT] [core/efl] master 17/19: ecore-drm: Add API function to find an output given a name

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2145cb18c296b4269d52b57c000a9495ce8b71e1

commit 2145cb18c296b4269d52b57c000a9495ce8b71e1
Author: Chris Michael 
Date:   Thu May 7 11:31:46 2015 -0400

ecore-drm: Add API function to find an output given a name

Summary: This adds a new API function to find an Ecore_Drm_Output
which matches a given name.

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h| 16 
 src/lib/ecore_drm/ecore_drm_device.c | 16 
 2 files changed, 32 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index d0e97b5..ad2ae4a 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -880,6 +880,22 @@ EAPI Ecore_Drm_Output 
*ecore_drm_output_primary_get(Ecore_Drm_Device *dev);
  */
 EAPI void ecore_drm_output_crtc_size_get(Ecore_Drm_Output *output, int *width, 
int *height);
 
+/**
+ * Find an Ecore_Drm_Output which has the given name
+ *
+ * This function will loop all the existing outputs in Ecore_Drm_Device and 
+ * return an output if one exists that matches the given name.
+ *
+ * @param dev The Ecore_Drm_Device to search
+ * @param name The Ecore_Drm_Output matching this name
+ *
+ * @return An Ecore_Drm_Output if one exists at these coordinates or NULL
+ *
+ * @ingroup Ecore_Drm_Device_Group
+ * @since 1.15
+ */
+EAPI Ecore_Drm_Output *ecore_drm_device_output_name_find(Ecore_Drm_Device 
*dev, const char *name);
+
 # ifdef __cplusplus
 }
 # endif
diff --git a/src/lib/ecore_drm/ecore_drm_device.c 
b/src/lib/ecore_drm/ecore_drm_device.c
index 81636c6..2a29b0e 100644
--- a/src/lib/ecore_drm/ecore_drm_device.c
+++ b/src/lib/ecore_drm/ecore_drm_device.c
@@ -545,3 +545,19 @@ ecore_drm_screen_size_range_get(Ecore_Drm_Device *dev, int 
*minw, int *minh, int
if (maxw) *maxw = dev->max_width;
if (maxh) *maxh = dev->max_height;
 }
+
+EAPI Ecore_Drm_Output *
+ecore_drm_device_output_name_find(Ecore_Drm_Device *dev, const char *name)
+{
+   Ecore_Drm_Output *output;
+   Eina_List *l;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(dev, NULL);
+   EINA_SAFETY_ON_TRUE_RETURN_VAL(name, NULL);
+
+   EINA_LIST_FOREACH(dev->outputs, l, output)
+ if ((output->name) && (!strcmp(name, output->name)))
+   return output;
+
+   return NULL;
+}

-- 




[EGIT] [core/efl] master 19/19: Merge branch 'devs/devilhorns/ecore_drm'

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ba58920fbef048d9e8082f004909efc0ffcd7b60

commit ba58920fbef048d9e8082f004909efc0ffcd7b60
Merge: d48c5ac 958b15c
Author: Chris Michael 
Date:   Thu May 7 15:40:38 2015 -0400

Merge branch 'devs/devilhorns/ecore_drm'

Summary: Merge new 1.15 API functions for ecore_drm which will be used
in the E RandR config dialog.

NB: This is basically a set of API functions that are needed for
working with the new e_randr2 codebase in E. This makes the dialog
'usable' in E, however there is no API yet for "applying" those
settings changes. That will come shortly.

@feature

 src/lib/ecore_drm/Ecore_Drm.h | 161 +--
 src/lib/ecore_drm/ecore_drm_device.c  |  31 ++
 src/lib/ecore_drm/ecore_drm_output.c  | 202 +-
 src/lib/ecore_drm/ecore_drm_private.h |  13 +--
 4 files changed, 390 insertions(+), 17 deletions(-)

-- 




[EGIT] [core/efl] master 16/19: ecore-drm: Fix formatting

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=03a242f263fecc7178928aa7bdb989335495b6a3

commit 03a242f263fecc7178928aa7bdb989335495b6a3
Author: Chris Michael 
Date:   Thu May 7 09:24:15 2015 -0400

ecore-drm: Fix formatting

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index 0003ef5..d0e97b5 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -29,9 +29,9 @@
 #  endif // ifdef __GNUC__
 # endif // ifdef _MSC_VER
 
-#ifdef __cplusplus
+# ifdef __cplusplus
 extern "C" {
-#endif
+# endif
 
 typedef enum _Ecore_Drm_Evdev_Capabilities
 {
@@ -880,11 +880,11 @@ EAPI Ecore_Drm_Output 
*ecore_drm_output_primary_get(Ecore_Drm_Device *dev);
  */
 EAPI void ecore_drm_output_crtc_size_get(Ecore_Drm_Output *output, int *width, 
int *height);
 
-#ifdef __cplusplus
+# ifdef __cplusplus
 }
-#endif
+# endif
 
-#undef EAPI
-#define EAPI
+# undef EAPI
+# define EAPI
 
 #endif

-- 




[EGIT] [core/efl] master 18/19: ecore-drm: Add new API function to mark an output as primary

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=958b15c2077214b3349e9102dd486bc5bef929d7

commit 958b15c2077214b3349e9102dd486bc5bef929d7
Author: Chris Michael 
Date:   Thu May 7 11:37:54 2015 -0400

ecore-drm: Add new API function to mark an output as primary

Summary: This adds a new API function which we can use to mark a given
Ecore_Drm_Output as being the primary output.

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h| 10 ++
 src/lib/ecore_drm/ecore_drm_device.c |  2 +-
 src/lib/ecore_drm/ecore_drm_output.c | 16 
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index ad2ae4a..481da42 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -869,6 +869,16 @@ EAPI Eina_List 
*ecore_drm_output_modes_get(Ecore_Drm_Output *output);
 EAPI Ecore_Drm_Output *ecore_drm_output_primary_get(Ecore_Drm_Device *dev);
 
 /**
+ * Set a given output as primary
+ *
+ * @param output The Ecore_Drm_Output to set as primary
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI void ecore_drm_output_primary_set(Ecore_Drm_Output *output);
+
+/**
  * Get the size of the crtc for a given output
  *
  * @param output The Ecore_Drm_Output to get the crtc size of
diff --git a/src/lib/ecore_drm/ecore_drm_device.c 
b/src/lib/ecore_drm/ecore_drm_device.c
index 2a29b0e..b902c19 100644
--- a/src/lib/ecore_drm/ecore_drm_device.c
+++ b/src/lib/ecore_drm/ecore_drm_device.c
@@ -553,7 +553,7 @@ ecore_drm_device_output_name_find(Ecore_Drm_Device *dev, 
const char *name)
Eina_List *l;
 
EINA_SAFETY_ON_NULL_RETURN_VAL(dev, NULL);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(name, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
 
EINA_LIST_FOREACH(dev->outputs, l, output)
  if ((output->name) && (!strcmp(name, output->name)))
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index 8b4369e..2596538 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -1265,6 +1265,22 @@ ecore_drm_output_primary_get(Ecore_Drm_Device *dev)
 }
 
 EAPI void
+ecore_drm_output_primary_set(Ecore_Drm_Output *output)
+{
+   const Eina_List *l;
+   Ecore_Drm_Output *out;
+
+   EINA_SAFETY_ON_NULL_RETURN(output);
+
+   /* unmark all outputs as primary */
+   EINA_LIST_FOREACH(output->dev->outputs, l, out)
+ out->primary = EINA_FALSE;
+
+   /* mark this output as primary */
+   output->primary = EINA_TRUE;
+}
+
+EAPI void
 ecore_drm_output_crtc_size_get(Ecore_Drm_Output *output, int *width, int 
*height)
 {
if (width) *width = 0;

-- 




[EGIT] [core/efl] master 11/19: ecore-drm: Cleanup plane debug output

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7df68b484b2cdfc8bcfa3c6d11c692867dc08cbc

commit 7df68b484b2cdfc8bcfa3c6d11c692867dc08cbc
Author: Chris Michael 
Date:   Wed May 6 11:31:25 2015 -0400

ecore-drm: Cleanup plane debug output

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/ecore_drm_output.c | 32 ++--
 1 file changed, 2 insertions(+), 30 deletions(-)

diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index 2e91909..32249cb 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -740,15 +740,7 @@ _ecore_drm_output_planes_get(Ecore_Drm_Device *dev)
  if (!prop) continue;
 
  if (!strcmp(prop->name, "type"))
-   {
-  type = props->prop_values[j];
-  DBG("\tType: %d", type);
-  for (k = 0; k < prop->count_enums; k++)
-{
-   DBG("\t\t%s=%llu", prop->enums[k].name,
-   prop->enums[k].value);
-}
-   }
+   type = props->prop_values[j];
 
  drmModeFreeProperty(prop);
   }
@@ -787,27 +779,7 @@ _ecore_drm_output_planes_get(Ecore_Drm_Device *dev)
 (1LL << prop->enums[k].value));
}
 
- if (!strcmp(prop->name, "rotation"))
-   {
-  DBG("\t\tSupported Rotations:");
-  for (k = 0; k < prop->count_enums; k++)
-{
-   if (!strcmp(prop->enums[k].name, "rotate-0"))
- DBG("\t\t\tRotate 0");
-   else if (!strcmp(prop->enums[k].name, "rotate-90"))
- DBG("\t\t\tRotate 90");
-   else if (!strcmp(prop->enums[k].name, "rotate-180"))
- DBG("\t\t\tRotate 180");
-   else if (!strcmp(prop->enums[k].name, "rotate-270"))
- DBG("\t\t\tRotate 270");
-   else if (!strcmp(prop->enums[k].name, "reflect-x"))
- DBG("\t\t\tReflect X");
-   else if (!strcmp(prop->enums[k].name, "reflect-y"))
- DBG("\t\t\tReflect Y");
-   else
- DBG("\t\t\t%s", prop->enums[k].name);
-}
-   }
+ DBG("\t\tValue: %"PRIu64, props->prop_values[j]);
 
  drmModeFreeProperty(prop);
   }

-- 




[EGIT] [core/enlightenment] master 01/02: make e_acpi_lid_is_closed function callable from wl_drm module

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=8039ecb9b7e2616bb294ec7ea5f660d73cfea0e8

commit 8039ecb9b7e2616bb294ec7ea5f660d73cfea0e8
Author: Chris Michael 
Date:   Thu May 7 15:44:22 2015 -0400

make e_acpi_lid_is_closed function callable from wl_drm module

Signed-off-by: Chris Michael 
---
 src/bin/e_acpi.c | 2 +-
 src/bin/e_acpi.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_acpi.c b/src/bin/e_acpi.c
index ef67151..0429a46 100644
--- a/src/bin/e_acpi.c
+++ b/src/bin/e_acpi.c
@@ -192,7 +192,7 @@ e_acpi_lid_status_get(void)
return E_ACPI_LID_UNKNOWN;
 }
 
-EINTERN Eina_Bool
+EAPI Eina_Bool
 e_acpi_lid_is_closed(void)
 {
if (lid_is_closed == -1)
diff --git a/src/bin/e_acpi.h b/src/bin/e_acpi.h
index edf42d3..9dac1e8 100644
--- a/src/bin/e_acpi.h
+++ b/src/bin/e_acpi.h
@@ -72,7 +72,7 @@ EINTERN int e_acpi_init(void);
 EINTERN int e_acpi_shutdown(void);
 
 EINTERN E_Acpi_Lid_Status e_acpi_lid_status_get(void);
-EINTERN Eina_Bool e_acpi_lid_is_closed(void);
+E_API Eina_Bool e_acpi_lid_is_closed(void);
 E_API void e_acpi_events_freeze(void);
 E_API void e_acpi_events_thaw(void);
 

-- 




[EGIT] [core/efl] master 01/19: ecore-drm: Add API function to return screen size range

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=29362040b2a01e731d0dd7e3f52300a1d5ad8836

commit 29362040b2a01e731d0dd7e3f52300a1d5ad8836
Author: Chris Michael 
Date:   Mon May 4 13:25:15 2015 -0400

ecore-drm: Add API function to return screen size range

Summary: This adds new API function to return the min & max width &
height of valid screen range for an Ecore_Drm_Device

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h| 14 ++
 src/lib/ecore_drm/ecore_drm_device.c | 11 +++
 2 files changed, 25 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index feb48f8..157d0b8 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -761,6 +761,20 @@ EAPI void ecore_drm_device_pointer_xy_get(Ecore_Drm_Device 
*dev, int *x, int *y)
  */
 EAPI const Eina_List *ecore_drm_devices_get(void);
 
+/**
+ * Get the minimum and maximum screen size range
+ *
+ * @param dev The Ecore_Drm_Device to get screen size range from
+ * @param *minw The parameter in which smallest width is stored
+ * @param *minh The parameter in which smallest height is stored
+ * @param *maxw The parameter in which largest width is stored
+ * @param *maxh The parameter in which largest height is stored
+ *
+ * @ingroup Ecore_Drm_Device_Group
+ * @since 1.15
+ */
+EAPI void ecore_drm_screen_size_range_get(Ecore_Drm_Device *dev, int *minw, 
int *minh, int *maxw, int *maxh);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore_drm/ecore_drm_device.c 
b/src/lib/ecore_drm/ecore_drm_device.c
index 2646483..bc28205 100644
--- a/src/lib/ecore_drm/ecore_drm_device.c
+++ b/src/lib/ecore_drm/ecore_drm_device.c
@@ -530,3 +530,14 @@ ecore_drm_device_output_find(Ecore_Drm_Device *dev, int x, 
int y)
 
return NULL;
 }
+
+EAPI void
+ecore_drm_screen_size_range_get(Ecore_Drm_Device *dev, int *minw, int *minh, 
int *maxw, int *maxh)
+{
+   EINA_SAFETY_ON_NULL_RETURN(dev);
+
+   if (minw) *minw = dev->min_width;
+   if (minh) *minh = dev->min_height;
+   if (maxw) *maxw = dev->max_width;
+   if (maxh) *maxh = dev->max_height;
+}

-- 




[EGIT] [core/enlightenment] master 02/02: wl-drm: Start on making the RandR config dialog usable in drm

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=6d2c8c46dabf0952a7ce6cb98112f140fc62de6d

commit 6d2c8c46dabf0952a7ce6cb98112f140fc62de6d
Author: Chris Michael 
Date:   Thu May 7 15:44:50 2015 -0400

wl-drm: Start on making the RandR config dialog usable in drm

NB: 'Apply' does not function yet, needs another API or 2 in ecore_drm

Signed-off-by: Chris Michael 
---
 src/modules/wl_drm/e_mod_main.c | 381 ++--
 1 file changed, 250 insertions(+), 131 deletions(-)

diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index 9779dd9..0bf5186 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -87,175 +87,185 @@ _e_mod_drm_cb_ee_resize(Ecore_Evas *ee EINA_UNUSED)
e_comp_canvas_update();
 }
 
-static E_Randr2_Mode *
-_mode_get(drmModeModeInfo *info)
+static Ecore_Drm_Output_Mode *
+_e_mod_drm_mode_screen_find(E_Randr2_Screen *s, Ecore_Drm_Output *output)
 {
-   E_Randr2_Mode *mode;
-   uint64_t refresh;
-
-   mode = malloc(sizeof(E_Randr2_Mode));
-
-   mode->w = info->hdisplay;
-   mode->h = info->vdisplay;
-
-   refresh = (info->clock * 100LL / info->htotal + info->vtotal / 2) / 
info->vtotal;
-   if (info->flags & DRM_MODE_FLAG_INTERLACE)
- refresh *= 2;
-   if (info->flags & DRM_MODE_FLAG_DBLSCAN)
- refresh /= 2;
-   if (info->vscan > 1)
- refresh /= info->vscan;
-
-   mode->refresh = refresh;
-   mode->preferred = (info->type & DRM_MODE_TYPE_PREFERRED);
-
-   return mode;
-}
-
-static char *
-_get_edid(Ecore_Drm_Device *dev, drmModeConnector *conn)
-{
-   int i;
-   drmModePropertyBlobPtr blob = NULL;
-   drmModePropertyPtr prop;
-   char *ret;
+   Ecore_Drm_Output_Mode *mode, *m = NULL;
+   const Eina_List *l;
+   int diff, distance = 0x7fff;
 
-   for (i = 0; i < conn->count_props; i++)
+   EINA_LIST_FOREACH(ecore_drm_output_modes_get(output), l, mode)
  {
-if (!(prop = drmModeGetProperty(dev->drm.fd, conn->props[i])))
-  continue;
-if ((prop->flags & DRM_MODE_PROP_BLOB) &&
-(!strcmp(prop->name, "EDID")))
+diff = (100 * abs(s->config.mode.w - mode->width)) + 
+  (100 * abs(s->config.mode.h - mode->height)) + 
+  abs((100 * s->config.mode.refresh) - (100 * mode->refresh));
+if (diff < distance)
   {
- blob = drmModeGetPropertyBlob(dev->drm.fd,
-   conn->prop_values[i]);
- drmModeFreeProperty(prop);
- break;
+ m = mode;
+ distance = diff;
   }
-drmModeFreeProperty(prop);
- }
-   if (!blob) return NULL;
-   ret = (char*)eina_memdup(blob->data, blob->length, 1);
-   drmModeFreePropertyBlob(blob);
-   return ret;
-}
-
-static Eina_Bool
-_backlight_get(const char *devpath, uint32_t conn_type)
-{
-   Eina_List *devs, *l;
-   const char *device;
-   Eina_Bool found;
-
-   if (!(devs = eeze_udev_find_by_filter("backlight", NULL, devpath)))
- devs = eeze_udev_find_by_filter("leds", NULL, devpath);
-
-   if (!devs) return EINA_FALSE;
-
-   EINA_LIST_FOREACH(devs, l, device)
- {
-if ((conn_type == DRM_MODE_CONNECTOR_LVDS) ||
-(conn_type == DRM_MODE_CONNECTOR_eDP) ||
-eeze_udev_syspath_check_sysattr(device, "type", "raw"))
-  found = EINA_TRUE;
-if (found) break;
  }
 
-   E_FREE_LIST(devs, eina_stringshare_del);
-
-   return found;
+   return m;
 }
 
 static E_Randr2 *
 _drm_randr_create(void)
 {
Ecore_Drm_Device *dev;
-   const Eina_List *l;
-   E_Randr2 *r;
+   Ecore_Drm_Output *output;
+   const Eina_List *l, *ll;
+   E_Randr2 *r = NULL;
+   const char *conn_types[] =
+ {
+"None", "VGA", "DVI-I", "DVI-D", "DVI-A",
+"Composite", "S-Video", "LVDS", "Component", "DIN",
+"DisplayPort", "HDMI-A", "HDMI-B", "TV", "eDP", "Virtual",
+"DSI", "UNKNOWN"
+ };
+   E_Randr2_Connector rtype[] =
+ {
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_DVI,
+E_RANDR2_CONNECTOR_DVI,
+E_RANDR2_CONNECTOR_DVI,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_DISPLAY_PORT,
+E_RANDR2_CONNECTOR_HDMI_A,
+E_RANDR2_CONNECTOR_HDMI_B,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_DISPLAY_PORT,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_UNDEFINED,
+E_RANDR2_CONNECTOR_UNDEFINED,
+ };
+   unsigned int type;
+
+   printf("DRM RRR: . info get!\n");
 
r = E_NEW(E_Randr2, 1);
+   if (!r) return NULL;
+
EINA_LIST_FOREACH(ecore_drm_devices_get(), l, dev)
  {
-drmModeRes *res;
-int o;
-
-res = 

[EGIT] [core/efl] master 07/19: ecore-drm: Add API function to return the edid of a given output

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=34664306a99100cdcebcba9b163d2d28ee3d1350

commit 34664306a99100cdcebcba9b163d2d28ee3d1350
Author: Chris Michael 
Date:   Mon May 4 15:03:47 2015 -0400

ecore-drm: Add API function to return the edid of a given output

Summary: This adds a new API function to return the EDID string of a
given output.

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h | 12 
 src/lib/ecore_drm/ecore_drm_output.c  | 12 
 src/lib/ecore_drm/ecore_drm_private.h |  2 ++
 3 files changed, 26 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index d0a2c36..e2b79a0 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -824,6 +824,18 @@ EAPI unsigned int 
ecore_drm_output_connector_type_get(Ecore_Drm_Output *output);
  */
 EAPI Eina_Bool ecore_drm_output_backlight_get(Ecore_Drm_Output *output);
 
+/**
+ * Get the edid of a given output
+ *
+ * @param output The Ecore_Drm_Output to get the backlight of
+ *
+ * @return A string representing the edid
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI char *ecore_drm_output_edid_get(Ecore_Drm_Output *output);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index 3ffc131..b6c44cc 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -160,10 +160,13 @@ _ecore_drm_output_edid_find(Ecore_Drm_Output *output, 
drmModeConnector *conn)
conn->prop_values[i]);
   }
 drmModeFreeProperty(prop);
+if (blob) break;
  }
 
if (!blob) return;
 
+   output->edid_blob = (char *)eina_memdup(blob->data, blob->length, 1);
+
ret = _ecore_drm_output_edid_parse(output, blob->data, blob->length);
if (!ret)
  {
@@ -1125,3 +1128,12 @@ ecore_drm_output_backlight_get(Ecore_Drm_Output *output)
EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
return (output->backlight != NULL);
 }
+
+EAPI char *
+ecore_drm_output_edid_get(Ecore_Drm_Output *output)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output->edid_blob, NULL);
+
+   return strdup(output->edid_blob);
+}
diff --git a/src/lib/ecore_drm/ecore_drm_private.h 
b/src/lib/ecore_drm/ecore_drm_private.h
index 9339a2a..3bacef2 100644
--- a/src/lib/ecore_drm/ecore_drm_private.h
+++ b/src/lib/ecore_drm/ecore_drm_private.h
@@ -131,6 +131,8 @@ struct _Ecore_Drm_Output
Ecore_Drm_Output_Mode *current_mode;
Eina_List *modes;
 
+   char *edid_blob;
+
struct
  {
 char eisa[13];

-- 




[EGIT] [core/efl] master 05/19: ecore-drm: Add API function to return the connector type of a given output

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4d2290847fa921e3cb42a9fe45c1978c7c2d9eef

commit 4d2290847fa921e3cb42a9fe45c1978c7c2d9eef
Author: Chris Michael 
Date:   Mon May 4 14:26:47 2015 -0400

ecore-drm: Add API function to return the connector type of a given output

Summary: This adds a new API function to return the connector type of
an Ecore_Drm_Output

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h| 12 
 src/lib/ecore_drm/ecore_drm_output.c |  8 
 2 files changed, 20 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index e5c2972..319d007 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -800,6 +800,18 @@ EAPI void ecore_drm_screen_size_range_get(Ecore_Drm_Device 
*dev, int *minw, int
  */
 EAPI Eina_Bool ecore_drm_output_connected_get(Ecore_Drm_Output *output);
 
+/**
+ * Get the connector type of a given Ecore_Drm_Output
+ *
+ * @param output The Ecore_Drm_Output to get the connector type of
+ *
+ * @return An unsigned integer representing the type of connector for this 
output
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI unsigned int ecore_drm_output_connector_type_get(Ecore_Drm_Output 
*output);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index a767b31..78882d6 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -1110,3 +1110,11 @@ ecore_drm_output_connected_get(Ecore_Drm_Output *output)
 
return output->connected;
 }
+
+EAPI unsigned int
+ecore_drm_output_connector_type_get(Ecore_Drm_Output *output)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output, 0);
+
+   return output->conn_type;
+}

-- 




[EGIT] [core/efl] master 02/19: ecore-drm: Add API function to return the name of an output

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2606735b394b9cfbf14f46edfe413c76aa872d7b

commit 2606735b394b9cfbf14f46edfe413c76aa872d7b
Author: Chris Michael 
Date:   Mon May 4 14:06:31 2015 -0400

ecore-drm: Add API function to return the name of an output

Summary: This adds a new API function to turn the name of a given 
Ecore_Drm_Output.

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h| 13 +
 src/lib/ecore_drm/ecore_drm_output.c |  8 
 2 files changed, 21 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index 157d0b8..54e252e 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -709,6 +709,19 @@ EAPI Eina_Stringshare 
*ecore_drm_output_model_get(Ecore_Drm_Output *output);
 EAPI Eina_Stringshare *ecore_drm_output_make_get(Ecore_Drm_Output *output);
 
 /**
+ * Get the name of Ecore_Drm_Output
+ *
+ * This function will give the name of Ecore_Drm_Output
+ *
+ * @param output The Ecore_Drm_Output to get name for
+ * @return The name. Caller should free this return.
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI char *ecore_drm_output_name_get(Ecore_Drm_Output *output);
+
+/**
  * Set the dpms level of an Ecore_Drm_Output
  *
  * This function will set the DPMS level of an Ecore_Drm_Output
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index b564f10..614abea 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -1091,3 +1091,11 @@ ecore_drm_output_connector_id_get(Ecore_Drm_Output 
*output)
 
return output->conn_id;
 }
+
+EAPI char *
+ecore_drm_output_name_get(Ecore_Drm_Output *output)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output, NULL);
+
+   return strdup(output->name);
+}

-- 




[EGIT] [core/efl] master 04/19: ecore-drm: Add connector type to output structure

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3aee7d1b6faa1641bb045e0618920aaf8f286359

commit 3aee7d1b6faa1641bb045e0618920aaf8f286359
Author: Chris Michael 
Date:   Mon May 4 14:22:10 2015 -0400

ecore-drm: Add connector type to output structure

Summary: This adds a connector type field to the Output structure.
This will be used in the Enlightenment Drm rendering code for RandR
config

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/ecore_drm_output.c  | 1 +
 src/lib/ecore_drm/ecore_drm_private.h | 1 +
 2 files changed, 2 insertions(+)

diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index f04a890..a767b31 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -419,6 +419,7 @@ _ecore_drm_output_create(Ecore_Drm_Device *dev, drmModeRes 
*res, drmModeConnecto
output->model = eina_stringshare_add("UNKNOWN");
output->name = eina_stringshare_add("UNKNOWN");
 
+   output->conn_type = conn->connector_type;
if (conn->connector_type < ALEN(conn_types))
  type = conn_types[conn->connector_type];
else
diff --git a/src/lib/ecore_drm/ecore_drm_private.h 
b/src/lib/ecore_drm/ecore_drm_private.h
index c7b9c2f..9339a2a 100644
--- a/src/lib/ecore_drm/ecore_drm_private.h
+++ b/src/lib/ecore_drm/ecore_drm_private.h
@@ -117,6 +117,7 @@ struct _Ecore_Drm_Output
Ecore_Drm_Device *dev;
unsigned int crtc_id;
unsigned int conn_id;
+   unsigned int conn_type;
drmModeCrtcPtr crtc;
drmModePropertyPtr dpms;
 

-- 




[EGIT] [core/efl] master 08/19: ecore-drm: Add API function to return output modes

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1ab4975491f184f11b4c6407218669805a29894e

commit 1ab4975491f184f11b4c6407218669805a29894e
Author: Chris Michael 
Date:   Tue May 5 09:12:25 2015 -0400

ecore-drm: Add API function to return output modes

Summary: This adds a new API function to return a list of modes
supported on a given output

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h | 24 ++--
 src/lib/ecore_drm/ecore_drm_output.c  |  9 +
 src/lib/ecore_drm/ecore_drm_private.h |  8 
 3 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index e2b79a0..2177b3f 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -153,8 +153,14 @@ struct _Ecore_Drm_Event_Output
 /* opaque structure to represent a drm device */
 typedef struct _Ecore_Drm_Device Ecore_Drm_Device;
 
-/* opaque structure to represent a drm output mode */
-typedef struct _Ecore_Drm_Output_Mode Ecore_Drm_Output_Mode;
+/* structure to represent a drm output mode */
+typedef struct _Ecore_Drm_Output_Mode
+{
+   unsigned int flags;
+   int width, height;
+   unsigned int refresh;
+   drmModeModeInfo info;
+} Ecore_Drm_Output_Mode;
 
 /* opaque structure to represent a drm output */
 typedef struct _Ecore_Drm_Output Ecore_Drm_Output;
@@ -836,6 +842,20 @@ EAPI Eina_Bool 
ecore_drm_output_backlight_get(Ecore_Drm_Output *output);
  */
 EAPI char *ecore_drm_output_edid_get(Ecore_Drm_Output *output);
 
+/**
+ * Get a list of the modes supported on a given output
+ *
+ * @param output The Ecore_Drm_Output to get the modes for
+ *
+ * @return An Eina_List of the modes supported for this output
+ *
+ * @note The returned list should not be freed
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI Eina_List *ecore_drm_output_modes_get(Ecore_Drm_Output *output);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index b6c44cc..fbd2a2a 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -1137,3 +1137,12 @@ ecore_drm_output_edid_get(Ecore_Drm_Output *output)
 
return strdup(output->edid_blob);
 }
+
+EAPI Eina_List *
+ecore_drm_output_modes_get(Ecore_Drm_Output *output)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output->modes, NULL);
+
+   return output->modes;
+}
diff --git a/src/lib/ecore_drm/ecore_drm_private.h 
b/src/lib/ecore_drm/ecore_drm_private.h
index 3bacef2..8a2ca3c 100644
--- a/src/lib/ecore_drm/ecore_drm_private.h
+++ b/src/lib/ecore_drm/ecore_drm_private.h
@@ -87,14 +87,6 @@ typedef struct _Ecore_Drm_Pageflip_Callback
int count;
 } Ecore_Drm_Pageflip_Callback;
 
-struct _Ecore_Drm_Output_Mode
-{
-   unsigned int flags;
-   int width, height;
-   unsigned int refresh;
-   drmModeModeInfo info;
-};
-
 typedef enum _Ecore_Drm_Backlight_Type
 {
ECORE_DRM_BACKLIGHT_RAW,

-- 




[EGIT] [core/efl] master 03/19: ecore-drm: Add API function to return output connected state

2015-05-07 Thread Christopher Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c4461ac5d80508da2e542026d7578df2e7390b7b

commit c4461ac5d80508da2e542026d7578df2e7390b7b
Author: Chris Michael 
Date:   Mon May 4 14:13:21 2015 -0400

ecore-drm: Add API function to return output connected state

Summary: This adds a new API function to check if a given output is 
connected or not.

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm/Ecore_Drm.h | 12 
 src/lib/ecore_drm/ecore_drm_output.c  | 12 +++-
 src/lib/ecore_drm/ecore_drm_private.h |  1 +
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index 54e252e..e5c2972 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -788,6 +788,18 @@ EAPI const Eina_List *ecore_drm_devices_get(void);
  */
 EAPI void ecore_drm_screen_size_range_get(Ecore_Drm_Device *dev, int *minw, 
int *minh, int *maxw, int *maxh);
 
+/**
+ * Get if a given output is connected
+ *
+ * @param output The Ecore_Drm_Output to get the connected status of
+ *
+ * @return EINA_TRUE if output is connected, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Drm_Output_Group
+ * @since 1.15
+ */
+EAPI Eina_Bool ecore_drm_output_connected_get(Ecore_Drm_Output *output);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index 614abea..f04a890 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -754,13 +754,15 @@ ecore_drm_outputs_create(Ecore_Drm_Device *dev)
 if (!(conn = drmModeGetConnector(dev->drm.fd, res->connectors[i])))
   continue;
 
-if (conn->connection != DRM_MODE_CONNECTED) goto next;
+/* if (conn->connection != DRM_MODE_CONNECTED) goto next; */
 
 /* create output for this connector */
 if (!(output =
   _ecore_drm_output_create(dev, res, conn, x, y, EINA_FALSE)))
   goto next;
 
+output->connected = (conn->connection == DRM_MODE_CONNECTED);
+
 x += output->current_mode->width;
 
 next:
@@ -1099,3 +1101,11 @@ ecore_drm_output_name_get(Ecore_Drm_Output *output)
 
return strdup(output->name);
 }
+
+EAPI Eina_Bool
+ecore_drm_output_connected_get(Ecore_Drm_Output *output)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
+
+   return output->connected;
+}
diff --git a/src/lib/ecore_drm/ecore_drm_private.h 
b/src/lib/ecore_drm/ecore_drm_private.h
index 75e103a..c7b9c2f 100644
--- a/src/lib/ecore_drm/ecore_drm_private.h
+++ b/src/lib/ecore_drm/ecore_drm_private.h
@@ -140,6 +140,7 @@ struct _Ecore_Drm_Output
 
Ecore_Drm_Backlight *backlight;   
 
+   Eina_Bool connected : 1;
Eina_Bool enabled : 1;
Eina_Bool cloned : 1;
Eina_Bool need_repaint : 1;

-- 




[EGIT] [enlightenment/modules/wallpaper2] master 01/01: wallpaper2: Make wallpaper2 function again with EFL/E from git

2015-05-07 Thread Chris Michael
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/enlightenment/modules/wallpaper2.git/commit/?id=c55d5f31d60d798b9edd672c530632ef515d250e

commit c55d5f31d60d798b9edd672c530632ef515d250e
Author: Chris Michael 
Date:   Thu May 7 15:32:54 2015 -0400

wallpaper2: Make wallpaper2 function again with EFL/E from git

Signed-off-by: Chris Michael 
---
 src/e_mod_main.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/e_mod_main.c b/src/e_mod_main.c
index 006ce93..ee8493f 100644
--- a/src/e_mod_main.c
+++ b/src/e_mod_main.c
@@ -10,13 +10,13 @@ static E_Int_Menu_Augmentation *maug = NULL;
 //static E_Fm2_Mime_Handler *import_hdl = NULL;
 
 /* module setup */
-EAPI E_Module_Api e_modapi =
+E_API E_Module_Api e_modapi =
 {
E_MODULE_API_VERSION,
  "Settings - Wallpaper 2"
 };
 
-EAPI void *
+E_API void *
 e_modapi_init(E_Module *m)
 {
bindtextdomain(PACKAGE, LOCALEDIR);
@@ -43,7 +43,7 @@ e_modapi_init(E_Module *m)
return m;
 }
 
-EAPI int
+E_API int
 e_modapi_shutdown(E_Module *m EINA_UNUSED)
 {
 //   E_Config_Dialog *cfd;
@@ -71,7 +71,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
return 1;
 }
 
-EAPI int
+E_API int
 e_modapi_save(E_Module *m EINA_UNUSED)
 {
return 1;

-- 




[EGIT] [core/efl] master 01/01: Revert "autotools: enable make check per individual modules."

2015-05-07 Thread Stefan Schmidt
stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d48c5accea091b023baed93add79d88adbc64fb6

commit d48c5accea091b023baed93add79d88adbc64fb6
Author: Stefan Schmidt 
Date:   Thu May 7 20:50:56 2015 +0200

Revert "autotools: enable make check per individual modules."

This reverts commit 35119e7bfdc7c13c2041293f3d0b2ebe1fb7c313.

Reverted to bring make check back in a working state. Also the way we
want to handle a more modular testing needs discussion.
---
 Makefile.am | 69 -
 src/Makefile_Ecore.am   |  5 ---
 src/Makefile_Ecore_Audio_Cxx.am |  6 
 src/Makefile_Ecore_Con.am   |  6 
 src/Makefile_Ecore_Cxx.am   | 12 ---
 src/Makefile_Ector.am   |  6 
 src/Makefile_Edje.am|  6 
 src/Makefile_Edje_Cxx.am|  6 
 src/Makefile_Eet.am |  6 
 src/Makefile_Eet_Cxx.am |  7 -
 src/Makefile_Eeze.am|  7 -
 src/Makefile_Efreet.am  |  6 
 src/Makefile_Eina.am|  6 
 src/Makefile_Eina_Cxx.am|  6 
 src/Makefile_Eio.am |  6 
 src/Makefile_Eldbus.am  |  6 
 src/Makefile_Eldbus_Cxx.am  |  6 
 src/Makefile_Emile.am   |  6 
 src/Makefile_Eo.am  | 45 ---
 src/Makefile_Eolian.am  |  6 
 src/Makefile_Eolian_Cxx.am  |  6 
 src/Makefile_Evas.am|  6 
 src/Makefile_Evas_Cxx.am|  6 
 23 files changed, 247 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 4bc6def..a756511 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -432,75 +432,6 @@ endif
 if EFL_ENABLE_COVERAGE
@$(MAKE) $(AM_MAKEFLAGS) lcov-report
 endif
-
-check: override DISABLE_SUBTESTS = 1
-check:
-   ifeq($(DISABLE_SUBTESTS), 1)
-   make check-recursive
-   endif
-
-check-eina:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eina
-check-eina-cxx:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eina-cxx
-check-ecore:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore
-check-ecore-audio-cxx:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore-audio-cxx
-check-ecore-con:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore-con
-check-ecore-cxx:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore-cxx
-check-ecore-cxx-compile:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore-cxx-compile
-check-ector:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-ector
-check-edje:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-edje
-check-edje-cxx:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-edje-cxx
-check-eet:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eet
-check-eet-cxx:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eet-cxx
-check-eeze:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eeze
-check-efreet:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-efreet
-check-eio:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eio
-check-eldbus:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eldbus
-check-eldbus-cxx:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eldbus-cxx
-check-emile:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-emile
-check-eo:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo
-check-eo-composite-object:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-composite-object
-check-eo-constructors:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-constructors
-check-eo-function-overrides:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-function-overrides
-check-eo-interface:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-interface
-check-eo-mixin:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-mixin
-check-eo-text-access:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-text-access
-check-eo-signals:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-signals
-check-eo-children:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-children
-check-eolian:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eolian
-check-eolian-cxx:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-eolian-cxx
-check-evas:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-evas
-check-evas-cxx:
-   $(MAKE) $(AM_MAKEFLAGS) -C src check-evas-cxx
 endif
 
 # benchmark
diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am
index 36d84ec..738f929 100644
--- a/src/Makefile_Ecore.am
+++ b/src/Makefile_Ecore.am
@@ -257,11 +257,6 @@ if HAVE_ECORE_FB
 tests_ecore_ecore_suite_SOURCES += tests/ecore/ecore_test_ecore_fb.c
 endif
 
-check-ecore:
-   check_PROGRAMS=tests/ecore/ecore_suite
-   make check TESTS=tests/ecore/ecore_suite
-
-check-ecore: override DISABLE_SUBTESTS = 0
 endif
 
 EXTRA_DIST += \
diff --git a/src/Makefile_Ecore_Audio_Cxx.am b/src/Makefile_Ecore_Audio_Cxx.am
index 383228f..d31d3ec 100644
--- a/src/Makefile_Ecore_Audio_Cxx.am
+++ b/src/Makefile_Ecore_Audio_Cxx.am
@@ -45,12 +45,6 @@ tests_ecore_audio_cxx_cxx_compile_test_CPPFLAGS = \
 tests_ecore_audio_cxx_cxx_compile_test_LDADD = @CHECK_LIBS@ @USE_ECORE_LIBS@
 t

[EGIT] [bindings/python/python-efl] master 01/01: Add notes for pypi upload

2015-05-07 Thread Dave Andreoli
davemds pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=dba05cc1bae27eff5f31f2859f4edb4ffac88380

commit dba05cc1bae27eff5f31f2859f4edb4ffac88380
Author: Dave Andreoli 
Date:   Thu May 7 20:56:45 2015 +0200

Add notes for pypi upload
---
 CODING | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/CODING b/CODING
index 1e4f965..87e320b 100644
--- a/CODING
+++ b/CODING
@@ -75,7 +75,9 @@ Release process instructions
 
 * ssh to download.enlightenment.org and mv tarballs & md5sums to:
 /srv/web/download.enlightenment.org/public_html/rel/bindings/python
-* Upload the .tar.gz archive to pypi
+* Upload the .tar.gz archive to pypi:
+   - first upload the PKG-INFO file from the "edit" section on pypi
+   - then upload the tarball from the "files" section
 * Create and push the tag for the release
 git tag -a v1.9.0 && git push origin v1.9.0
 * Create and push the branch for stable backporting

-- 




[EGIT] [editors/jedit-configs] master 01/01: remove unused keyword

2015-05-07 Thread Daniel Kolesa
q66 pushed a commit to branch master.

http://git.enlightenment.org/editors/jedit-configs.git/commit/?id=6043509df43ed4f6a8ee2ed0bb771bbea25d07ed

commit 6043509df43ed4f6a8ee2ed0bb771bbea25d07ed
Author: Daniel Kolesa 
Date:   Thu May 7 17:36:35 2015 +0100

remove unused keyword
---
 eo/eo.xml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/eo/eo.xml b/eo/eo.xml
index 215523d..93fb353 100644
--- a/eo/eo.xml
+++ b/eo/eo.xml
@@ -92,7 +92,6 @@
 methods
 mixin
 params
-properties
 set
 type
 values

-- 




[EGIT] [core/efl] master 01/01: eolian: remove old property syntax support

2015-05-07 Thread Daniel Kolesa
q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b5a7a9b556e3966cccbdeece396ea48f0b4d84e9

commit b5a7a9b556e3966cccbdeece396ea48f0b4d84e9
Author: Daniel Kolesa 
Date:   Thu May 7 17:35:33 2015 +0100

eolian: remove old property syntax support
---
 src/lib/eolian/eo_lexer.h  |  4 ++--
 src/lib/eolian/eo_parser.c | 17 -
 2 files changed, 2 insertions(+), 19 deletions(-)

diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index 3aee446..83638da 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -28,8 +28,8 @@ enum Tokens
 KW(destructor), KW(eo), KW(eo_prefix), KW(events), KW(free), \
 KW(get), KW(implements), KW(interface), KW(keys), KW(legacy), \
 KW(legacy_prefix), KW(methods), KW(mixin), KW(own), KW(params), \
-KW(properties), KW(set), KW(type), KW(values), KW(var), KWAT(auto), \
-KWAT(beta), KWAT(c_only), KWAT(class), KWAT(const), KWAT(const_get), \
+KW(set), KW(type), KW(values), KW(var), KWAT(auto), KWAT(beta), \
+KWAT(c_only), KWAT(class), KWAT(const), KWAT(const_get), \
 KWAT(const_set), KWAT(empty), KWAT(extern), KWAT(free), KWAT(in), \
 KWAT(inout), KWAT(nonull), KWAT(nullable), KWAT(optional), KWAT(out), \
 KWAT(private), KWAT(property), KWAT(protected), KWAT(virtual), \
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 9ed3deb..4a19c00 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -1643,18 +1643,6 @@ parse_methods(Eo_Lexer *ls)
 }
 
 static void
-parse_properties(Eo_Lexer *ls)
-{
-   int line, col;
-   eo_lexer_get(ls);
-   line = ls->line_number, col = ls->column;
-   check_next(ls, '{');
-   while (ls->t.token != '}')
- parse_property(ls);
-   check_match(ls, '}', '{', line, col);
-}
-
-static void
 parse_implements(Eo_Lexer *ls, Eina_Bool iface)
 {
int line, col;
@@ -1698,7 +1686,6 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
Eina_Bool has_legacy_prefix = EINA_FALSE,
  has_eo_prefix = EINA_FALSE,
  has_data  = EINA_FALSE,
- has_properties= EINA_FALSE,
  has_methods   = EINA_FALSE,
  has_implements= EINA_FALSE,
  has_constructors  = EINA_FALSE,
@@ -1742,10 +1729,6 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
 eo_lexer_get(ls);
 check_next(ls, ';');
 break;
-  case KW_properties:
-CASE_LOCK(ls, properties, "properties definition")
-parse_properties(ls);
-break;
   case KW_methods:
 CASE_LOCK(ls, methods, "methods definition")
 parse_methods(ls);

-- 




[EGIT] [editors/jedit-configs] master 01/01: eo update

2015-05-07 Thread Daniel Kolesa
q66 pushed a commit to branch master.

http://git.enlightenment.org/editors/jedit-configs.git/commit/?id=54b749e948b23a5aa1b1473e8d10a9413937004f

commit 54b749e948b23a5aa1b1473e8d10a9413937004f
Author: Daniel Kolesa 
Date:   Thu May 7 16:38:17 2015 +0100

eo update
---
 eo/eo.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/eo/eo.xml b/eo/eo.xml
index c1eda3b..215523d 100644
--- a/eo/eo.xml
+++ b/eo/eo.xml
@@ -148,6 +148,7 @@
 void
 
 @auto
+@beta
 @class
 @const
 @empty
@@ -160,6 +161,7 @@
 @optional
 @out
 @private
+@property
 @protected
 @virtual
 @warn_unused

-- 




[EGIT] [core/efl] master 01/01: eolian: change all EFL .eo files to use new syntax for properties

2015-05-07 Thread Daniel Kolesa
q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ed0988a22d9439934a5213f4fa96cb7db76c71e3

commit ed0988a22d9439934a5213f4fa96cb7db76c71e3
Author: Daniel Kolesa 
Date:   Thu May 7 16:36:45 2015 +0100

eolian: change all EFL .eo files to use new syntax for properties
---
 src/examples/eolian_cxx/colourable.eo  |  6 +-
 src/examples/eolian_cxx/colourablesquare.eo|  6 +-
 src/lib/ecore/ecore_exe.eo |  7 +--
 src/lib/ecore/ecore_mainloop.eo|  6 +-
 src/lib/ecore/ecore_poller.eo  |  4 +-
 src/lib/ecore/ecore_timer.eo   |  8 +--
 src/lib/ecore_audio/ecore_audio.eo | 14 ++---
 src/lib/ecore_audio/ecore_audio_in.eo  | 20 +++---
 src/lib/ecore_con/ecore_con_base.eo| 16 +++--
 src/lib/ecore_con/ecore_con_client.eo  |  4 +-
 src/lib/ecore_con/ecore_con_server.eo  | 10 +--
 src/lib/ecore_con/ecore_con_url.eo |  4 +-
 src/lib/ector/cairo/ector_cairo_surface.eo |  6 +-
 src/lib/ector/ector_generic_surface.eo |  8 +--
 src/lib/ector/ector_renderer_generic_base.eo   | 16 +++--
 src/lib/ector/ector_renderer_generic_shape.eo  |  8 +--
 src/lib/ector/software/ector_software_surface.eo   |  6 +-
 src/lib/edje/edje_object.eo| 46 +++---
 src/lib/efl/interfaces/efl_control.eo  |  6 +-
 src/lib/efl/interfaces/efl_file.eo | 10 ++-
 src/lib/efl/interfaces/efl_gfx_base.eo | 12 ++--
 src/lib/efl/interfaces/efl_gfx_fill.eo |  6 +-
 src/lib/efl/interfaces/efl_gfx_gradient_base.eo|  6 +-
 src/lib/efl/interfaces/efl_gfx_gradient_linear.eo  |  6 +-
 src/lib/efl/interfaces/efl_gfx_gradient_radial.eo  |  8 +--
 src/lib/efl/interfaces/efl_gfx_shape.eo| 26 
 src/lib/efl/interfaces/efl_gfx_stack.eo| 10 ++-
 src/lib/efl/interfaces/efl_gfx_view.eo |  4 +-
 src/lib/efl/interfaces/efl_image.eo| 10 +--
 src/lib/efl/interfaces/efl_model_base.eo   | 14 ++---
 src/lib/efl/interfaces/efl_player.eo   | 18 +++---
 src/lib/efl/interfaces/efl_text.eo |  4 +-
 src/lib/efl/interfaces/efl_text_properties.eo  |  6 +-
 src/lib/emotion/emotion_object.eo  |  6 +-
 src/lib/eo/eo_base.eo  | 12 ++--
 src/lib/evas/canvas/efl_vg_base.eo | 10 ++-
 src/lib/evas/canvas/efl_vg_shape.eo|  8 +--
 src/lib/evas/canvas/evas_3d_light.eo   | 13 ++--
 src/lib/evas/canvas/evas_3d_material.eo|  8 +--
 src/lib/evas/canvas/evas_3d_mesh.eo| 21 +++
 src/lib/evas/canvas/evas_3d_node.eo| 17 +++--
 src/lib/evas/canvas/evas_3d_scene.eo   |  6 +-
 src/lib/evas/canvas/evas_3d_texture.eo |  8 +--
 src/lib/evas/canvas/evas_box.eo| 10 ++-
 src/lib/evas/canvas/evas_canvas.eo | 53 
 src/lib/evas/canvas/evas_common_interface.eo   |  4 +-
 src/lib/evas/canvas/evas_grid.eo   | 10 ++-
 src/lib/evas/canvas/evas_image.eo  | 72 +++---
 src/lib/evas/canvas/evas_line.eo   |  4 +-
 src/lib/evas/canvas/evas_object.eo | 62 +--
 src/lib/evas/canvas/evas_object_smart.eo   | 16 +++--
 src/lib/evas/canvas/evas_out.eo|  6 +-
 src/lib/evas/canvas/evas_table.eo  | 18 +++---
 src/lib/evas/canvas/evas_text.eo   | 40 ++--
 src/lib/evas/canvas/evas_textblock.eo  | 28 -
 src/lib/evas/canvas/evas_textgrid.eo   | 10 ++-
 src/lib/evas/canvas/evas_vg.eo |  4 +-
 .../gl_generic/ector_cairo_software_surface.eo |  4 +-
 .../ector_cairo_software_surface.eo|  4 +-
 src/tests/eolian/data/base.eo  |  6 +-
 src/tests/eolian/data/class_funcs.eo   |  8 +--
 src/tests/eolian/data/class_simple.eo  |  8 +--
 src/tests/eolian/data/complex_type.eo  |  6 +-
 src/tests/eolian/data/consts.eo|  6 +-
 src/tests/eolian/data/nmsp1_nmsp11_class2.eo   |  4 +-
 src/tests/eolian/data/object_impl.eo   |  8 +--
 src/tests/eolian/data/object_impl_add.eo   |  4 +-
 src/tests/eolian/data/override.eo  | 10 ++-
 src/tests/eolian/data/scope.eo | 10 ++-
 src/tests/eolian_cxx/generic.eo|  8 +--
 70 files changed, 393 insertions(+), 480 deletions(-)

diff --git a/src/examples/eolian_cxx/colourable.eo 
b/src/examples/eolian_cxx/colourable.eo
index 3693818..b50bf3c 100644
--- a/src/examples/eolian_cxx/colourable.eo
+++ b/src/examples/eolian_cxx/colourable.eo
@@ -19,9 +19,7 @@ class Colourable (Eo.Base)
 }
  

[EGIT] [core/efl] master 01/01: eolian: allow the new property syntax

2015-05-07 Thread Daniel Kolesa
q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e126911ba0d34542fc3378971ced63f40851e198

commit e126911ba0d34542fc3378971ced63f40851e198
Author: Daniel Kolesa 
Date:   Thu May 7 14:57:46 2015 +0100

eolian: allow the new property syntax
---
 src/lib/eolian/eo_parser.c | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 8c21a3f..9ed3deb 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -1630,7 +1630,15 @@ parse_methods(Eo_Lexer *ls)
line = ls->line_number, col = ls->column;
check_next(ls, '{');
while (ls->t.token != '}')
- parse_method(ls);
+ {
+if (ls->t.kw == KW_at_property)
+  {
+ eo_lexer_get(ls);
+ parse_property(ls);
+ continue;
+  }
+parse_method(ls);
+ }
check_match(ls, '}', '{', line, col);
 }
 

-- 




[EGIT] [core/efl] master 01/01: Check a key repeat using xkb ruled keycode

2015-05-07 Thread jhyuni.kang
devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5c5f4580d2ed5208b4b8342aaa8d33e9d6953baa

commit 5c5f4580d2ed5208b4b8342aaa8d33e9d6953baa
Author: jhyuni.kang 
Date:   Thu May 7 09:24:54 2015 -0400

Check a key repeat using xkb ruled keycode

Summary:
ecore_wayland get a key information using libxkbcommon's functions.
 Also generate key repeat check xkb keymap's information using 
xkb_keymap_key_repeats().
 But xkb rules reflect X broken keycodes, so offset by 8.
 In ecore_wayland backend, other xkb funtions using offset keycode
 but only use default keycode to check key repeat.
 So I fix it to use xkb ruled keycode.

Test Plan: Long press a key and watch repeated key events generate well

Reviewers: devilhorns, raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2475
---
 src/lib/ecore_wayland/ecore_wl_input.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/ecore_wayland/ecore_wl_input.c 
b/src/lib/ecore_wayland/ecore_wl_input.c
old mode 100644
new mode 100755
index 1792d7f..b0297e9
--- a/src/lib/ecore_wayland/ecore_wl_input.c
+++ b/src/lib/ecore_wayland/ecore_wl_input.c
@@ -829,7 +829,7 @@ _ecore_wl_input_cb_keyboard_key(void *data, struct 
wl_keyboard *keyboard EINA_UN
else
  ecore_event_add(ECORE_EVENT_KEY_UP, e, NULL, NULL);
 
-   if (!xkb_keymap_key_repeats(input->xkb.keymap, keycode)) return;
+   if (!xkb_keymap_key_repeats(input->xkb.keymap, code)) return;
 
if ((!state) && (keycode == input->repeat.key))
  {

-- 




[EGIT] [core/efl] master 01/01: elua: use a minimal app to avoid loading eolian at runtime

2015-05-07 Thread Daniel Kolesa
q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b1eb5b56a627929f1f43ebd167c92e76eefe0847

commit b1eb5b56a627929f1f43ebd167c92e76eefe0847
Author: Daniel Kolesa 
Date:   Thu May 7 11:56:59 2015 +0100

elua: use a minimal app to avoid loading eolian at runtime

Otherwise it would fail on systems with no Eolian installed.

@fix
---
 src/Makefile_Elua.am  | 4 +++-
 src/tests/elua/data/apps/test.lua | 2 ++
 src/tests/elua/elua_lib.c | 4 ++--
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/Makefile_Elua.am b/src/Makefile_Elua.am
index a053053..b889a45 100644
--- a/src/Makefile_Elua.am
+++ b/src/Makefile_Elua.am
@@ -123,7 +123,7 @@ tests_elua_elua_suite_CPPFLAGS = 
-I$(top_builddir)/src/lib/efl \
 -DELUA_BINDINGS_DIR=\"$(ELUA_BINDINGS_DIR)\" \
 -DELUA_CORE_DIR=\"$(ELUA_CORE_DIR)\" \
 -DELUA_MODULES_DIR=\"$(ELUA_MODULES_DIR)\" \
--DELUA_APPS_DIR=\"$(ELUA_APPS_DIR)\" \
+-DELUA_APPS_DIR=\"$(top_srcdir)/src/tests/elua/data/apps\" \
 @CHECK_CFLAGS@ \
 @ELUA_CFLAGS@
 
@@ -140,4 +140,6 @@ tests_elua_elua_suite_DEPENDENCIES = 
@USE_ELUA_INTERNAL_LIBS@
 
 endif
 
+EXTRA_DIST += tests/elua/data/apps/test.lua
+
 endif
diff --git a/src/tests/elua/data/apps/test.lua 
b/src/tests/elua/data/apps/test.lua
new file mode 100644
index 000..2e9bab1
--- /dev/null
+++ b/src/tests/elua/data/apps/test.lua
@@ -0,0 +1,2 @@
+-- test elua app
+return true
diff --git a/src/tests/elua/elua_lib.c b/src/tests/elua/elua_lib.c
index 8285727..bd959ca 100644
--- a/src/tests/elua/elua_lib.c
+++ b/src/tests/elua/elua_lib.c
@@ -18,7 +18,7 @@ START_TEST(elua_api)
 int fd;
 char *cargv[2];
 char arg1[] = "test";
-char arg2[] = "lualian";
+char arg2[] = "test";
 int quit = 0;
 cargv[0] = arg1;
 cargv[1] = arg2;
@@ -69,7 +69,7 @@ START_TEST(elua_api)
 fail_if(!elua_util_require(st, "util"));
 fail_if(!elua_util_string_run(st, "return 1337", "foo"));
 fail_if(elua_util_string_run(st, "foo bar", "foo")); /* invalid code */
-fail_if(elua_util_app_load(st, "lualian"));
+fail_if(elua_util_app_load(st, "test"));
 fail_if(lua_type(lst, -1) != LUA_TFUNCTION);
 lua_pop(lst, 1);
 fail_if(!elua_util_app_load(st, "non_existent_app"));

-- 




[EGIT] [core/efl] master 01/01: eolian: reserve @beta and @property

2015-05-07 Thread Daniel Kolesa
q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=95a79d5f3bf3558fc671aad7b2c54f18a94b9f8c

commit 95a79d5f3bf3558fc671aad7b2c54f18a94b9f8c
Author: Daniel Kolesa 
Date:   Thu May 7 11:35:14 2015 +0100

eolian: reserve @beta and @property
---
 src/lib/eolian/eo_lexer.h | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index 5203045..3aee446 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -29,10 +29,11 @@ enum Tokens
 KW(get), KW(implements), KW(interface), KW(keys), KW(legacy), \
 KW(legacy_prefix), KW(methods), KW(mixin), KW(own), KW(params), \
 KW(properties), KW(set), KW(type), KW(values), KW(var), KWAT(auto), \
-KWAT(c_only), KWAT(class), KWAT(const), KWAT(const_get), KWAT(const_set), \
-KWAT(empty), KWAT(extern), KWAT(free), KWAT(in), KWAT(inout), 
KWAT(nonull), \
-KWAT(nullable), KWAT(optional), KWAT(out), KWAT(private), KWAT(protected), 
\
-KWAT(virtual), KWAT(warn_unused), \
+KWAT(beta), KWAT(c_only), KWAT(class), KWAT(const), KWAT(const_get), \
+KWAT(const_set), KWAT(empty), KWAT(extern), KWAT(free), KWAT(in), \
+KWAT(inout), KWAT(nonull), KWAT(nullable), KWAT(optional), KWAT(out), \
+KWAT(private), KWAT(property), KWAT(protected), KWAT(virtual), \
+KWAT(warn_unused), \
 \
 KW(byte), KW(ubyte), KW(char), KW(short), KW(ushort), KW(int), KW(uint), \
 KW(long), KW(ulong), KW(llong), KW(ullong), \

-- 




[EGIT] [website/www-content] master 01/01: Wiki page download-latest changed with summary [Bump Python-EFL version] by Kai Huuhko

2015-05-07 Thread Kai Huuhko
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=c205fb81199d808e03eaac909e1068c504954ad6

commit c205fb81199d808e03eaac909e1068c504954ad6
Author: Kai Huuhko 
Date:   Thu May 7 03:33:59 2015 -0700

Wiki page download-latest changed with summary [Bump Python-EFL version] by 
Kai Huuhko
---
 pages/download-latest.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/download-latest.txt b/pages/download-latest.txt
index 979671e..01bd4fa 100644
--- a/pages/download-latest.txt
+++ b/pages/download-latest.txt
@@ -3,7 +3,7 @@ efl_v = 1.14.0
 elm_v = 1.14.0
 emotion_generic_players_v = 1.14.0
 evas_generic_loaders_v= 1.14.0
-python_efl_v  = 1.13.0
+python_efl_v  = 1.14.0
 
 enlightenment_v   = 0.19.5
 terminology_v = 0.8.0

-- 




[EGIT] [bindings/python/python-efl] master 01/01: Open up development for 1.15

2015-05-07 Thread Kai Huuhko
kuuko pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=d571c49e6f1e01ea8d5d6c24a676742bd4befd03

commit d571c49e6f1e01ea8d5d6c24a676742bd4befd03
Author: Kai Huuhko 
Date:   Thu May 7 13:10:20 2015 +0300

Open up development for 1.15
---
 ChangeLog   | 16 +++-
 efl/__init__.py |  4 ++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5cbe152..7e48b13 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,20 @@
+===
+2015-08-03  v1.15.0
+===
+
+Fixes:
+
+Improvements:
+
+Changes:
+
+Additions:
+
+Deprecation:
+
 
 ===
-2015-05-04  v1.14.0
+2015-05-07  v1.14.0
 ===
 
 Fixes:
diff --git a/efl/__init__.py b/efl/__init__.py
index de34739..480cbbe 100644
--- a/efl/__init__.py
+++ b/efl/__init__.py
@@ -20,5 +20,5 @@
 # pre-release: "1.13.0-beta1" ( 1, 13, 0 )
 # release: "1.13.0" ( 1, 13, 0 )
 
-__version__ = "1.14.0"
-__version_info__ = ( 1, 14, 0 )
+__version__ = "1.14.99"
+__version_info__ = ( 1, 14, 99 )

-- 




[EGIT] [core/efl] master 02/02: Static deps unibreak: update to what will soon be version 3.

2015-05-07 Thread Tom Hacohen
tasn pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7a49d23f90f41c478db9b7beb9763aa0cd74ae46

commit 7a49d23f90f41c478db9b7beb9763aa0cd74ae46
Author: Tom Hacohen 
Date:   Thu May 7 10:53:11 2015 +0100

Static deps unibreak: update to what will soon be version 3.

Version 3 is not yet released, but this is on track to become it.
This is based on commit: a815e11f7ebf35b59278f783227a829ee4692760.

@feature.
---
 src/Makefile_Evas.am   |   4 +
 src/static_libs/libunibreak/ChangeLog  | 164 +
 src/static_libs/libunibreak/LICENCE|   5 +-
 src/static_libs/libunibreak/{README => README.md}  |   0
 src/static_libs/libunibreak/linebreak.c| 179 --
 src/static_libs/libunibreak/linebreak.h|  29 +--
 src/static_libs/libunibreak/linebreakdata.c| 171 ++
 src/static_libs/libunibreak/linebreakdef.c |   8 +-
 src/static_libs/libunibreak/linebreakdef.h |  32 +---
 src/static_libs/libunibreak/unibreakbase.c |  41 +
 .../libunibreak/{linebreak.h => unibreakbase.h}|  44 ++---
 src/static_libs/libunibreak/unibreakdef.c  | 159 
 src/static_libs/libunibreak/unibreakdef.h  |  80 
 src/static_libs/libunibreak/wordbreak.c|  76 ++--
 src/static_libs/libunibreak/wordbreak.h|  12 +-
 src/static_libs/libunibreak/wordbreakdata.c| 201 +
 src/static_libs/libunibreak/wordbreakdef.h |  21 +--
 17 files changed, 894 insertions(+), 332 deletions(-)

diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index 381a148..072cffa 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -90,6 +90,8 @@ lib/evas/canvas/evas_vg_private.h
 # Linebreak
 
 noinst_HEADERS += \
+static_libs/libunibreak/unibreakbase.h \
+static_libs/libunibreak/unibreakdef.h \
 static_libs/libunibreak/linebreak.h \
 static_libs/libunibreak/linebreakdef.h \
 static_libs/libunibreak/wordbreakdef.h \
@@ -98,6 +100,8 @@ static_libs/libunibreak/wordbreakdata.c
 
 # Linebreak
 lib_evas_libevas_la_SOURCES = \
+static_libs/libunibreak/unibreakbase.c \
+static_libs/libunibreak/unibreakdef.c \
 static_libs/libunibreak/linebreak.c \
 static_libs/libunibreak/linebreakdata.c \
 static_libs/libunibreak/linebreakdef.c \
diff --git a/src/static_libs/libunibreak/ChangeLog 
b/src/static_libs/libunibreak/ChangeLog
index feb830b..44b56ea 100644
--- a/src/static_libs/libunibreak/ChangeLog
+++ b/src/static_libs/libunibreak/ChangeLog
@@ -1,3 +1,167 @@
+2015-04-19  Wu Yongwei  
+
+   * LICENCE: Update copyright information.
+
+2015-04-19  Wu Yongwei  
+
+   * src/linebreakdata2.tmp: Remove the unnecessary inclusion of
+   "linebreak.h".
+   * src/linebreakdata.c: Ditto.
+
+2015-04-19  Wu Yongwei  
+
+   Use extended regexp to simplify expressions.
+   * src/LineBreak1.sed: Simplify with extended regexp.
+   * src/LineBreak2.sed: Ditto.
+   * src/Makefile.am: Add `-E' to the command line of sed.
+
+2015-04-19  Wu Yongwei  
+
+   Make further clean-up for the 3.0 release.
+   * configure.ac (AC_INIT): Change the library version to `3.0'.
+   * Doxyfile (PROJECT_NUMBER): Change to `3.0'.
+   (EXCLUDE): Add the missing `src/' before `filter_dup.c'.
+   * src/wordbreakdata1.tmpl: Remove the inclusion of "linebreak.h".
+   * src/wordbreakdata.c: Ditto.
+
+2015-04-19  Wu Yongwei  
+
+   * src/wordbreakdef.h: Include "unibreakdef.h".
+
+2015-04-19  Wu Yongwei  
+
+   * purge: Make it remove `compile'.
+
+2015-04-18  Wu Yongwei  
+
+   * src/unibreakdef.c: New file.
+   * src/unibreakdef.h: New file.
+   * src/wordbreak.c: Rename reference to `lb_get_next_char...' to
+   `ub_get_next_char...'.
+   * src/linebreak.c: Ditto.
+   (lb_get_next_char_utf8): Remove definition.
+   (lb_get_next_char_utf16): Ditto.
+   (lb_get_next_char_utf32): Ditto.
+   * src/linebreakdef.h: Include "unibreakdef.h".
+   (EOS): Remove definition.
+   (get_next_char_t): Remove typedef.
+   (lb_get_next_char_utf8): Remove declaration.
+   (lb_get_next_char_utf16): Ditto.
+   (lb_get_next_char_utf32): Ditto.
+   * src/Makefile.am (include_HEADERS): Add `unibreakdef.h'.
+   (libunibreak_la_SOURCES): Add `unibreakdef.c'.
+   (libunibreak_la_CFLAGS): Define to `-W -Wall'.
+
+2015-04-18  Wu Yongwei  
+
+   * src/unibreakbase.c: New file.
+   * src/unibreakbase.h: New file.
+   * src/linebreak.c (linebreak_version): Remove definition.
+   * src/linebreak.h: Include "unibreakbase.h".
+   (linebreak_version): Remove declaration.
+   (LINEBREAK_VERSION): Remove definition.
+   (utf8_t): Remove typedef.
+   (utf16_t): Remove typedef.
+   (utf32_t): Remove typedef.
+   * src/wordbreak.h: Include "unibreakbase.h" instead of
+   "linebr

[EGIT] [bindings/python/python-efl] annotated tag v1.14.0 created (now 7bf2cd5)

2015-05-07 Thread Enlightenment Git
This is an automated email from the git hooks/post-receive script.

kuuko pushed a change to annotated tag v1.14.0
in repository bindings/python/python-efl.

at  7bf2cd5   (tag)
   tagging  1011cb76df9adf516be79426bbee298eb962ae3e (commit)
  replaces  v1.13.0
 tagged by  Kai Huuhko
on  Thu May 7 12:16:14 2015 +0300

- Log -
Python-EFL release 1.14.0
-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iQIcBAABAgAGBQJVSy2vAAoJEMVq7z9spx7H3tMQAKIZOhNfbXRaaCLHEqVHopW3
ezeaqlihbL1IvVk/GahsIgD4cuX28jHEHXzviMEkDQPJbZ4gKbdcQPqRnCRNuyuz
qv8Z7kZSeTKyhrKBqtsIo5sb9CNE0YF82L33lCdmaKDPmYzsW5M9qlEqCQNfMZYL
wv3ekiXOF/AxGP9aPVySpktleCToBLuo48xKlnbPTxkYRCSLXi05TqiS1WT1i7Xc
F6o/euMzfa6BiD3xLoVyoow1fBuJUkCT9k2+bkck9LtX+vNhoEyyeTvtqpxKVweh
uWoYfkwY3gv0h5i/5XlkzkQE26mptPAzGoR8zqYw7I9QxCXIe/wibTnvZsKTQ3sm
nkSZTyZhUv2ul2jrQf3uvhW5EIPTtO6iDQY48gTIn0GsZqXDSZfKzveBxButxItx
U7pBtpHynDBKPgrvZR14ZrWQCtHYSqNpZ8a98X7PG5s9hhgQBtyMaKPBN8g+dMRW
9Op+QJO39ZfVyWb9/zr77+uiC9+6VUJZVJAFf7/iww6qYLH07wb84oMEwxwDEN58
gRyyO/l9q4K2/GuHhzCcCchckNiSK1nmZYnRLZ3/uwu3Bx5tXC5BstVFzzW6D7SR
9sTstvqqCmCGr15EzyXoFzfQEKfrQDuW+/KPLpJUZ8W3JSCpx3xJGRrP39vfmH9N
ZMYo5UdgEaRko8zeihx5
=3g54
-END PGP SIGNATURE-

Dave Andreoli (28):
  Now start the 1.14 development cycle
  Fix the signature of the un/highlight List callback to include the item.
  Remove a wrong line from the previous commit
  Use consistent indentation style with the rest of the code
  Image.memfile_set: do not raise exceptions.
  Correct commit count
  Fix for cython 0.22
  Fix Scroller doc
  Fix Photocam.internal_image to actually work
  Fix code to conform to recent Eo changes.
  Some tests for SmartObject callbacks
  New 1.14 property: Evas.Image.orient
  New 1.14 function: Elm.Transit.go_in()
  New 1.14 API: elm.Photocam.image_orient
  Test Elm.Image: use new EVAS_ORIENT_* enums
  New 1.14 API: 
elm.Configuration.window_auto_focus_enable/window_auto_focus_animate
  New 1.14 API: elm.Slider.indicator_visible_mode
  New 1.14 API: file_get for Video and Layout
  Fix elm.Video test to work again
  New 1.14 API: elm.Scroller.loop
  New 1.14 API: edje.text_class_get() and edje.Edje.text_class_get()
  New 1.14 API: item,longressed signal for Multibuttonentry
  New 1.14 signal: Colorselector changed,user
  Release: 1.14.0-beta1
  Update Changelog with recent fixes
  Changed slideshow to use new-style item data.
  Updated Changelog
  Add the data property for SlideshowItem

Kai Huuhko (90):
  Elementary.image: Add memfile support
  Elementary: Add module systray
  Examples.elementary: Update fs_entry/btn tests
  Evas: Rename Object.parent_get to smart_parent_get
  Remove tests that were infact wrong.
  Elementary.systray: Follow Eo changes
  Elementary.window: Improve documentation of Window constructor
  tests.evas: Add a valid, failing test for Rect.intercepts
  Evas.Rect: Rename intercepts to intersects, correct the algorithm
  Tests: Change test names to reflect the change from last commit
  Evas.Rect: Optimizations
  Evas: Optimize rect getters class initialization
  Elementary.box: Add an iterator for Box's children
  Elementary.scroller: Documentation fixes
  Elementary.scroller: Make ScrollerWidget private
  Documentation: Add some functional coloring and visual cues
  Documentation: Switch syntax highlighting (pygments) style to monokai
  Elementary: Documentation fixes
  Evas: Bring back SmartObject
  Evas.SmartObject: rewrite because of changes in Cython 0.21.1
  Evas.SmartObject: Change tests and examples in accordance to new API
  Evas.SmartObject: Fix issues in the new API implementation
  Evas: Remove now redundant SmartObject metaclass
  Evas.SmartObject: Fix crash when Smart is re-used
  Evas.SmartObject: Add smart_get, commented out parent getter
  Evas.SmartObject: Use the correct function when deleting data
  Evas.SmartObject: Allow callback calls even when obj is NULL
  Evas.SmartObject: Add unicode/py3k safety to callback methods
  Evas.SmartObject: Switch to using C implementation of ClippedSO
  Evas: Copy SO methods member_add/del to Object.smart_member_add/del
  Evas.SmartObject: Move documentation to right places
  Make Evas.SO iterator a generic Eo iterator and move to efl.eo
  Evas.SmartObject: Trivial changes
  Evas.SmartObject: Handle object deletion in a saner way
  Move smart callback handling from elm Object to evas SO and inherit
  Evas.SmartObject: changed smart event callback add/del methods to cdef
  Evas.SmartObject: Simplify callback handler code
  Evas.SmartObject: Keep refs in a list
  Evas: Change SmartCb event_info conversions into C functions
  Evas.SmartObject: Revert SmartCb add/del mechanism partially
  Evas

[EGIT] [core/efl] master 04/04: lz4: Update our internal copy to release r128

2015-05-07 Thread Stefan Schmidt
stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4314257d8cf9c367cab2333cfdc7b10b0109de90

commit 4314257d8cf9c367cab2333cfdc7b10b0109de90
Author: Stefan Schmidt 
Date:   Thu May 7 10:52:54 2015 +0200

lz4: Update our internal copy to release r128

Looking through the git log it is unclear which release we used before as 
nobody
stated it there. :/ We updated after the security issues last year so my 
best
guess is that we have something like r119.

To see what changed I now included the NEWS file and also the LICENSE file 
from
upstream. Upstream in now hosted here: https://github.com/Cyan4973/lz4 and
http://www.lz4.info

I recommend STRONGLY that you check if your distro ships liblz4 as an up to
date library package and use the --enable-liblz4 configure option to use the
system version. I consider making the system version default for upcoming
releases and only carry the internal one as fallback for systems that do not
provide it.

Fix T2374
---
 src/Makefile_Emile.am |   4 +-
 src/static_libs/lz4/LICENSE   |  24 ++
 src/static_libs/lz4/NEWS  | 153 +++
 src/static_libs/lz4/README|   7 -
 src/static_libs/lz4/README.md |  19 +
 src/static_libs/lz4/lz4.c | 918 --
 src/static_libs/lz4/lz4.h | 208 +-
 src/static_libs/lz4/lz4hc.c   | 886 +---
 src/static_libs/lz4/lz4hc.h   | 125 +++---
 9 files changed, 1268 insertions(+), 1076 deletions(-)

diff --git a/src/Makefile_Emile.am b/src/Makefile_Emile.am
index 4d6e43f..fe2515a 100644
--- a/src/Makefile_Emile.am
+++ b/src/Makefile_Emile.am
@@ -58,7 +58,9 @@ if ! ENABLE_LIBLZ4
 lib_emile_libemile_la_LIBADD += @LIBLZ4_LIBS@
 endif
 
-EXTRA_DIST += static_libs/lz4/README \
+EXTRA_DIST += static_libs/lz4/README.md \
+static_libs/lz4/LICENSE \
+static_libs/lz4/NEWS \
 static_libs/lz4/lz4.c \
 static_libs/lz4/lz4.h \
 static_libs/lz4/lz4hc.c \
diff --git a/src/static_libs/lz4/LICENSE b/src/static_libs/lz4/LICENSE
new file mode 100644
index 000..b566df3
--- /dev/null
+++ b/src/static_libs/lz4/LICENSE
@@ -0,0 +1,24 @@
+LZ4 Library
+Copyright (c) 2011-2014, Yann Collet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, 
this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/src/static_libs/lz4/NEWS b/src/static_libs/lz4/NEWS
new file mode 100644
index 000..2eeb948
--- /dev/null
+++ b/src/static_libs/lz4/NEWS
@@ -0,0 +1,153 @@
+r128:
+New   : lz4cli sparse file support
+New   : command -m, to compress multiple files in a single command
+Fixed : Restored lz4hc compression ratio (was slightly lower since r124)
+New   : lz4 cli supports long commands
+New   : lz4frame & lz4cli frame content size support
+New   : lz4frame supports skippable frames
+Changed:Default "make install" directory is /usr/local
+New   : lz4 cli supports "pass-through" mode
+New   : datagen can generate sparse files
+New   : scan-build tests
+New   : g++ compatibility tests
+New   : arm cross-compilation test
+Fixed : Fuzzer + frametest compatibility with NetBSD (issue #48)
+Added : Visual project directory
+Updated:Man page & Specification
+
+r127:
+N/A   : added a file on SVN
+
+r126:
+New   : lz4frame API is now integrated into liblz4
+Fixed : GCC 4.9 bug on highest performance settings, reported by Greg Slazinski
+Fixed : bug within LZ4 HC streaming mode, reported by James Boyle
+Fixed : older compiler don't like nameless unions, reported by Cheyi Lin
+Changed : lz4 is C90 compatible
+Changed : added -pedantic option, fixed a few mminor warnings
+
+r125:
+Changed : endian and alignment code
+Changed : directory structure : new "lib" directory
+Updated : lz4io, now uses lz4fra

[EGIT] [core/efl] master 01/04: docs: Fix access to main elocation page from front page

2015-05-07 Thread Stefan Schmidt
stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=eef094c661284865fc2744a7adf514d9137b5855

commit eef094c661284865fc2744a7adf514d9137b5855
Author: Stefan Schmidt 
Date:   Thu May 7 09:38:12 2015 +0200

docs: Fix access to main elocation page from front page
---
 doc/main.dox  | 2 +-
 src/lib/elocation/Elocation.h | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/doc/main.dox b/doc/main.dox
index 5db1577..6ab3071 100644
--- a/doc/main.dox
+++ b/doc/main.dox
@@ -24,7 +24,7 @@
  * @li @ref evil_main microsoft windows portability layer.
  * @li @ref eolian_main an EO file parser and code generator.
  * @li @ref eina_cxx_main Eina C++ bindings.
- * @li @ref Location awareness library.
+ * @li @ref elocation_main awareness library.
  *
  */
 
diff --git a/src/lib/elocation/Elocation.h b/src/lib/elocation/Elocation.h
index 5bb2772..60002c0 100644
--- a/src/lib/elocation/Elocation.h
+++ b/src/lib/elocation/Elocation.h
@@ -6,6 +6,7 @@
  */
 
 /**
+ * @page elocation_main Elocation (BETA)
  *
  * @section intro Elocation Use Cases
  *

-- 




[EGIT] [core/efl] master 03/04: eet: Remove direct usage of lz4 as we use emile for this now.

2015-05-07 Thread Stefan Schmidt
stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6d87ac299158702a6a98f015d2096f8b69fcc06a

commit 6d87ac299158702a6a98f015d2096f8b69fcc06a
Author: Stefan Schmidt 
Date:   Thu May 7 10:28:58 2015 +0200

eet: Remove direct usage of lz4 as we use emile for this now.

Left over from the point where it got migrated to emile.
---
 src/Makefile_Eet.am | 18 --
 1 file changed, 18 deletions(-)

diff --git a/src/Makefile_Eet.am b/src/Makefile_Eet.am
index 5a86321..d38d0bf 100644
--- a/src/Makefile_Eet.am
+++ b/src/Makefile_Eet.am
@@ -21,13 +21,6 @@ static_libs/rg_etc/rg_etc1.c \
 static_libs/rg_etc/rg_etc2.c \
 static_libs/rg_etc/etc2_encoder.c \
 static_libs/rg_etc/rg_etc1.h
-if ! ENABLE_LIBLZ4
-lib_eet_libeet_la_SOURCES += \
-static_libs/lz4/lz4.c \
-static_libs/lz4/lz4.h \
-static_libs/lz4/lz4hc.c \
-static_libs/lz4/lz4hc.h
-endif
 
 lib_eet_libeet_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
 -I$(top_srcdir)/src/static_libs/rg_etc \
@@ -36,21 +29,10 @@ lib_eet_libeet_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
 -DPACKAGE_DATA_DIR=\"$(datadir)/eet\" \
 @EET_CFLAGS@ \
 @NEON_CFLAGS@
-if ! ENABLE_LIBLZ4
-lib_eet_libeet_la_CPPFLAGS += \
--I$(top_srcdir)/src/static_libs/lz4
-endif
 lib_eet_libeet_la_LIBADD = @EET_LIBS@ @EVIL_LIBS@
-if ENABLE_LIBLZ4
-lib_eet_libeet_la_LIBADD += @LIBLZ4_LIBS@
-endif
 lib_eet_libeet_la_DEPENDENCIES = @EET_INTERNAL_LIBS@
 lib_eet_libeet_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
 
-if ! ENABLE_LIBLZ4
-EXTRA_DIST += static_libs/lz4/README
-endif
-
 ### Binary
 
 bin_PROGRAMS += bin/eet/eet

-- 




[EGIT] [core/efl] master 02/04: build: Do not show mkdir calls in silent mode

2015-05-07 Thread Stefan Schmidt
stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=733c8efa4ae90552c0b0994c8b1dcb3479997946

commit 733c8efa4ae90552c0b0994c8b1dcb3479997946
Author: Stefan Schmidt 
Date:   Thu May 7 09:51:58 2015 +0200

build: Do not show mkdir calls in silent mode

Keep this noise out of the build ouput. Still visible in verbose mode.
---
 src/Makefile_Edje.am| 5 +++--
 src/Makefile_Emotion.am | 5 +++--
 src/Makefile_Ethumb.am  | 5 +++--
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am
index adde801..b1acf0e 100644
--- a/src/Makefile_Edje.am
+++ b/src/Makefile_Edje.am
@@ -275,8 +275,9 @@ tests_edje_edje_suite_LDADD = @CHECK_LIBS@  
$(USE_EDJE_BIN_LIBS)
 tests_edje_edje_suite_DEPENDENCIES = @USE_EDJE_INTERNAL_LIBS@
 
 tests/edje/data/%.edj: tests/edje/data/%.edc bin/edje/edje_cc${EXEEXT}
-   $(MKDIR_P) tests/edje/data
-   $(AM_V_EDJ)$(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/tests/edje/data $< 
$@
+   $(AM_V_EDJ) \
+   $(MKDIR_P) tests/edje/data; \
+   $(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/tests/edje/data $< $@
 
 EDJE_DATA_FILES = tests/edje/data/test_layout.edc \
   tests/edje/data/complex_layout.edc
diff --git a/src/Makefile_Emotion.am b/src/Makefile_Emotion.am
index f3c7352..0390512 100644
--- a/src/Makefile_Emotion.am
+++ b/src/Makefile_Emotion.am
@@ -244,8 +244,9 @@ tests_emotion_emotion_test_LDADD = @USE_EDJE_LIBS@ 
@USE_EMOTION_LIBS@
 tests_emotion_emotion_test_DEPENDENCIES = @USE_EDJE_INTERNAL_LIBS@ 
@USE_EMOTION_INTERNAL_LIBS@
 
 tests/emotion/data/theme.edj: tests/emotion/data/theme.edc 
bin/edje/edje_cc${EXEEXT}
-   $(MKDIR_P) tests/emotion/data
-   $(AM_V_EDJ)$(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/tests/emotion/data 
$< $@
+   $(AM_V_EDJ) \
+   $(MKDIR_P) tests/emotion/data; \
+   $(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/tests/emotion/data $< $@
 
 emotiondatafilesdir = $(datadir)/emotion/data
 emotiondatafiles_DATA = tests/emotion/data/theme.edj
diff --git a/src/Makefile_Ethumb.am b/src/Makefile_Ethumb.am
index baa43d8..2f4b7de 100644
--- a/src/Makefile_Ethumb.am
+++ b/src/Makefile_Ethumb.am
@@ -55,8 +55,9 @@ modules_ethumb_emotion_module_la_LDFLAGS = -module 
@EFL_LTMODULE_FLAGS@
 modules_ethumb_emotion_module_la_LIBTOOLFLAGS = --tag=disable-static
 
 modules/ethumb/emotion/template.edj: modules/ethumb/emotion/template.edc 
modules/ethumb/emotion/placeholder.png bin/edje/edje_cc${EXEEXT}
-   $(MKDIR_P) modules/ethumb/emotion
-   $(AM_V_EDJ)$(EDJE_CC) $(EDJE_CC_FLAGS) -id 
$(srcdir)/modules/ethumb/emotion $< $@
+   $(AM_V_EDJ) \
+   $(MKDIR_P) modules/ethumb/emotion; \
+   $(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/modules/ethumb/emotion $< $@
 
 ethumbmoduleemotion_DATA = modules/ethumb/emotion/template.edj
 CLEANFILES += modules/ethumb/emotion/template.edj

-- 




[EGIT] [core/elementary] master 01/01: elm_genlist: Emitting signal when content or text is set in genlist item

2015-05-07 Thread Jee-Yong Um
hermet pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=26277620c0a073a21d078ef2706c352242b2f89b

commit 26277620c0a073a21d078ef2706c352242b2f89b
Author: Jee-Yong Um 
Date:   Thu May 7 16:21:57 2015 +0900

elm_genlist: Emitting signal when content or text is set in genlist item

Summary:
There could be a demand for providing subtle different item styles
according to the existence of icon or text swallowed in genlist item.
For example, if icon exists, genlist item shows icon, or show rectangle
where icon should be placed.
One style can have various form with this signal.

Reviewers: Hermet

Subscribers: Hermet

Differential Revision: https://phab.enlightenment.org/D2348
---
 src/lib/elm_genlist.c | 8 
 1 file changed, 8 insertions(+)

diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index f6e66e0..c41115f 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -307,6 +307,7 @@ _item_text_realize(Elm_Gen_Item *it,
const Eina_List *l;
const char *key;
char *s;
+   char buf[256];
 
if (!it->itc->func.text_get) return;
 
@@ -323,6 +324,9 @@ _item_text_realize(Elm_Gen_Item *it,
   {
  edje_object_part_text_escaped_set(target, key, s);
  free(s);
+
+ snprintf(buf, sizeof(buf), "elm,state,%s,visible", key);
+ edje_object_signal_emit(target, buf, "elm");
   }
 else
   {
@@ -342,6 +346,7 @@ _item_content_realize(Elm_Gen_Item *it,
 {
Eina_Bool tmp;
Evas_Object *content;
+   char buf[256];
 
if (!parts)
  {
@@ -384,6 +389,9 @@ _item_content_realize(Elm_Gen_Item *it,
  elm_widget_sub_object_add(WIDGET(it), content);
  if (eo_do_ret(EO_OBJ(it), tmp, elm_wdg_item_disabled_get()))
elm_widget_disabled_set(content, EINA_TRUE);
+
+ snprintf(buf, sizeof(buf), "elm,state,%s,visible", key);
+ edje_object_signal_emit(target, buf, "elm");
   }
  }
 }

-- 




[EGIT] [core/efl] master 24/55: eina: add test case for eina_crc function in eina module.

2015-05-07 Thread vivek
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=48dea342409fffcdd824b5d0ed00a180782b3459

commit 48dea342409fffcdd824b5d0ed00a180782b3459
Author: vivek 
Date:   Wed Apr 22 15:37:32 2015 +0200

eina: add test case for eina_crc function in eina module.

Summary:
I added test cases using seed 0x, I was not
able to get crc value for different seeds online. Checked some of the 
links, but they are
using entirely different logic and value was not matching for other seed 
value.

Signed-off-by: vivek 

Reviewers: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2293

Signed-off-by: Cedric BAIL 
---
 src/Makefile_Eina.am   |  3 ++-
 src/tests/eina/eina_suite.c|  1 +
 src/tests/eina/eina_suite.h|  1 +
 src/tests/eina/eina_test_crc.c | 50 ++
 4 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/src/Makefile_Eina.am b/src/Makefile_Eina.am
index 160e7a9..6303510 100644
--- a/src/Makefile_Eina.am
+++ b/src/Makefile_Eina.am
@@ -285,7 +285,8 @@ tests/eina/eina_test_barrier.c \
 tests/eina/eina_test_tmpstr.c \
 tests/eina/eina_test_trash.c \
 tests/eina/eina_test_lock.c \
-tests/eina/eina_test_xattr.c
+tests/eina/eina_test_xattr.c \
+tests/eina/eina_test_crc.c
 # tests/eina/eina_test_model.c
 
 
diff --git a/src/tests/eina/eina_suite.c b/src/tests/eina/eina_suite.c
index 6e16d8e..1a08480 100644
--- a/src/tests/eina/eina_suite.c
+++ b/src/tests/eina/eina_suite.c
@@ -79,6 +79,7 @@ static const Eina_Test_Case etc[] = {
 #ifdef XATTR_TEST_DIR
{ "Xattr", eina_test_xattr },
 #endif
+   {"Crc", eina_test_crc },
{ NULL, NULL }
 };
 
diff --git a/src/tests/eina/eina_suite.h b/src/tests/eina/eina_suite.h
index 433d95a..63d76cd 100644
--- a/src/tests/eina/eina_suite.h
+++ b/src/tests/eina/eina_suite.h
@@ -64,5 +64,6 @@ void eina_test_locking(TCase *tc);
 void eina_test_abi(TCase *tc);
 void eina_test_trash(TCase *tc);
 void eina_test_xattr(TCase *tc);
+void eina_test_crc(TCase *tc);
 
 #endif /* EINA_SUITE_H_ */
diff --git a/src/tests/eina/eina_test_crc.c b/src/tests/eina/eina_test_crc.c
new file mode 100644
index 000..34a00f3
--- /dev/null
+++ b/src/tests/eina/eina_test_crc.c
@@ -0,0 +1,50 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include 
+#include 
+#include 
+
+#include "eina_suite.h"
+#include "Eina.h"
+
+START_TEST(eina_crc_simple)
+{
+   unsigned int seed = 0x, i, ret;
+   const char *data[] =
+ {
+"Hello World",
+"This is to test crc",
+"4baAsru=A$r&e.-",
+"=-.^Y@~Lp5e1)b^",
+"J(uhX4)!&Q#2,jr"
+ };
+
+   unsigned int result[] =
+ {
+0x4a17b156,
+0x738bec38,
+0xcd56f3c6,
+0x9732147f,
+0x12c660a3
+ };
+   const char *s1 = "Hello ";
+   const char *s2 = "World";
+
+   for (i = 0; i < sizeof(data) / sizeof(data[0]); ++i)
+ {
+ret = eina_crc(data[i], strlen(data[i]), seed, EINA_TRUE);
+fail_if(ret != result[i]);
+ }
+
+   ret = eina_crc(s1, strlen(s1), 0x, EINA_TRUE);
+   ret = eina_crc(s2, strlen(s2), ret, EINA_FALSE);
+   fail_if(ret != result[0]);
+}
+END_TEST
+
+void eina_test_crc(TCase *tc)
+{
+   tcase_add_test(tc, eina_crc_simple);
+}

-- 




[EGIT] [core/efl] master 14/55: evas: improve _op_blend_mas_c_dp_neon intrinsics implementation.

2015-05-07 Thread Yury Usishchev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a0d0c9883995e0e04979f5382fc8954941b19edc

commit a0d0c9883995e0e04979f5382fc8954941b19edc
Author: Yury Usishchev 
Date:   Thu Apr 16 19:23:29 2015 +0200

evas: improve _op_blend_mas_c_dp_neon intrinsics implementation.

Summary:
Use vceqq and vbsl instead of twice as much vmovl and vadd instructions.
Replace vaddq_u8 with vaddq_u32.
This allows NEON code to behave exactly like C version.

Reviewers: cedric, raster

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2362

Signed-off-by: Cedric BAIL 
---
 .../evas_op_blend/op_blend_mask_color_neon.c   | 37 +++---
 1 file changed, 18 insertions(+), 19 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
index 0bc8c5c..a09277e 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
@@ -25,8 +25,6 @@
 static void
 _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, DATA32 c, DATA32 *d, 
int l) {
 #ifdef BUILD_NEON_INTRINSICS
-   uint16x8_t d0_16x8;
-   uint16x8_t d1_16x8;
uint16x8_t m_16x8;
uint16x8_t mc0_16x8;
uint16x8_t mc1_16x8;
@@ -36,14 +34,20 @@ _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, 
DATA32 c, DATA32 *d, in
uint32x2_t c_32x2;
uint32x2_t m_32x2;
uint32x4_t a_32x4;
+   uint32x4_t ad_32x4;
+   uint32x4_t cond_32x4;
uint32x4_t d_32x4;
uint32x4_t m_32x4;
+   uint32x4_t temp_32x4;
+   uint32x4_t mc_32x4;
+   uint32x4_t x0_32x4;
uint32x4_t x1_32x4;
uint8x16_t a_8x16;
uint8x16_t d_8x16;
uint8x16_t m_8x16;
uint8x16_t mc_8x16;
uint8x16_t temp_8x16;
+   uint8x16_t x0_8x16;
uint8x16_t x1_8x16;
uint8x8_t a0_8x8;
uint8x8_t a1_8x8;
@@ -59,6 +63,8 @@ _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, 
DATA32 c, DATA32 *d, in
uint8x8_t temp1_8x8;
 
x1_8x16 = vdupq_n_u8(0x1);
+   x0_8x16 = vdupq_n_u8(0x0);
+   x0_32x4 = vreinterpretq_u32_u8(x0_8x16);
x255_16x8 = vdupq_n_u16(0xff);
x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
c_32x2 = vdup_n_u32(c);
@@ -66,7 +72,7 @@ _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, 
DATA32 c, DATA32 *d, in
 
DATA32 *start = d;
int size = l;
-   DATA32 *end = start + (size & ~7);
+   DATA32 *end = start + (size & ~3);
while (start < end) {
   int k = *((int *)m);
   if (k == 0)
@@ -77,7 +83,6 @@ _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, 
DATA32 c, DATA32 *d, in
   }
 
   m_32x2 = vld1_lane_u32((DATA32*)m, m_32x2, 0);
-
   d_32x4 = vld1q_u32(start);
 
   m_8x8 = vreinterpret_u8_u32(m_32x2);
@@ -94,15 +99,15 @@ _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, 
DATA32 c, DATA32 *d, in
 
   mc0_16x8 = vmull_u8(m0_8x8, c_8x8);
   mc1_16x8 = vmull_u8(m1_8x8, c_8x8);
-
   mc0_16x8 = vaddq_u16(mc0_16x8, x255_16x8);
   mc1_16x8 = vaddq_u16(mc1_16x8, x255_16x8);
 
   mc0_8x8 = vshrn_n_u16(mc0_16x8, 8);
   mc1_8x8 = vshrn_n_u16(mc1_16x8, 8);
-
   mc_8x16 = vcombine_u8(mc0_8x8, mc1_8x8);
-  a_8x16 = vmvnq_u8(mc_8x16);
+
+  a_8x16 = vsubq_u8(x0_8x16, mc_8x16);
+
   a_32x4 = vreinterpretq_u32_u8(a_8x16);
   a_32x4 = vshrq_n_u32(a_32x4, 24);
   a_32x4 = vmulq_u32(a_32x4, x1_32x4);
@@ -112,35 +117,29 @@ _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, 
DATA32 c, DATA32 *d, in
   a1_8x8 = vget_high_u8(a_8x16);
 
   d_8x16 = vreinterpretq_u8_u32(d_32x4);
-
   d0_8x8 = vget_low_u8(d_8x16);
   d1_8x8 = vget_high_u8(d_8x16);
 
-  d0_16x8 = vmovl_u8(d0_8x8);
-  d1_16x8 = vmovl_u8(d1_8x8);
-
   temp0_16x8 = vmull_u8(a0_8x8, d0_8x8);
   temp1_16x8 = vmull_u8(a1_8x8, d1_8x8);
-
-  temp0_16x8 = vaddq_u16(temp0_16x8, d0_16x8);
-  temp1_16x8 = vaddq_u16(temp1_16x8, d1_16x8);
-
   temp0_8x8 = vshrn_n_u16(temp0_16x8,8);
   temp1_8x8 = vshrn_n_u16(temp1_16x8,8);
 
   temp_8x16 = vcombine_u8(temp0_8x8, temp1_8x8);
+  temp_32x4 = vreinterpretq_u32_u8(temp_8x16);
 
-  d_8x16 = vaddq_u8(mc_8x16, temp_8x16);
+  cond_32x4 = vceqq_u32(a_32x4, x0_32x4);
+  ad_32x4 = vbslq_u32(cond_32x4, d_32x4, temp_32x4);
 
-  d_32x4 = vreinterpretq_u32_u8(d_8x16);
+  mc_32x4 = vreinterpretq_u32_u8(mc_8x16);
+  d_32x4 = vaddq_u32(mc_32x4, ad_32x4);
 
   vst1q_u32(start, d_32x4);
 
   start+=4;
   m+=4;
-
}
-   end += (size & 7);
+   end += (size & 3);
while (start <  end) {
   DATA32 a = *m;
   DATA32 mc = MUL_SYM(a, c);

-- 




[EGIT] [core/efl] master 23/55: eina: add CRC implementation to Eina module.

2015-05-07 Thread vivek
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a2f2d942c6e49e74990a0c56d38de343cf42d696

commit a2f2d942c6e49e74990a0c56d38de343cf42d696
Author: vivek 
Date:   Wed Apr 22 15:34:33 2015 +0200

eina: add CRC implementation to Eina module.

Summary:
Added eina_crc function in eina to calculate crc for the key passed and
added eina_hash_crc function for hashing using crc

Signed-off-by: vivek 

Reviewers: Sergeant_Whitespace, cedric

Reviewed By: cedric

Subscribers: Sergeant_Whitespace, cedric

Differential Revision: https://phab.enlightenment.org/D2260

Signed-off-by: Cedric BAIL 
---
 src/Makefile_Eina.am|   6 +-
 src/lib/eina/Eina.h |   1 +
 src/lib/eina/eina_crc.c | 320 
 src/lib/eina/eina_crc.h |  43 +++
 4 files changed, 368 insertions(+), 2 deletions(-)

diff --git a/src/Makefile_Eina.am b/src/Makefile_Eina.am
index ebde225..160e7a9 100644
--- a/src/Makefile_Eina.am
+++ b/src/Makefile_Eina.am
@@ -87,7 +87,8 @@ lib/eina/eina_cow.h \
 lib/eina/eina_inline_unicode.x \
 lib/eina/eina_thread_queue.h \
 lib/eina/eina_matrix.h \
-lib/eina/eina_quad.h
+lib/eina/eina_quad.h \
+lib/eina/eina_crc.h
 
 lib_eina_libeina_la_SOURCES = \
 lib/eina/eina_abi.c \
@@ -144,7 +145,8 @@ lib/eina/eina_private.h \
 lib/eina/eina_strbuf_common.h \
 lib/eina/eina_thread_queue.c \
 lib/eina/eina_matrix.c \
-lib/eina/eina_quad.c
+lib/eina/eina_quad.c \
+lib/eina/eina_crc.c
 
 # Will be back for developper after 1.2
 # lib/eina/eina_model.c \
diff --git a/src/lib/eina/Eina.h b/src/lib/eina/Eina.h
index 0f6851a..672c094 100644
--- a/src/lib/eina/Eina.h
+++ b/src/lib/eina/Eina.h
@@ -263,6 +263,7 @@ extern "C" {
 #include 
 #include 
 #include 
+#include 
 
 #ifdef __cplusplus
 }
diff --git a/src/lib/eina/eina_crc.c b/src/lib/eina/eina_crc.c
new file mode 100644
index 000..29ec08c
--- /dev/null
+++ b/src/lib/eina/eina_crc.c
@@ -0,0 +1,320 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include 
+#include 
+#include 
+#include 
+
+#include "eina_crc.h"
+
+#define POLYNOMIAL 0xEDB88320
+
+static const unsigned int table[8][256] =
+{
+   {
+  
0x,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3,
+  
0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91,
+  
0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,0x6DDDE4EB,0xF4D4B551,0x83D385C7,
+  
0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,
+  
0x3B6E20C8,0x4C69105E,0xD56041E4,0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,
+  
0x35B5A8FA,0x42B2986C,0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,
+  
0x26D930AC,0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,
+  
0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,0xB6662D3D,
+  
0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,0x9FBFE4A5,0xE8B8D433,
+  
0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,0x086D3D2D,0x91646C97,0xE6635C01,
+  
0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,
+  
0x65B0D9C6,0x12B7E950,0x8BBEB8EA,0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,
+  
0x4DB26158,0x3AB551CE,0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,
+  
0x4369E96A,0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,
+  
0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,0xCE61E49F,
+  
0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,0xB7BD5C3B,0xC0BA6CAD,
+  
0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,0x9DD277AF,0x04DB2615,0x73DC1683,
+  
0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,
+  
0xF00F9344,0x8708A3D2,0x1E01F268,0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,
+  
0xFED41B76,0x89D32BE0,0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,
+  
0xD6D6A3E8,0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
+  
0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,0x4669BE79,
+  
0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,0x220216B9,0x5505262F,
+  
0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,
+  
0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,
+  
0x95BF4A82,0xE2B87A14,0x7BB12BAE,0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,
+  
0x86D3D2D4,0xF1D4E242,0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,
+  
0x88085AE6,0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,
+  
0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B

[EGIT] [core/efl] master 11/55: evas: implement _op_blend_p_dp_neon and _op_blend_pas_dp_neon in NEON intrinsics.

2015-05-07 Thread Yury Usishchev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9caa6a3597ce5d6cfcb8c99cc4ada4a88f8ad37c

commit 9caa6a3597ce5d6cfcb8c99cc4ada4a88f8ad37c
Author: Yury Usishchev 
Date:   Wed Apr 15 17:24:03 2015 +0200

evas: implement _op_blend_p_dp_neon and _op_blend_pas_dp_neon in NEON 
intrinsics.

Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2311
---
 .../common/evas_op_blend/op_blend_pixel_neon.c | 245 ++---
 1 file changed, 219 insertions(+), 26 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
index 3c32790..e81466c 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
@@ -1,17 +1,121 @@
+#ifdef BUILD_NEON
+#ifdef BUILD_NEON_INTRINSICS
+#include 
+#endif
+#endif
 /* blend pixel --> dst */
 
 #ifdef BUILD_NEON
 static void
 _op_blend_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
 #ifdef BUILD_NEON_INTRINSICS
-   DATA32 *e;
-   int alpha;
-   UNROLL8_PLD_WHILE(d, l, e,
- {
-alpha = 256 - (*s >> 24);
-*d = *s++ + MUL_256(alpha, *d);
-d++;
- });
+   uint16x8_t alpha00_16x8;
+   uint16x8_t alpha01_16x8;
+   uint16x8_t alpha10_16x8;
+   uint16x8_t alpha11_16x8;
+   uint16x8_t d00_16x8;
+   uint16x8_t d01_16x8;
+   uint16x8_t d10_16x8;
+   uint16x8_t d11_16x8;
+   uint32x4_t alpha0_32x4;
+   uint32x4_t alpha1_32x4;
+   uint32x4_t d0_32x4;
+   uint32x4_t d1_32x4;
+   uint32x4_t s0_32x4;
+   uint32x4_t s1_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t alpha0_8x16;
+   uint8x16_t alpha1_8x16;
+   uint8x16_t d0_8x16;
+   uint8x16_t d1_8x16;
+   uint8x16_t s0_8x16;
+   uint8x16_t s1_8x16;
+   uint8x16_t x1_8x16;
+   uint8x16_t x255_8x16;
+   uint8x8_t alpha00_8x8;
+   uint8x8_t alpha01_8x8;
+   uint8x8_t alpha10_8x8;
+   uint8x8_t alpha11_8x8;
+   uint8x8_t d00_8x8;
+   uint8x8_t d01_8x8;
+   uint8x8_t d10_8x8;
+   uint8x8_t d11_8x8;
+
+   x1_8x16 = vdupq_n_u8(0x1);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+   x255_8x16 = vdupq_n_u8(0xff);
+
+   DATA32 *start = d;
+   int size = l;
+   DATA32 *end = start + (size & ~7);
+   while (start < end)
+   {
+  s0_32x4 = vld1q_u32(s);
+  s1_32x4 = vld1q_u32(s+4);
+
+  d0_32x4 = vld1q_u32(start);
+  d1_32x4 = vld1q_u32(start+4);
+
+  alpha0_32x4 = vshrq_n_u32(s0_32x4, 24);
+  alpha1_32x4 = vshrq_n_u32(s1_32x4, 24);
+
+  alpha0_32x4 = vmulq_u32(x1_32x4, alpha0_32x4);
+  alpha1_32x4 = vmulq_u32(x1_32x4, alpha1_32x4);
+
+  alpha0_8x16 = vreinterpretq_u8_u32(alpha0_32x4);
+  alpha1_8x16 = vreinterpretq_u8_u32(alpha1_32x4);
+
+  alpha0_8x16 = vsubq_u8(x255_8x16, alpha0_8x16);
+  alpha1_8x16 = vsubq_u8(x255_8x16, alpha1_8x16);
+
+  alpha10_8x8 = vget_low_u8(alpha1_8x16);
+  alpha11_8x8 = vget_high_u8(alpha1_8x16);
+  alpha00_8x8 = vget_low_u8(alpha0_8x16);
+  alpha01_8x8 = vget_high_u8(alpha0_8x16);
+  d0_8x16 = vreinterpretq_u8_u32(d0_32x4);
+  d1_8x16 = vreinterpretq_u8_u32(d1_32x4);
+  d00_8x8 = vget_low_u8(d0_8x16);
+  d01_8x8 = vget_high_u8(d0_8x16);
+  d10_8x8 = vget_low_u8(d1_8x16);
+  d11_8x8 = vget_high_u8(d1_8x16);
+  alpha00_16x8 = vmull_u8(alpha00_8x8, d00_8x8);
+  alpha01_16x8 = vmull_u8(alpha01_8x8, d01_8x8);
+  alpha10_16x8 = vmull_u8(alpha10_8x8, d10_8x8);
+  alpha11_16x8 = vmull_u8(alpha11_8x8, d11_8x8);
+  d00_16x8 = vmovl_u8(d00_8x8);
+  d01_16x8 = vmovl_u8(d01_8x8);
+  d10_16x8 = vmovl_u8(d10_8x8);
+  d11_16x8 = vmovl_u8(d11_8x8);
+  alpha00_16x8 = vaddq_u16(alpha00_16x8, d00_16x8);
+  alpha01_16x8 = vaddq_u16(alpha01_16x8, d01_16x8);
+  alpha10_16x8 = vaddq_u16(alpha10_16x8, d10_16x8);
+  alpha11_16x8 = vaddq_u16(alpha11_16x8, d11_16x8);
+  alpha00_8x8 = vshrn_n_u16(alpha00_16x8,8);
+  alpha01_8x8 = vshrn_n_u16(alpha01_16x8,8);
+  alpha10_8x8 = vshrn_n_u16(alpha10_16x8,8);
+  alpha11_8x8 = vshrn_n_u16(alpha11_16x8,8);
+  alpha0_8x16 = vcombine_u8(alpha00_8x8, alpha01_8x8);
+  alpha1_8x16 = vcombine_u8(alpha10_8x8, alpha11_8x8);
+  s0_8x16 = vreinterpretq_u8_u32(s0_32x4);
+  s1_8x16 = vreinterpretq_u8_u32(s1_32x4);
+  d0_8x16 = vaddq_u8(s0_8x16, alpha0_8x16);
+  d1_8x16 = vaddq_u8(s1_8x16, alpha1_8x16);
+  d0_32x4 = vreinterpretq_u32_u8(d0_8x16);
+  d1_32x4 = vreinterpretq_u32_u8(d1_8x16);
+
+  vst1q_u32(start, d0_32x4);
+  vst1q_u32(start+4, d1_32x4);
+  s+=8;
+  start+=8;
+   }
+   end += (size & 7);
+   while (start <  end)
+   {
+  int alpha;
+  alpha = 256 - (*s >> 24);
+  *start = *s++ + MUL_256(alpha, *start);
+  start++;
+   }
 #else
 #define AP "blend_p_dp_"

[EGIT] [core/efl] master 27/55: eet: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7b52ecc9b9ae2f37d8771060e12f1d1f1e165265

commit 7b52ecc9b9ae2f37d8771060e12f1d1f1e165265
Author: Cedric BAIL 
Date:   Tue Apr 28 14:23:37 2015 +0200

eet: remove the need to order the header correctly for Windows.
---
 src/lib/eet/Eet.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/eet/Eet.h b/src/lib/eet/Eet.h
index 923f79d..8ffc1b8 100644
--- a/src/lib/eet/Eet.h
+++ b/src/lib/eet/Eet.h
@@ -4821,9 +4821,11 @@ eet_connection_close(Eet_Connection *conn,
  Eina_Bool *on_going);
 
 /***/
-
 #ifdef __cplusplus
 }
 #endif /* ifdef __cplusplus */
 
+#undef EAPI
+#define EAPI
+
 #endif /* ifndef _EET_H */

-- 




[EGIT] [core/efl] master 05/55: evas: fix indexation of grid (it neccessary for future tangent calculation) in Evas 3D examples

2015-05-07 Thread Bogdan Devichev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=330159d2558b83f8018db09a37b530bac54711c9

commit 330159d2558b83f8018db09a37b530bac54711c9
Author: Bogdan Devichev 
Date:   Wed Apr 15 17:00:36 2015 +0200

evas: fix indexation of grid (it neccessary for future tangent calculation) 
in Evas 3D examples

Summary: New indexation for more easy calculation of tangents.

Reviewers: Hermet, raster, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2332

Signed-off-by: Cedric BAIL 
---
 src/examples/evas/evas-3d-primitives.c | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/examples/evas/evas-3d-primitives.c 
b/src/examples/evas/evas-3d-primitives.c
index baee7a1..f737002 100644
--- a/src/examples/evas/evas-3d-primitives.c
+++ b/src/examples/evas/evas-3d-primitives.c
@@ -246,13 +246,13 @@ _generate_grid_indices(unsigned short *indices, int count)
for (j = 0; j < count; j++)
  for (i = 0; i < count; i++)
{
-  *index++ = (unsigned short)(i + vccount * j);
-  *index++ = i + vccount * (j + 1);
-  *index++ = i + 1 + vccount * (j + 1);
+  *index++ = (i * vccount) + j;
+  *index++ = (i * vccount) + j + 1;
+  *index++ = ((i + 1) * vccount) + j;
 
-  *index++ = i + vccount * j;
-  *index++ = i + 1 +  vccount * j;
-  *index++ = i + vccount * (j + 1) + 1;
+  *index++ = ((i + 1) * vccount) + j;
+  *index++ = (i * vccount) + j + 1;
+  *index++ = ((i + 1) * vccount) + j + 1;
}
 }
 

-- 




[EGIT] [core/efl] master 12/55: evas: implement _op_blend_mas_c_dp_neon in NEON intrinsics.

2015-05-07 Thread Yury Usishchev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d2c5730b812f32b1e0a193e0011afead5110fc08

commit d2c5730b812f32b1e0a193e0011afead5110fc08
Author: Yury Usishchev 
Date:   Wed Apr 15 17:27:58 2015 +0200

evas: implement _op_blend_mas_c_dp_neon in NEON intrinsics.

Reviewers: raster

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2312
---
 .../evas_op_blend/op_blend_mask_color_neon.c   | 150 ++---
 1 file changed, 128 insertions(+), 22 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
index dbeb063..0bc8c5c 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
@@ -1,3 +1,8 @@
+#ifdef BUILD_NEON
+#ifdef BUILD_NEON_INTRINSICS
+#include 
+#endif
+#endif
 #define NEONDEBUG 0
 
 
@@ -20,28 +25,129 @@
 static void
 _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, DATA32 c, DATA32 *d, 
int l) {
 #ifdef BUILD_NEON_INTRINSICS
-   DATA32 *e;
-   int alpha = 256 - (c >> 24);
-   UNROLL8_PLD_WHILE(d, l, e,
- {
-DATA32 a = *m;
-switch(a)
-  {
-  case 0:
- break;
-  case 255:
- *d = c + MUL_256(alpha, *d);
- break;
-  default:
-   {
-  DATA32 mc = MUL_SYM(a, c);
-  a = 256 - (mc >> 24);
-  *d = mc + MUL_256(a, *d);
-   }
- break;
-  }
-m++;  d++;
- });
+   uint16x8_t d0_16x8;
+   uint16x8_t d1_16x8;
+   uint16x8_t m_16x8;
+   uint16x8_t mc0_16x8;
+   uint16x8_t mc1_16x8;
+   uint16x8_t temp0_16x8;
+   uint16x8_t temp1_16x8;
+   uint16x8_t x255_16x8;
+   uint32x2_t c_32x2;
+   uint32x2_t m_32x2;
+   uint32x4_t a_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t m_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t a_8x16;
+   uint8x16_t d_8x16;
+   uint8x16_t m_8x16;
+   uint8x16_t mc_8x16;
+   uint8x16_t temp_8x16;
+   uint8x16_t x1_8x16;
+   uint8x8_t a0_8x8;
+   uint8x8_t a1_8x8;
+   uint8x8_t c_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t m0_8x8;
+   uint8x8_t m1_8x8;
+   uint8x8_t m_8x8;
+   uint8x8_t mc0_8x8;
+   uint8x8_t mc1_8x8;
+   uint8x8_t temp0_8x8;
+   uint8x8_t temp1_8x8;
+
+   x1_8x16 = vdupq_n_u8(0x1);
+   x255_16x8 = vdupq_n_u16(0xff);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+   c_32x2 = vdup_n_u32(c);
+   c_8x8 = vreinterpret_u8_u32(c_32x2);
+
+   DATA32 *start = d;
+   int size = l;
+   DATA32 *end = start + (size & ~7);
+   while (start < end) {
+  int k = *((int *)m);
+  if (k == 0)
+  {
+ m+=4;
+ start+=4;
+ continue;
+  }
+
+  m_32x2 = vld1_lane_u32((DATA32*)m, m_32x2, 0);
+
+  d_32x4 = vld1q_u32(start);
+
+  m_8x8 = vreinterpret_u8_u32(m_32x2);
+  m_16x8 = vmovl_u8(m_8x8);
+  m_8x16 = vreinterpretq_u8_u16(m_16x8);
+  m_8x8 = vget_low_u8(m_8x16);
+  m_16x8 = vmovl_u8(m_8x8);
+  m_32x4 = vreinterpretq_u32_u16(m_16x8);
+
+  m_32x4 = vmulq_u32(m_32x4, x1_32x4);
+  m_8x16 = vreinterpretq_u8_u32(m_32x4);
+  m0_8x8 = vget_low_u8(m_8x16);
+  m1_8x8 = vget_high_u8(m_8x16);
+
+  mc0_16x8 = vmull_u8(m0_8x8, c_8x8);
+  mc1_16x8 = vmull_u8(m1_8x8, c_8x8);
+
+  mc0_16x8 = vaddq_u16(mc0_16x8, x255_16x8);
+  mc1_16x8 = vaddq_u16(mc1_16x8, x255_16x8);
+
+  mc0_8x8 = vshrn_n_u16(mc0_16x8, 8);
+  mc1_8x8 = vshrn_n_u16(mc1_16x8, 8);
+
+  mc_8x16 = vcombine_u8(mc0_8x8, mc1_8x8);
+  a_8x16 = vmvnq_u8(mc_8x16);
+  a_32x4 = vreinterpretq_u32_u8(a_8x16);
+  a_32x4 = vshrq_n_u32(a_32x4, 24);
+  a_32x4 = vmulq_u32(a_32x4, x1_32x4);
+
+  a_8x16 = vreinterpretq_u8_u32(a_32x4);
+  a0_8x8 = vget_low_u8(a_8x16);
+  a1_8x8 = vget_high_u8(a_8x16);
+
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  d0_16x8 = vmovl_u8(d0_8x8);
+  d1_16x8 = vmovl_u8(d1_8x8);
+
+  temp0_16x8 = vmull_u8(a0_8x8, d0_8x8);
+  temp1_16x8 = vmull_u8(a1_8x8, d1_8x8);
+
+  temp0_16x8 = vaddq_u16(temp0_16x8, d0_16x8);
+  temp1_16x8 = vaddq_u16(temp1_16x8, d1_16x8);
+
+  temp0_8x8 = vshrn_n_u16(temp0_16x8,8);
+  temp1_8x8 = vshrn_n_u16(temp1_16x8,8);
+
+  temp_8x16 = vcombine_u8(temp0_8x8, temp1_8x8);
+
+  d_8x16 = vaddq_u8(mc_8x16, temp_8x16);
+
+  d_32x4 = vreinterpretq_u32_u8(d_8x16);
+
+  vst1q_u32(start, d_32x4);
+
+  start+=4;
+  m+=4;
+
+   }
+   e

[EGIT] [core/efl] master 40/55: eolian: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c4cb972a83b377ec0e2de0ca63214597850d052e

commit c4cb972a83b377ec0e2de0ca63214597850d052e
Author: Cedric BAIL 
Date:   Tue Apr 28 16:52:22 2015 +0200

eolian: remove the need to order the header correctly for Windows.
---
 src/lib/eolian/Eolian.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index d8c5e90..c2e07c5 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -2033,4 +2033,7 @@ EAPI Eina_Bool eolian_variable_is_extern(const 
Eolian_Variable *var);
 } // extern "C" {
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 46/55: eina: add test case for eina_hash_crc function.

2015-05-07 Thread vivek
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=edfd621d0619353a2d17c61718cef72b425e7cf6

commit edfd621d0619353a2d17c61718cef72b425e7cf6
Author: vivek 
Date:   Tue Apr 28 23:34:34 2015 +0200

eina: add test case for eina_hash_crc function.

Summary:
Added test case for eina_hash_crc function which uses crc32 for hashing
algorithm

Signed-off-by: vivek 

Reviewers: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2296

Signed-off-by: Cedric BAIL 
---
 src/tests/eina/eina_test_hash.c | 85 +
 1 file changed, 85 insertions(+)

diff --git a/src/tests/eina/eina_test_hash.c b/src/tests/eina/eina_test_hash.c
index 0471d5e..b2f9704 100644
--- a/src/tests/eina/eina_test_hash.c
+++ b/src/tests/eina/eina_test_hash.c
@@ -26,6 +26,29 @@
 
 #include "eina_suite.h"
 #include "Eina.h"
+#include "eina_hash.h"
+
+#define EINA_HASH_BUCKET_SIZE   8
+
+static unsigned int
+_eina_string_key_length(const char *key)
+{
+   if (!key)
+ return 0;
+
+   return (int)strlen(key) + 1;
+}
+
+static int
+_eina_string_key_cmp(const char *key1, int key1_length,
+ const char *key2, int key2_length)
+{
+   int delta;
+
+   delta = key1_length - key2_length;
+   if (delta) return delta;
+   return strcmp(key1, key2);
+}
 
 static Eina_Bool
 eina_foreach_check(EINA_UNUSED const Eina_Hash *hash,
@@ -103,6 +126,67 @@ START_TEST(eina_hash_simple)
 }
 END_TEST
 
+START_TEST(eina_test_hash_crc)
+{
+   Eina_Hash *hash = NULL;
+   int *test;
+   int array[] = { 1, 42, 4, 5, 6 };
+
+   fail_if(eina_init() != 2);
+
+   hash = eina_hash_new(EINA_KEY_LENGTH(_eina_string_key_length),
+EINA_KEY_CMP(_eina_string_key_cmp),
+EINA_KEY_HASH(eina_hash_crc),
+NULL,
+EINA_HASH_BUCKET_SIZE);
+   fail_if(hash == NULL);
+
+   fail_if(eina_hash_add(hash, "1", &array[0]) != EINA_TRUE);
+   fail_if(eina_hash_add(hash, "42", &array[1]) != EINA_TRUE);
+   fail_if(eina_hash_direct_add(hash, "4", &array[2]) != EINA_TRUE);
+   fail_if(eina_hash_direct_add(hash, "5", &array[3]) != EINA_TRUE);
+   fail_if(eina_hash_add(hash, "", "") != EINA_TRUE);
+
+   test = eina_hash_find(hash, "4");
+   fail_if(!test);
+   fail_if(*test != 4);
+
+   test = eina_hash_find(hash, "42");
+   fail_if(!test);
+   fail_if(*test != 42);
+
+   eina_hash_foreach(hash, eina_foreach_check, NULL);
+
+   test = eina_hash_modify(hash, "5", &array[4]);
+   fail_if(!test);
+   fail_if(*test != 5);
+
+   test = eina_hash_find(hash, "5");
+   fail_if(!test);
+   fail_if(*test != 6);
+
+   fail_if(eina_hash_population(hash) != 5);
+
+   fail_if(eina_hash_find(hash, "120") != NULL);
+
+   fail_if(eina_hash_del(hash, "5", NULL) != EINA_TRUE);
+   fail_if(eina_hash_find(hash, "5") != NULL);
+
+   fail_if(eina_hash_del(hash, NULL, &array[2]) != EINA_TRUE);
+   fail_if(eina_hash_find(hash, "4") != NULL);
+
+   fail_if(eina_hash_del(hash, NULL, &array[2]) != EINA_FALSE);
+
+   fail_if(eina_hash_del(hash, "1", NULL) != EINA_TRUE);
+   fail_if(eina_hash_del(hash, "42", NULL) != EINA_TRUE);
+
+   eina_hash_free(hash);
+
+   /* Same comment as eina_init */
+fail_if(eina_shutdown() != 1);
+}
+END_TEST
+
 START_TEST(eina_hash_extended)
 {
Eina_Hash *hash = NULL;
@@ -337,6 +421,7 @@ END_TEST
 void eina_test_hash(TCase *tc)
 {
tcase_add_test(tc, eina_hash_simple);
+   tcase_add_test(tc, eina_test_hash_crc);
tcase_add_test(tc, eina_hash_extended);
tcase_add_test(tc, eina_hash_double_item);
tcase_add_test(tc, eina_hash_all_int);

-- 




[EGIT] [core/efl] master 03/55: autotools: enable make check per individual modules.

2015-05-07 Thread kabeer khan
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=35119e7bfdc7c13c2041293f3d0b2ebe1fb7c313

commit 35119e7bfdc7c13c2041293f3d0b2ebe1fb7c313
Author: kabeer khan 
Date:   Wed Apr 15 16:58:11 2015 +0200

autotools: enable make check per individual modules.

Currently make check runs tests of whole EFL.Enabled running
of tests of individual modules by make check-

Signed-off-by: kabeer khan 
Signed-off-by: Cedric BAIL 
---
 Makefile.am | 69 +
 src/Makefile_Ecore.am   |  5 +++
 src/Makefile_Ecore_Audio_Cxx.am |  6 
 src/Makefile_Ecore_Con.am   |  6 
 src/Makefile_Ecore_Cxx.am   | 12 +++
 src/Makefile_Ector.am   |  6 
 src/Makefile_Edje.am|  6 
 src/Makefile_Edje_Cxx.am|  6 
 src/Makefile_Eet.am |  6 
 src/Makefile_Eet_Cxx.am |  7 +
 src/Makefile_Eeze.am|  7 +
 src/Makefile_Efreet.am  |  6 
 src/Makefile_Eina.am|  6 
 src/Makefile_Eina_Cxx.am|  6 
 src/Makefile_Eio.am |  6 
 src/Makefile_Eldbus.am  |  6 
 src/Makefile_Eldbus_Cxx.am  |  6 
 src/Makefile_Emile.am   |  6 
 src/Makefile_Eo.am  | 45 +++
 src/Makefile_Eolian.am  |  6 
 src/Makefile_Eolian_Cxx.am  |  6 
 src/Makefile_Evas.am|  6 
 src/Makefile_Evas_Cxx.am|  6 
 23 files changed, 247 insertions(+)

diff --git a/Makefile.am b/Makefile.am
index a756511..4bc6def 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -432,6 +432,75 @@ endif
 if EFL_ENABLE_COVERAGE
@$(MAKE) $(AM_MAKEFLAGS) lcov-report
 endif
+
+check: override DISABLE_SUBTESTS = 1
+check:
+   ifeq($(DISABLE_SUBTESTS), 1)
+   make check-recursive
+   endif
+
+check-eina:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eina
+check-eina-cxx:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eina-cxx
+check-ecore:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore
+check-ecore-audio-cxx:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore-audio-cxx
+check-ecore-con:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore-con
+check-ecore-cxx:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore-cxx
+check-ecore-cxx-compile:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-ecore-cxx-compile
+check-ector:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-ector
+check-edje:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-edje
+check-edje-cxx:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-edje-cxx
+check-eet:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eet
+check-eet-cxx:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eet-cxx
+check-eeze:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eeze
+check-efreet:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-efreet
+check-eio:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eio
+check-eldbus:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eldbus
+check-eldbus-cxx:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eldbus-cxx
+check-emile:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-emile
+check-eo:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo
+check-eo-composite-object:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-composite-object
+check-eo-constructors:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-constructors
+check-eo-function-overrides:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-function-overrides
+check-eo-interface:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-interface
+check-eo-mixin:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-mixin
+check-eo-text-access:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-text-access
+check-eo-signals:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-signals
+check-eo-children:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eo-children
+check-eolian:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eolian
+check-eolian-cxx:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-eolian-cxx
+check-evas:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-evas
+check-evas-cxx:
+   $(MAKE) $(AM_MAKEFLAGS) -C src check-evas-cxx
 endif
 
 # benchmark
diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am
index 738f929..36d84ec 100644
--- a/src/Makefile_Ecore.am
+++ b/src/Makefile_Ecore.am
@@ -257,6 +257,11 @@ if HAVE_ECORE_FB
 tests_ecore_ecore_suite_SOURCES += tests/ecore/ecore_test_ecore_fb.c
 endif
 
+check-ecore:
+   check_PROGRAMS=tests/ecore/ecore_suite
+   make check TESTS=tests/ecore/ecore_suite
+
+check-ecore: override DISABLE_SUBTESTS = 0
 endif
 
 EXTRA_DIST += \
diff --git a/src/Makefile_Ecore_Audio_Cxx.am b/src/Makefile_Ecore_Audio_Cxx.am
index d31d3ec..383228f 100644
--- a/src/Makefile_Ecore_Audio_Cxx.am
+++ b/src/Makefile_Ecore_Audio_Cxx.am
@@ -45,6 +45,12 @@ tests_ecore_audio_cxx_cxx_compile_test_CPPFLAGS = \
 tests_ecore_audio_cxx_cxx_compile_test_LDADD = @CHECK_LIBS@ @USE_ECORE_LIBS@
 tests_ecore_audio_cxx_cxx_compil

[EGIT] [core/efl] master 13/55: ecore_con: remove warning when not testing ftp/http push.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=68343123c1c5710da165bb9b1184b2ea53dd078b

commit 68343123c1c5710da165bb9b1184b2ea53dd078b
Author: Cedric BAIL 
Date:   Wed Apr 15 17:45:09 2015 +0200

ecore_con: remove warning when not testing ftp/http push.
---
 src/tests/ecore_con/ecore_con_test_ecore_con_url.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/tests/ecore_con/ecore_con_test_ecore_con_url.c 
b/src/tests/ecore_con/ecore_con_test_ecore_con_url.c
index 1732b3f..ec27523 100644
--- a/src/tests/ecore_con/ecore_con_test_ecore_con_url.c
+++ b/src/tests/ecore_con/ecore_con_test_ecore_con_url.c
@@ -11,7 +11,7 @@
 #include 
 
 #define COOKIEJAR "testcookieXX.jar"
-#define DEFAULT_LINK "www.google.com" 
+#define DEFAULT_LINK "www.google.com"
 
 typedef struct _url_test
 {

-- 




[EGIT] [core/efl] master 08/55: evas: torus is normalized in Evas_3D examples.

2015-05-07 Thread Bogdan Devichev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=88b30ef28c47106891d44f62798424c745ec1b8c

commit 88b30ef28c47106891d44f62798424c745ec1b8c
Author: Bogdan Devichev 
Date:   Wed Apr 15 17:03:24 2015 +0200

evas: torus is normalized in Evas_3D examples.

Reviewers: Hermet, raster, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2334

Signed-off-by: Cedric BAIL 
---
 src/examples/evas/evas-3d-primitives.c | 26 --
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/examples/evas/evas-3d-primitives.c 
b/src/examples/evas/evas-3d-primitives.c
index 41b3fde..393ee16 100644
--- a/src/examples/evas/evas-3d-primitives.c
+++ b/src/examples/evas/evas-3d-primitives.c
@@ -457,7 +457,7 @@ evas_3d_add_terrain_frame(Eo *mesh, int frame, int p, vec2 
tex_scale)
 }
 
 void
-evas_3d_add_torus_frame(Eo *mesh, int frame, float rratio, int p, vec2 
tex_scale)
+evas_3d_add_torus_frame(Eo *mesh, int frame, float ratio, int p, vec2 
tex_scale)
 {
int vcount, icount, vccount, i, j;
icount = p * p * 6;
@@ -470,6 +470,20 @@ evas_3d_add_torus_frame(Eo *mesh, int frame, float rratio, 
int p, vec2 tex_scale
 
d = 2 * M_PI / p;
 
+   float rratio;
+
+   if ((ratio > 1.0) || (ratio < 0.0))
+ {
+printf("Ratio of torus should be between 0.0 and 1.0. \n");
+printf("Ratio = %f is a bad value, so 0.25 is used like default 
ratio.\n",
+ratio);
+rratio = 0.25;
+ }
+   else
+ {
+rratio = ratio;
+ }
+
for (j = 0; j < vccount; j++)
  {
 theta = j * d;
@@ -480,16 +494,16 @@ evas_3d_add_torus_frame(Eo *mesh, int frame, float 
rratio, int p, vec2 tex_scale
  fi = i * d;
  sinfi = sin(fi);
  cosfi = cos(fi);
- vertices[i + j * vccount].x = (1 + rratio * cosfi) * costh;
- vertices[i + j * vccount].y = (1 + rratio * cosfi) * sinth;
- vertices[i + j * vccount].z = rratio * sinfi;
+ vertices[i + j * vccount].x = (1.0 - rratio + rratio * cosfi) * 
costh * 0.5;
+ vertices[i + j * vccount].y = (1.0 - rratio + rratio * cosfi) * 
sinth * 0.5;
+ vertices[i + j * vccount].z = rratio * sinfi * 0.5;
 
  normals[i + j * vccount].x = cosfi * costh;
  normals[i + j * vccount].y = cosfi * sinth;
  normals[i + j * vccount].z = sinfi;
 
- tangents[i + j * vccount].x = - sinfi * costh;
- tangents[i + j * vccount].y = - sinfi * sinth;
+ tangents[i + j * vccount].x = -sinfi * costh;
+ tangents[i + j * vccount].y = -sinfi * sinth;
  tangents[i + j * vccount].z = cosfi;
 
  _vec3_normalize(&normals[i + j * vccount]);

-- 




[EGIT] [core/efl] master 25/55: eina: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0dfb263a28691f70dd4fe385e2bdbe2b65cdbcf9

commit 0dfb263a28691f70dd4fe385e2bdbe2b65cdbcf9
Author: Cedric BAIL 
Date:   Tue Apr 28 14:21:27 2015 +0200

eina: remove the need to order the header correctly for Windows.
---
 src/lib/eina/Eina.h|  3 +++
 src/lib/eina/eina_module.h |  4 ++--
 src/lib/eina/eina_types.h  | 22 ++
 3 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/src/lib/eina/Eina.h b/src/lib/eina/Eina.h
index 672c094..b0b24ee 100644
--- a/src/lib/eina/Eina.h
+++ b/src/lib/eina/Eina.h
@@ -265,6 +265,9 @@ extern "C" {
 #include 
 #include 
 
+#undef EAPI
+#define EAPI
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/eina/eina_module.h b/src/lib/eina/eina_module.h
index 834dfa8..d1030b9 100644
--- a/src/lib/eina/eina_module.h
+++ b/src/lib/eina/eina_module.h
@@ -96,14 +96,14 @@ typedef void (*Eina_Module_Shutdown)(void);
  * declares the given function as the module initializer (__eina_module_init).
  * It must be of signature #Eina_Module_Init
  */
-#define EINA_MODULE_INIT(f) EAPI Eina_Module_Init __eina_module_init = &f
+#define EINA_MODULE_INIT(f) EXPORTAPI Eina_Module_Init __eina_module_init = &f
 
 /**
  * @def EINA_MODULE_SHUTDOWN
  * declares the given function as the module shutdownializer
  * (__eina_module_shutdown). It must be of signature #Eina_Module_Shutdown
  */
-#define EINA_MODULE_SHUTDOWN(f) EAPI Eina_Module_Shutdown 
__eina_module_shutdown = &f
+#define EINA_MODULE_SHUTDOWN(f) EXPORTAPI Eina_Module_Shutdown 
__eina_module_shutdown = &f
 
 extern EAPI Eina_Error EINA_ERROR_WRONG_MODULE;
 extern EAPI Eina_Error EINA_ERROR_MODULE_INIT_FAILED;
diff --git a/src/lib/eina/eina_types.h b/src/lib/eina/eina_types.h
index 0c92ae4..2e0c4d7 100644
--- a/src/lib/eina/eina_types.h
+++ b/src/lib/eina/eina_types.h
@@ -61,6 +61,28 @@
 # endif
 #endif
 
+#ifdef _WIN32
+# ifdef DLL_EXPORT
+#  define EXPORTAPI __declspec(dllexport)
+# else
+#  define EXPORTAPI
+# endif /* ! DLL_EXPORT */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EXPORTAPI __attribute__ ((visibility("default")))
+#  else
+#   define EXPORTAPI
+#  endif
+# else
+/**
+ * @def EAPI
+ * @brief Used to export functions(by changing visibility).
+ */
+#  define EXPORTAPI
+# endif
+#endif
+
 #include "eina_config.h"
 
 #ifdef EINA_UNUSED

-- 




[EGIT] [core/efl] master 02/55: ecore_audio: integrate Apple's CoreAudio to play sounds on OS X.

2015-05-07 Thread Jean Guyomarc'h
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=62e29b39f4df40fd3c0a6b17f7a16f0f8fc1d0c9

commit 62e29b39f4df40fd3c0a6b17f7a16f0f8fc1d0c9
Author: Jean Guyomarc'h 
Date:   Wed Apr 15 16:53:39 2015 +0200

ecore_audio: integrate Apple's CoreAudio to play sounds on OS X.

Summary:
Ecore_Audio now supports Apple's CoreAudio to play sounds read by 
libsndfile.
edje_multisense integrates this new feature to enable PLAY_SAMPLE on OS X.

Test Plan:
Compiles, links and installs fine on OS X.
Run terminology and elementary_test to hear sound played on user input.

Reviewers: raster, naguirre, cedric

Reviewed By: cedric

Subscribers: plamot, cedric

Differential Revision: https://phab.enlightenment.org/D2295

Signed-off-by: Cedric BAIL 
---
 configure.ac   |  70 +++-
 src/Makefile_Ecore_Audio.am|  21 +-
 src/lib/ecore_audio/Ecore_Audio.h  |   9 +-
 src/lib/ecore_audio/ecore_audio_core_audio.c   |  44 +++
 .../ecore_audio/ecore_audio_obj_out_core_audio.c   | 358 +
 .../ecore_audio/ecore_audio_obj_out_core_audio.h   |  15 +
 src/lib/ecore_audio/ecore_audio_out_core_audio.eo  |  12 +
 src/lib/ecore_audio/ecore_audio_private.h  |   6 +
 src/lib/edje/edje_multisense.c |  12 +
 9 files changed, 538 insertions(+), 9 deletions(-)

diff --git a/configure.ac b/configure.ac
index 45fa102..9eed98c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3208,6 +3208,54 @@ AC_ARG_ENABLE([pulseaudio],
],
[want_pulseaudio="yes"])
 
+if test "x${have_darwin}" = "xyes"; then
+   want_pulseaudio="no"
+   want_alsa="no"
+   want_coreaudio="yes"
+else
+   want_coreaudio="no"
+fi
+
+
+# CoreAudio flags
+if test "x${want_coreaudio}" = "xyes"; then
+   coreaudio_ldflags=""
+   have_coreaudio="no"
+   LIBS_save="$LIBS"
+   LIBS="$LIBS -framework CoreAudio"
+   AC_LINK_IFELSE(
+  [AC_LANG_PROGRAM(
+[[
+#include 
+]],
+[[
+UInt32 size;
+AudioDeviceID dev_id;
+AudioObjectPropertyAddress prop = {
+   kAudioHardwarePropertyDefaultOutputDevice,
+   kAudioObjectPropertyScopeGlobal,
+   kAudioObjectPropertyElementMaster
+};
+size = sizeof(AudioDeviceID);
+AudioObjectGetPropertyData(kAudioObjectSystemObject, &prop, 0, NULL,
+  &size, &dev_id);
+]])],
+[
+ have_coreaudio="yes"
+ coreaudio_ldflags="-framework CoreAudio"
+],
+[have_coreaudio="no"])
+  LIBS="$LIBS_save"
+  AC_MSG_CHECKING([whether Apple CoreAudio framework is supported])
+  AC_MSG_RESULT([${have_coreaudio}])
+fi
+AC_SUBST(coreaudio_ldflags)
+if test "x${have_coreaudio}" = "xyes"; then
+   AC_DEFINE([HAVE_COREAUDIO], [1], [CoreAudio support enabled])
+else
+   AC_DEFINE([HAVE_COREAUDIO], [0], [CoreAudio support disabled])
+fi
+
 
 ### Default values
 
@@ -3234,6 +3282,7 @@ EFL_EVAL_PKGS([ECORE_AUDIO])
 EFL_ADD_FEATURE([ECORE_AUDIO], [alsa])
 EFL_ADD_FEATURE([ECORE_AUDIO], [pulseaudio])
 EFL_ADD_FEATURE([ECORE_AUDIO], [sndfile])
+EFL_ADD_FEATURE([ECORE_AUDIO], [coreaudio])
 
 ### Checks for header files
 
@@ -3250,6 +3299,7 @@ EFL_ADD_FEATURE([ECORE_AUDIO], [sndfile])
 EFL_LIB_END_OPTIONAL([Ecore_Audio])
 AM_CONDITIONAL([HAVE_ECORE_AUDIO_PULSE], [test "x${want_pulseaudio}" = "xyes"])
 AM_CONDITIONAL([HAVE_ECORE_AUDIO_SNDFILE], [test "x${want_sndfile}" = "xyes"])
+AM_CONDITIONAL([HAVE_ECORE_AUDIO_CORE_AUDIO], [test "x${want_coreaudio}" = 
"xyes"])
 
  End of Ecore_Audio
 
@@ -4117,7 +4167,7 @@ EFL_LIB_START([Edje])
 ### Additional options to configure
 
 ### Default values
-want_multisense="${want_pulseaudio}"
+
 AC_ARG_ENABLE([multisense],
[AS_HELP_STRING([--enable-multisense],[Enable multisense support. 
@<:@default=enabled@:>@])],
[
@@ -4128,7 +4178,13 @@ AC_ARG_ENABLE([multisense],
CFOPT_WARNING="xyes"
 fi
],
-   [want_multisense="${want_pulseaudio}"])
+   [
+if test "x${want_pulseaudio}" = "xyes" -o "x${want_coreaudio}" = "xyes"; 
then
+   want_multisense="yes"
+else
+   want_multisense="no"
+fi
+   ])
 
 # TODO: should we keep or remove these?
 want_edje_program_cache="no"
@@ -4960,11 +5016,12 @@ if test -n "$CFOPT_WARNING"; then
 echo "Reconsider disabling audio."
 echo 
"_"
   fi
-  if test "x${want_pulseaudio}" = "xno"; then
+  if test "x${have_darwin}" = "xno" -a "x${want_pulseaudio}" = "xno"; then
 echo 
"_"
-echo "The only audio output method supported by Ecore right now is via"
-echo "Pulseaudio. You have disabled that and likely have broken a whole"
-echo "bunch of things in the process. Reconsider your configure options."
+echo "The only audio output method supported by Ecore right now on your"
+echo "syste

[EGIT] [core/efl] master 19/55: evas: use Evas_GL_image for generate texture unit for Evas_3D_Texture.

2015-05-07 Thread Oleksandr Shcherbina
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d88ccf06a5f6ebcfc68dcc21e55a241f64ff9aa9

commit d88ccf06a5f6ebcfc68dcc21e55a241f64ff9aa9
Author: Oleksandr Shcherbina 
Date:   Wed Apr 22 15:19:02 2015 +0200

evas: use Evas_GL_image for generate texture unit for Evas_3D_Texture.

Summary:
Used engine function for load image/data and use texture unit through
Evas_GL_Image object
Used Evas_ColorSpace format instead Evas_3D_Color/Pixel format
Added transformation matrix for adjusting texture unit coordinates in shader
Added property in Evas_3D_Texture for mark possibility get texture without 
atlas
(see https://phab.enlightenment.org/conpherence/54/, I suppose it will done
after this patch)

Reviewers: Hermet, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2371

Signed-off-by: Cedric BAIL 
---
 src/lib/evas/Evas_Eo.h |  38 
 src/lib/evas/canvas/evas_3d_texture.c  |  84 ++--
 src/lib/evas/canvas/evas_3d_texture.eo |  30 ++-
 src/lib/evas/include/evas_3d_utils.h   |  30 +++
 src/lib/evas/include/evas_private.h|  12 +-
 src/modules/evas/engines/gl_common/evas_gl_3d.c| 230 -
 .../evas/engines/gl_common/evas_gl_3d_common.h |   7 +-
 .../evas/engines/gl_common/evas_gl_3d_private.h|  26 ++-
 .../evas/engines/gl_common/evas_gl_3d_shader.c |  72 +++
 .../gl_common/shader_3d/evas_gl_3d_shaders.x   | 214 ++-
 .../evas/engines/gl_common/shader_3d/include.shd   |  14 +-
 .../shader_3d/parallax_occlusion_frag.shd  |  14 +-
 .../gl_common/shader_3d/shadow_map_frag.shd|  12 +-
 src/modules/evas/engines/gl_generic/evas_engine.c  |  60 ++
 .../evas/engines/software_generic/evas_engine.c|   4 +-
 15 files changed, 467 insertions(+), 380 deletions(-)

diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h
index 1e1fb59..2964442 100644
--- a/src/lib/evas/Evas_Eo.h
+++ b/src/lib/evas/Evas_Eo.h
@@ -698,44 +698,6 @@ typedef enum _Evas_3D_Comparison
 } Evas_3D_Comparison;
 
 /**
- * Color formats of pixel data
- *
- * @since 1.10
- * @ingroup Evas_3D_Types
- */
-typedef enum _Evas_3D_Color_Format
-{
-   /**< Color contains full components, red, green, blue and alpha */
-   EVAS_3D_COLOR_FORMAT_RGBA = 0,
-   /**< Color contains only red, green and blue components */
-   EVAS_3D_COLOR_FORMAT_RGB,
-   /**< Color contains only alpha component */
-   EVAS_3D_COLOR_FORMAT_ALPHA
-} Evas_3D_Color_Format;
-
-/**
- * Pixel formats
- *
- * @since 1.10
- * @ingroup Evas_3D_Types
- */
-typedef enum _Evas_3D_Pixel_Format
-{
-   /**< 8-bit pixel with single component */
-   EVAS_3D_PIXEL_FORMAT_8 = 0,
-   /**< 16-bit pixel with three components (5-6-5 bit) */
-   EVAS_3D_PIXEL_FORMAT_565,
-   /**< 24-bit pixel with three 8-bit components */
-   EVAS_3D_PIXEL_FORMAT_888,
-   /**< 32-bit pixel with four 8-bit components */
-   EVAS_3D_PIXEL_FORMAT_,
-   /**< 16-bit pixel with four 4-bit components */
-   EVAS_3D_PIXEL_FORMAT_,
-   /**< 16-bit pixel with four components (5-5-5-1 bit) */
-   EVAS_3D_PIXEL_FORMAT_5551
-} Evas_3D_Pixel_Format;
-
-/**
  * Wrap modes
  *
  * @since 1.10
diff --git a/src/lib/evas/canvas/evas_3d_texture.c 
b/src/lib/evas/canvas/evas_3d_texture.c
index 314450c..8b68d81 100644
--- a/src/lib/evas/canvas/evas_3d_texture.c
+++ b/src/lib/evas/canvas/evas_3d_texture.c
@@ -234,7 +234,7 @@ _evas_3d_texture_evas_3d_object_update_notify(Eo *obj, 
Evas_3D_Texture_Data *pd)
  if (e->engine.func->texture_new)
{
   pd->engine_data =
- e->engine.func->texture_new(e->engine.data.output);
+ e->engine.func->texture_new(e->engine.data.output, 
pd->atlas_enable);
}
 
  if (pd->engine_data == NULL)
@@ -308,7 +308,6 @@ evas_3d_texture_material_del(Evas_3D_Texture *texture, 
Evas_3D_Material *materia
  eina_hash_set(pd->materials, &material, (const void *)(uintptr_t)(count - 
1));
 }
 
-
 EAPI Evas_3D_Texture *
 evas_3d_texture_add(Evas *e)
 {
@@ -324,6 +323,8 @@ EOLIAN static void
 _evas_3d_texture_eo_base_constructor(Eo *obj, Evas_3D_Texture_Data *pd 
EINA_UNUSED)
 {
eo_do_super(obj, MY_CLASS, eo_constructor());
+   pd->atlas_enable = EINA_TRUE;
+
eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_TEXTURE));
 }
 
@@ -335,37 +336,68 @@ _evas_3d_texture_eo_base_destructor(Eo *obj, 
Evas_3D_Texture_Data *pd  EINA_UNUS
 }
 
 EOLIAN static void
-_evas_3d_texture_data_set(Eo *obj EINA_UNUSED, Evas_3D_Texture_Data *pd, 
Evas_3D_Color_Format color_format,
- Evas_3D_Pixel_Format pixel_format, int w, int h, 
const void *data)
+_evas_3d_texture_data_set(Eo *obj, Evas_3D_Texture_Data *pd,
+  Evas_Colorspace color_forma

[EGIT] [core/efl] master 53/55: evil: minor formatting in dlfcn.c

2015-05-07 Thread Vincent Torri
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=f2aec7ae4b04e039221ed7b1b8f7eb7e427447c8

commit f2aec7ae4b04e039221ed7b1b8f7eb7e427447c8
Author: Vincent Torri 
Date:   Sun Apr 26 16:36:08 2015 +0200

evil: minor formatting in dlfcn.c

Signed-off-by: Cedric BAIL 
---
 src/lib/evil/dlfcn.c | 54 ++--
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/src/lib/evil/dlfcn.c b/src/lib/evil/dlfcn.c
index fec541e..4efc91b 100644
--- a/src/lib/evil/dlfcn.c
+++ b/src/lib/evil/dlfcn.c
@@ -22,13 +22,13 @@
 #include "dlfcn.h"
 
 
-static char *dl_err = NULL;
-static int dl_err_viewed = 0;
+static char *_dl_err = NULL;
+static int _dl_err_viewed = 0;
 
 static void
-get_last_error(char *desc)
+_dl_get_last_error(char *desc)
 {
-   char  *str;
+   char *str;
size_t l1;
size_t l2;
 
@@ -37,20 +37,20 @@ get_last_error(char *desc)
l1 = strlen(desc);
l2 = strlen(str);
 
-   if (dl_err)
- free(dl_err);
+   if (_dl_err)
+ free(_dl_err);
 
-   dl_err = (char *)malloc(sizeof(char) * (l1 + l2 + 1));
-   if (!dl_err)
- dl_err = strdup("not enough resource");
+   _dl_err = (char *)malloc(sizeof(char) * (l1 + l2 + 1));
+   if (!_dl_err)
+ _dl_err = strdup("not enough resource");
else
  {
-memcpy(dl_err, desc, l1);
-memcpy(dl_err + l1, str, l2);
-dl_err[l1 + l2] = '\0';
+memcpy(_dl_err, desc, l1);
+memcpy(_dl_err + l1, str, l2);
+_dl_err[l1 + l2] = '\0';
  }
free(str);
-   dl_err_viewed = 0;
+   _dl_err_viewed = 0;
 }
 
 void *
@@ -62,7 +62,7 @@ dlopen(const char* path, int mode EVIL_UNUSED)
  {
 module = GetModuleHandle(NULL);
 if (!module)
-  get_last_error("GetModuleHandle returned: ");
+  _dl_get_last_error("GetModuleHandle returned: ");
  }
else
  {
@@ -75,10 +75,10 @@ dlopen(const char* path, int mode EVIL_UNUSED)
 new_path = (char *)malloc(sizeof(char) * (l + 1));
 if (!new_path)
   {
- if (dl_err)
-   free(dl_err);
- dl_err = strdup("not enough resource");
- dl_err_viewed = 0;
+ if (_dl_err)
+   free(_dl_err);
+ _dl_err = strdup("not enough resource");
+ _dl_err_viewed = 0;
  return NULL;
   }
 for (i = 0; i <= l; i++)
@@ -101,7 +101,7 @@ dlopen(const char* path, int mode EVIL_UNUSED)
LOAD_WITH_ALTERED_SEARCH_PATH);
 #endif /* ! UNICODE */
 if (!module)
-  get_last_error("LoadLibraryEx returned: ");
+  _dl_get_last_error("LoadLibraryEx returned: ");
 
 free(new_path);
  }
@@ -116,7 +116,7 @@ dlclose(void* handle)
  return 0;
else
  {
-get_last_error("FreeLibrary returned: ");
+_dl_get_last_error("FreeLibrary returned: ");
 return -1;
  }
 }
@@ -146,7 +146,7 @@ dlsym(void *handle, const char *symbol)
 modules, sizeof(modules), &needed))
   return NULL;
 
-for (i = 0; i < (needed /  sizeof(HMODULE)); i++)
+for (i = 0; i < (needed / sizeof(HMODULE)); i++)
   {
 fp = GetProcAddress(modules[i], new_symbol);
 if (fp) break;
@@ -160,7 +160,7 @@ dlsym(void *handle, const char *symbol)
 #endif /* UNICODE */
 
if (!fp)
- get_last_error("GetProcAddress returned: ");
+ _dl_get_last_error("GetProcAddress returned: ");
 
return fp;
 }
@@ -221,15 +221,15 @@ dladdr (const void *addr EVIL_UNUSED, Dl_info *info)
 char *
 dlerror (void)
 {
-   if (!dl_err_viewed)
+   if (!_dl_err_viewed)
  {
-dl_err_viewed = 1;
-return dl_err;
+_dl_err_viewed = 1;
+return _dl_err;
  }
else
  {
-if (dl_err)
-  free(dl_err);
+if (_dl_err)
+  free(_dl_err);
 return NULL;
  }
 }

-- 




[EGIT] [core/efl] master 54/55: evil: fix mem leak in dlsym() when using UNICODE

2015-05-07 Thread Vincent Torri
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=00a3de5c1f3268c9b7c98e5be39c3947b105ee6e

commit 00a3de5c1f3268c9b7c98e5be39c3947b105ee6e
Author: Vincent Torri 
Date:   Sun Apr 26 16:38:10 2015 +0200

evil: fix mem leak in dlsym() when using UNICODE

@fix

Signed-off-by: Cedric BAIL 
---
 src/lib/evil/dlfcn.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/evil/dlfcn.c b/src/lib/evil/dlfcn.c
index 4efc91b..c220003 100644
--- a/src/lib/evil/dlfcn.c
+++ b/src/lib/evil/dlfcn.c
@@ -144,7 +144,13 @@ dlsym(void *handle, const char *symbol)
 /* TODO: use EnumProcessModulesEx() on Windows >= Vista */
 if (!EnumProcessModules(GetCurrentProcess(),
 modules, sizeof(modules), &needed))
-  return NULL;
+  {
+#ifdef UNICODE
+ _dl_get_last_error("EnumProcessModules returned: ");
+ free((void *)new_symbol);
+#endif /* UNICODE */
+ return NULL;
+  }
 
 for (i = 0; i < (needed / sizeof(HMODULE)); i++)
   {

-- 




[EGIT] [core/efl] master 33/55: efreet: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0b4a911450343896f8c9c7452e6bb6971acf7780

commit 0b4a911450343896f8c9c7452e6bb6971acf7780
Author: Cedric BAIL 
Date:   Tue Apr 28 15:12:03 2015 +0200

efreet: remove the need to order the header correctly for Windows.
---
 src/lib/efreet/Efreet.h   |  3 +++
 src/lib/efreet/efreet_cache_private.h | 29 +
 src/lib/efreet/efreet_private.h   | 29 +
 3 files changed, 61 insertions(+)

diff --git a/src/lib/efreet/Efreet.h b/src/lib/efreet/Efreet.h
index 419e5ff..e83784d 100644
--- a/src/lib/efreet/Efreet.h
+++ b/src/lib/efreet/Efreet.h
@@ -149,6 +149,9 @@ EAPI int efreet_shutdown(void);
  */
 EAPI void efreet_lang_reset(void);
 
+#undef EAPI
+#define EAPI
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/efreet/efreet_cache_private.h 
b/src/lib/efreet/efreet_cache_private.h
index af178ba..79dbfa0 100644
--- a/src/lib/efreet/efreet_cache_private.h
+++ b/src/lib/efreet/efreet_cache_private.h
@@ -12,6 +12,32 @@
 #define EFREET_CACHE_VERSION "__efreet//version"
 #define EFREET_CACHE_ICON_FALLBACK "__efreet_fallback"
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EFREET_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EFREET_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
+
 EAPI const char *efreet_desktop_util_cache_file(void);
 EAPI const char *efreet_desktop_cache_file(void);
 EAPI const char *efreet_icon_cache_file(const char *theme);
@@ -57,4 +83,7 @@ struct _Efreet_Cache_Desktop
 double check_time; /**< Last time we check for disk modification */
 };
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/efreet/efreet_private.h b/src/lib/efreet/efreet_private.h
index 21f7517..9455485 100644
--- a/src/lib/efreet/efreet_private.h
+++ b/src/lib/efreet/efreet_private.h
@@ -1,6 +1,32 @@
 #ifndef EFREET_PRIVATE_H
 #define EFREET_PRIVATE_H
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EFREET_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EFREET_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
+
 #ifdef ENABLE_NLS
 # include 
 # define _(str) dgettext(PACKAGE, str)
@@ -224,6 +250,9 @@ EAPI void efreet_fsetowner(int fd);
 
 EAPI extern int efreet_cache_update;
 
+#undef EAPI
+#define EAPI
+
 /**
  * @}
  */

-- 




[EGIT] [core/efl] master 34/55: eio: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=84ddee331baa446bfa01fd21820b35d49cdbe68f

commit 84ddee331baa446bfa01fd21820b35d49cdbe68f
Author: Cedric BAIL 
Date:   Tue Apr 28 15:12:42 2015 +0200

eio: remove the need to order the header correctly for Windows.
---
 src/lib/eio/Eio.h   |  2 ++
 src/lib/eio/eio_model.h | 30 ++
 2 files changed, 32 insertions(+)

diff --git a/src/lib/eio/Eio.h b/src/lib/eio/Eio.h
index 8edd4ab..c0d4477 100644
--- a/src/lib/eio/Eio.h
+++ b/src/lib/eio/Eio.h
@@ -1296,5 +1296,7 @@ EAPI const char *eio_monitor_path_get(Eio_Monitor 
*monitor);
 }
 #endif
 
+#undef EAPI
+#define EAPI
 
 #endif
diff --git a/src/lib/eio/eio_model.h b/src/lib/eio/eio_model.h
index 1c46d77..e28870b 100644
--- a/src/lib/eio/eio_model.h
+++ b/src/lib/eio/eio_model.h
@@ -33,6 +33,32 @@
 #include 
 #include 
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EIO_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EIO_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -42,4 +68,8 @@ extern "C" {
 #ifdef __cplusplus
 }
 #endif
+
+#undef EAPI
+#define EAPI
+
 #endif //_EMODEL_EIO_H

-- 




[EGIT] [core/efl] master 41/55: ephysics: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=24b14b408e26fb215af884b2b5d3f0430e23749d

commit 24b14b408e26fb215af884b2b5d3f0430e23749d
Author: Cedric BAIL 
Date:   Tue Apr 28 16:52:32 2015 +0200

ephysics: remove the need to order the header correctly for Windows.
---
 src/lib/ephysics/EPhysics.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/lib/ephysics/EPhysics.h b/src/lib/ephysics/EPhysics.h
index e7c7743..f1c3424 100644
--- a/src/lib/ephysics/EPhysics.h
+++ b/src/lib/ephysics/EPhysics.h
@@ -4725,10 +4725,11 @@ EAPI void ephysics_constraint_del(EPhysics_Constraint 
*constraint);
 /**
  * @}
  */
-
-
 #ifdef __cplusplus
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 43/55: evil: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d63593fc64be49f56857edecc540c94fac33c52a

commit d63593fc64be49f56857edecc540c94fac33c52a
Author: Cedric BAIL 
Date:   Tue Apr 28 16:52:57 2015 +0200

evil: remove the need to order the header correctly for Windows.
---
 src/lib/evil/Evil.h   | 3 +++
 src/lib/evil/evil_macro.h | 2 --
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/lib/evil/Evil.h b/src/lib/evil/Evil.h
index ac5f321..e78dece 100644
--- a/src/lib/evil/Evil.h
+++ b/src/lib/evil/Evil.h
@@ -201,6 +201,9 @@ typedef unsigned long  gid_t;
 
 #define sigsetjmp(Env, Save) setjmp(Env)
 
+#undef EAPI
+#define EAPI
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/evil/evil_macro.h b/src/lib/evil/evil_macro.h
index 439c4ff..d5a1af6 100644
--- a/src/lib/evil/evil_macro.h
+++ b/src/lib/evil/evil_macro.h
@@ -1,8 +1,6 @@
 #ifndef __EVIL_MACRO_H__
 #define __EVIL_MACRO_H__
 
-
-
 #ifdef EAPI
 # undef EAPI
 #endif /* EAPI */

-- 




[EGIT] [core/efl] master 35/55: eldbus: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c7d8d83c479f10f67041c6bea7fdeda9bf86045a

commit c7d8d83c479f10f67041c6bea7fdeda9bf86045a
Author: Cedric BAIL 
Date:   Tue Apr 28 15:13:48 2015 +0200

eldbus: remove the need to order the header correctly for Windows.
---
 src/lib/eldbus/Eldbus.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/eldbus/Eldbus.h b/src/lib/eldbus/Eldbus.h
index 6aeffae..ee11954 100644
--- a/src/lib/eldbus/Eldbus.h
+++ b/src/lib/eldbus/Eldbus.h
@@ -241,4 +241,7 @@ typedef void (*Eldbus_Signal_Cb)(void *data, const 
Eldbus_Message *msg);
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 39/55: eo: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3dfdafe41c0410dcf6390adbc7813050eb33812a

commit 3dfdafe41c0410dcf6390adbc7813050eb33812a
Author: Cedric BAIL 
Date:   Tue Apr 28 16:52:13 2015 +0200

eo: remove the need to order the header correctly for Windows.
---
 src/lib/eo/Eo.h | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
index 0825f90..8a271f9 100644
--- a/src/lib/eo/Eo.h
+++ b/src/lib/eo/Eo.h
@@ -1097,9 +1097,11 @@ struct _Eo_Callback_Array_Item
 /**
  * @}
  */
-
 #ifdef __cplusplus
-} 
+}
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 36/55: elua: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e1dee32e2611bac4f4464c2a2f4a275fb5be5e69

commit e1dee32e2611bac4f4464c2a2f4a275fb5be5e69
Author: Cedric BAIL 
Date:   Tue Apr 28 15:28:24 2015 +0200

elua: remove the need to order the header correctly for Windows.
---
 src/lib/elua/Elua.h | 7 +++
 src/lib/elua/cache.c| 1 -
 src/lib/elua/elua.c | 1 -
 src/lib/elua/elua_private.h | 2 ++
 src/lib/elua/io.c   | 1 -
 5 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/lib/elua/Elua.h b/src/lib/elua/Elua.h
index 3b08779..d960cf5 100644
--- a/src/lib/elua/Elua.h
+++ b/src/lib/elua/Elua.h
@@ -48,10 +48,6 @@
 extern "C" {
 #endif
 
-#ifdef HAVE_CONFIG_H
-# include 
-#endif
-
 /**
  * @page elua_main Elua library (BETA)
  *
@@ -458,4 +454,7 @@ EAPI int elua_util_error_report(const Elua_State *es, int 
status);
 } // extern "C" {
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/elua/cache.c b/src/lib/elua/cache.c
index b856b0b..99d7b6a 100644
--- a/src/lib/elua/cache.c
+++ b/src/lib/elua/cache.c
@@ -1,4 +1,3 @@
-#include "Elua.h"
 #include "elua_private.h"
 
 #include 
diff --git a/src/lib/elua/elua.c b/src/lib/elua/elua.c
index 3d34b1f..a7c86f9 100644
--- a/src/lib/elua/elua.c
+++ b/src/lib/elua/elua.c
@@ -1,4 +1,3 @@
-#include "Elua.h"
 #include "elua_private.h"
 
 static Eina_Prefix *_elua_pfx = NULL;
diff --git a/src/lib/elua/elua_private.h b/src/lib/elua/elua_private.h
index 01d8e4b..9f62c5f 100644
--- a/src/lib/elua/elua_private.h
+++ b/src/lib/elua/elua_private.h
@@ -28,6 +28,8 @@
 #include 
 #include 
 
+#include "Elua.h"
+
 struct _Elua_State
 {
lua_State *luastate;
diff --git a/src/lib/elua/io.c b/src/lib/elua/io.c
index 91eef6f..d5b8a0c 100644
--- a/src/lib/elua/io.c
+++ b/src/lib/elua/io.c
@@ -1,4 +1,3 @@
-#include "Elua.h"
 #include "elua_private.h"
 
 /* expand fname to full path name (so that PATH is ignored) plus turn

-- 




[EGIT] [core/efl] master 52/55: evas: do not cast uint64x1_t to int in evas_common_convert_argb_premul

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=45bba2439dc13a3bdf15f9323767d1ee6b51d938

commit 45bba2439dc13a3bdf15f9323767d1ee6b51d938
Author: Cedric BAIL 
Date:   Tue Apr 28 23:40:58 2015 +0200

evas: do not cast uint64x1_t to int in evas_common_convert_argb_premul

Summary:
In GCC 5.1 arm_neon header for aarch64 was changed. It is not possible 
anymore to silently cast uint64x1_t to int.

So replace cast with proper getter function to avoid following error:
lib/evas/common/evas_convert_color.c:50:18: error: incompatible types when 
assigning to type 'DATA32 {aka unsigned int}' from type 'uint64x1_t'
nas += vpaddl_u32(vpaddl_u16(vpaddl_u8(cmp)));

Reviewers: raster, cedric, devilhorns

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2443

Signed-off-by: Cedric BAIL 
---
 src/lib/evas/common/evas_convert_color.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/common/evas_convert_color.c 
b/src/lib/evas/common/evas_convert_color.c
index c34e80b..7cdd3f6 100644
--- a/src/lib/evas/common/evas_convert_color.c
+++ b/src/lib/evas/common/evas_convert_color.c
@@ -39,6 +39,7 @@ evas_common_convert_argb_premul(DATA32 *data, unsigned int 
len)
 uint8x8_t mask_0x01 = vdup_n_u8(1);
 uint8x8_t mask_0xff = vdup_n_u8(255);
 uint8x8_t cmp;
+uint64x1_t tmp;
 
 while (data <= de - 8)
   {
@@ -47,7 +48,8 @@ evas_common_convert_argb_premul(DATA32 *data, unsigned int 
len)
  cmp = vand_u8(vorr_u8(vceq_u8(rgba.val[3], mask_0xff),
vceq_u8(rgba.val[3], mask_0x00)),
mask_0x01);
- nas += vpaddl_u32(vpaddl_u16(vpaddl_u8(cmp)));
+ tmp = vpaddl_u32(vpaddl_u16(vpaddl_u8(cmp)));
+ nas += vget_lane_u32(vreinterpret_u32_u64(tmp), 0);
 
  uint16x8x4_t lrgba;
  lrgba.val[0] = vmovl_u8(rgba.val[0]);

-- 




[EGIT] [core/efl] master 45/55: eina: add crc hash function to eina hash module.

2015-05-07 Thread vivek
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1fdc58a58061f044f5a701f8b96af2eb80027b52

commit 1fdc58a58061f044f5a701f8b96af2eb80027b52
Author: vivek 
Date:   Tue Apr 28 23:33:56 2015 +0200

eina: add crc hash function to eina hash module.

Summary:
Added eina_hash_crc function in eina hash module to generate hash code
using crc-32.

Signed-off-by: vivek 

Reviewers: Sergeant_Whitespace, cedric

Subscribers: Sergeant_Whitespace, cedric

Differential Revision: https://phab.enlightenment.org/D2273

Signed-off-by: Cedric BAIL 
---
 src/lib/eina/eina_hash.h| 11 +++
 src/lib/eina/eina_inline_hash.x | 12 
 2 files changed, 23 insertions(+)

diff --git a/src/lib/eina/eina_hash.h b/src/lib/eina/eina_hash.h
index 460af00..5f953bf 100644
--- a/src/lib/eina/eina_hash.h
+++ b/src/lib/eina/eina_hash.h
@@ -1157,6 +1157,17 @@ static inline int eina_hash_int64(const unsigned long 
long int *pkey,
 static inline int eina_hash_murmur3(const char *key,
int len) EINA_ARG_NONNULL(1);
 
+/**
+ * @brief
+ * Hash function using crc-32 algorithm and and 0xEDB88320 polynomial
+ *
+ * @param key The key to hash
+ * @param len The length of the key
+ * @return The hash value
+ */
+static inline int eina_hash_crc(const char *key,
+   int len) EINA_ARG_NONNULL(1);
+
 #include "eina_inline_hash.x"
 
 /**
diff --git a/src/lib/eina/eina_inline_hash.x b/src/lib/eina/eina_inline_hash.x
index 630e347..71b0208 100644
--- a/src/lib/eina/eina_inline_hash.x
+++ b/src/lib/eina/eina_inline_hash.x
@@ -19,6 +19,8 @@
 #ifndef EINA_INLINE_HASH_X_
 #define EINA_INLINE_HASH_X_
 
+#include "eina_crc.h"
+
 EAPI extern unsigned int eina_seed;
 
 /*
@@ -150,4 +152,14 @@ eina_hash_murmur3(const char *key, int len)
 
return _fmix32(h1);
 }
+
+static inline int
+eina_hash_crc(const char *key, int len)
+{
+   unsigned int crc;
+   unsigned int seed = 0x;
+
+   crc = eina_crc(key, len, seed, EINA_TRUE);
+   return (int)crc;
+}
 #endif

-- 




[EGIT] [core/efl] master 42/55: ethumb: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=61e271890731a8563544cc7dfcae40ab00dc35b2

commit 61e271890731a8563544cc7dfcae40ab00dc35b2
Author: Cedric BAIL 
Date:   Tue Apr 28 16:52:48 2015 +0200

ethumb: remove the need to order the header correctly for Windows.
---
 src/lib/ethumb/Ethumb.h   |  7 +--
 src/lib/ethumb_client/Ethumb_Client.h | 12 +++-
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/lib/ethumb/Ethumb.h b/src/lib/ethumb/Ethumb.h
index 5d1fb0c..2e497e1 100644
--- a/src/lib/ethumb/Ethumb.h
+++ b/src/lib/ethumb/Ethumb.h
@@ -565,7 +565,7 @@ EAPI Eina_Bool ethumb_cmp(const Ethumb *e1, const Ethumb 
*e2) EINA_ARG_NONNULL(1
 
 EAPI int ethumb_hash(const void *key, int key_length) EINA_ARG_NONNULL(1) 
EINA_WARN_UNUSED_RESULT EINA_PURE;
 EAPI int ethumb_key_cmp(const void *key1, int key1_length,
-   const void *key2, int key2_length) EINA_ARG_NONNULL(1, 
3) EINA_WARN_UNUSED_RESULT EINA_PURE;
+const void *key2, int key2_length) EINA_ARG_NONNULL(1, 
3) EINA_WARN_UNUSED_RESULT EINA_PURE;
 EAPI unsigned int ethumb_length(const void *key) EINA_PURE 
EINA_WARN_UNUSED_RESULT;
 
   /**
@@ -575,8 +575,11 @@ EAPI unsigned int ethumb_length(const void *key) EINA_PURE 
EINA_WARN_UNUSED_RESU
 /**
  * @}
  */
-
 #ifdef __cplusplus
 }
 #endif
+
+#undef EAPI
+#define EAPI
+
 #endif /* __ETHUMB_H__ */
diff --git a/src/lib/ethumb_client/Ethumb_Client.h 
b/src/lib/ethumb_client/Ethumb_Client.h
index 3c3f95d..1ec8178 100644
--- a/src/lib/ethumb_client/Ethumb_Client.h
+++ b/src/lib/ethumb_client/Ethumb_Client.h
@@ -201,9 +201,9 @@ typedef void (*Ethumb_Client_Async_Error_Cb)(Ethumb_Client 
*ethumbd, void *data)
 typedef struct _Ethumb_Client_Async Ethumb_Client_Async;
 
 EAPI Ethumb_Client_Async *ethumb_client_thumb_async_get(Ethumb_Client *client,
-   
Ethumb_Client_Async_Done_Cb done,
-   
Ethumb_Client_Async_Error_Cb error,
-   const void *data);
+
Ethumb_Client_Async_Done_Cb done,
+
Ethumb_Client_Async_Error_Cb error,
+const void *data);
 EAPI void ethumb_client_thumb_async_cancel(Ethumb_Client *client, 
Ethumb_Client_Async *request);
   /**
  * @}
@@ -212,9 +212,11 @@ EAPI void ethumb_client_thumb_async_cancel(Ethumb_Client 
*client, Ethumb_Client_
 /**
  * @}
  */
-
-
 #ifdef __cplusplus
 }
 #endif
+
+#undef EAPI
+#define EAPI
+
 #endif /* __ETHUMB_CLIENT_H__ */

-- 




[EGIT] [core/efl] master 55/55: evil: fix dladdr() implementation, add 2 unit tests for evil.

2015-05-07 Thread Vincent Torri
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=92ff90ecca98f9e8e66a1f7a3ecf4e46f65913d4

commit 92ff90ecca98f9e8e66a1f7a3ecf4e46f65913d4
Author: Vincent Torri 
Date:   Wed Apr 29 10:50:11 2015 +0200

evil: fix dladdr() implementation, add 2 unit tests for evil.

@fix

Signed-off-by: Cedric BAIL 
---
 src/Makefile_Evil.am |  27 ++
 src/lib/evil/dlfcn.c | 173 +++
 src/lib/evil/dlfcn.h |  45 ++
 src/tests/evil/evil_suite.c  | 138 +++
 src/tests/evil/evil_suite.h  |  41 ++
 src/tests/evil/evil_test_dlfcn.c | 132 +
 src/tests/evil/evil_test_main.c  |  37 +
 7 files changed, 545 insertions(+), 48 deletions(-)

diff --git a/src/Makefile_Evil.am b/src/Makefile_Evil.am
index 3c6fd0e..4f9ae3f 100644
--- a/src/Makefile_Evil.am
+++ b/src/Makefile_Evil.am
@@ -113,6 +113,7 @@ bin/evil/evil_test_print.h \
 bin/evil/evil_test_realpath.h \
 bin/evil/evil_test_util.h
 
+
 #suite_SOURCES +=  bin/evil/memcpy_glibc_i686.S # see EXTRA_DIST below!
 
 bin_evil_evil_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl @EVIL_CFLAGS@
@@ -123,7 +124,33 @@ bin_evil_test_evil_SOURCES = bin/evil/test_evil.c
 bin_evil_test_evil_LDADD = @USE_EVIL_LIBS@
 bin_evil_test_evil_DEPENDENCIES = @USE_EVIL_INTERNAL_LIBS@ @DL_INTERNAL_LIBS@
 
+### Unit tests
+
+if EFL_ENABLE_TESTS
+
+check_PROGRAMS += tests/evil/evil_suite
+TESTS += tests/evil/evil_suite
+
+tests_evil_evil_suite_SOURCES = \
+tests/evil/evil_suite.c \
+tests/evil/evil_suite.h \
+tests/evil/evil_test_dlfcn.c \
+tests/evil/evil_test_main.c
+
+tests_evil_evil_suite_CPPFLAGS = \
+-I$(top_builddir)/src/lib/efl \
+-DTESTS_SRC_DIR=\"$(top_srcdir)/src/tests/evil\" \
+-DPACKAGE_BUILD_DIR=\"$(abs_top_builddir)/src/tests/evil\" \
+-DTESTS_BUILD_DIR=PACKAGE_BUILD_DIR \
+@CHECK_CFLAGS@ \
+@EVIL_CFLAGS@
+tests_evil_evil_suite_LDADD = @USE_EVIL_LIBS@ @DL_LIBS@ @CHECK_LIBS@
+tests_evil_evil_suite_DEPENDENCIES = @USE_EVIL_INTERNAL_LIBS@ 
@DL_INTERNAL_LIBS@
+
 endif
+
+endif
+
 EXTRA_DIST += \
 lib/evil/regex/regerror.ih \
 lib/evil/regex/engine.ih \
diff --git a/src/lib/evil/dlfcn.c b/src/lib/evil/dlfcn.c
index c220003..ae8687e 100644
--- a/src/lib/evil/dlfcn.c
+++ b/src/lib/evil/dlfcn.c
@@ -171,21 +171,67 @@ dlsym(void *handle, const char *symbol)
return fp;
 }
 
+char *
+dlerror (void)
+{
+   if (!_dl_err_viewed)
+ {
+_dl_err_viewed = 1;
+return _dl_err;
+ }
+   else
+ {
+if (_dl_err)
+  free(_dl_err);
+return NULL;
+ }
+}
+
+#ifdef _GNU_SOURCE
+
+static char _dli_fname[MAX_PATH];
+static char _dli_sname[MAX_PATH]; /* a symbol should have at most 255 char */
+
+static int
+_dladdr_comp(const void *p1, const void *p2)
+{
+   return ( *(int *)p1 - *(int *)p2);
+}
+
 int
 dladdr (const void *addr EVIL_UNUSED, Dl_info *info)
 {
-   TCHAR  tpath[PATH_MAX];
+   TCHAR tpath[PATH_MAX];
MEMORY_BASIC_INFORMATION mbi;
-   char  *path;
+   unsigned char *base;
+   char *path;
size_t length;
-   intret = 0;
+
+   IMAGE_NT_HEADERS *nth;
+   IMAGE_EXPORT_DIRECTORY *ied;
+   DWORD *addresses;
+   WORD *ordinals;
+   DWORD *names;
+   DWORD *tmp;
+   DWORD res;
+   DWORD rva_addr;
+   DWORD i;
 
if (!info)
  return 0;
 
-   length = VirtualQuery(addr, &mbi, sizeof(mbi));
-   if (!length)
- return 0;
+   info->dli_fname = NULL;
+   info->dli_fbase = NULL;
+   info->dli_sname = NULL;
+   info->dli_saddr = NULL;
+
+   /* Get the name and base address of the module */
+
+   if (!VirtualQuery(addr, &mbi, sizeof(mbi)))
+ {
+_dl_get_last_error("VirtualQuery returned: ");
+return 0;
+ }
 
if (mbi.State != MEM_COMMIT)
  return 0;
@@ -193,49 +239,110 @@ dladdr (const void *addr EVIL_UNUSED, Dl_info *info)
if (!mbi.AllocationBase)
  return 0;
 
-   ret = GetModuleFileName((HMODULE)mbi.AllocationBase, (LPTSTR)&tpath, 
PATH_MAX);
-   if (!ret)
- return 0;
+   base = (unsigned char *)mbi.AllocationBase;
 
-#ifdef UNICODE
+   if (!GetModuleFileName((HMODULE)base, (LPTSTR)&tpath, PATH_MAX))
+ {
+_dl_get_last_error("GetModuleFileName returned: ");
+return 0;
+ }
+
+# ifdef UNICODE
path = evil_wchar_to_char(tpath);
-#else
+# else
path = tpath;
-#endif /* ! UNICODE */
+# endif /* ! UNICODE */
 
-   length = strlen (path);
+   length = strlen(path);
if (length >= PATH_MAX)
  {
length = PATH_MAX - 1;
path[PATH_MAX - 1] = '\0';
  }
 
-   EVIL_PATH_SEP_UNIX_TO_WIN32(path);
+   memcpy(_dli_fname, path, length + 1);
+   info->dli_fname = (const char *)_dli_fname;
+   info->dli_fbase = base;
 
-   memcpy (info->dli_fname, path, length + 1);
-   info->dli_fbase = NULL;
-   info->dli_sname = NULL;
-   info->dli_saddr = NULL;
+# ifdef UNICODE
+free(path);
+# endif /* ! UNICODE */
 
-#ifdef UNICODE
-   free (path);
-#endif /* ! UN

[EGIT] [core/efl] master 10/55: evas: implement _op_blend_c_dp_neon in NEON intrinsics.

2015-05-07 Thread Yury Usishchev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a30481d27ba5e2dd5ad84cef9f6c55a9c89880a1

commit a30481d27ba5e2dd5ad84cef9f6c55a9c89880a1
Author: Yury Usishchev 
Date:   Wed Apr 15 17:22:54 2015 +0200

evas: implement _op_blend_c_dp_neon in NEON intrinsics.

Reviewers: raster, cedric

@feature

Reviewed By: cedric

Subscribers: jpeg, cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2310

Signed-off-by: Cedric BAIL 
---
 .../common/evas_op_blend/op_blend_color_neon.c | 92 --
 1 file changed, 86 insertions(+), 6 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
index 2bf14c1..7ba2ffd 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
@@ -1,15 +1,95 @@
+#ifdef BUILD_NEON
+#ifdef BUILD_NEON_INTRINSICS
+#include 
+#endif
+#endif
 /* blend color --> dst */
 
 #ifdef BUILD_NEON
 static void
 _op_blend_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m EINA_UNUSED, DATA32 c, 
DATA32 *d, int l) {
 #ifdef BUILD_NEON_INTRINSICS
-DATA32 *e, a = 256 - (c >> 24);
-UNROLL8_PLD_WHILE(d, l, e,
-  {
- *d = c + MUL_256(a, *d);
- d++;
-  });
+   uint16x8_t temp00_16x8;
+   uint16x8_t temp01_16x8;
+   uint16x8_t temp10_16x8;
+   uint16x8_t temp11_16x8;
+   uint32x4_t temp0_32x4;
+   uint32x4_t temp1_32x4;
+   uint32x4_t c_32x4;
+   uint32x4_t d0_32x4;
+   uint32x4_t d1_32x4;
+   uint8x16_t d0_8x16;
+   uint8x16_t d1_8x16;
+   uint8x16_t temp0_8x16;
+   uint8x16_t temp1_8x16;
+   uint8x8_t alpha_8x8;
+   uint8x8_t d00_8x8;
+   uint8x8_t d01_8x8;
+   uint8x8_t d10_8x8;
+   uint8x8_t d11_8x8;
+   uint8x8_t temp00_8x8;
+   uint8x8_t temp01_8x8;
+   uint8x8_t temp10_8x8;
+   uint8x8_t temp11_8x8;
+
+   // alpha can only be 0 if color is 0x0. In that case we can just return.
+   // Otherwise we can assume alpha != 0. This allows more optimization in
+   // NEON code.
+
+   if(!c)
+  return;
+
+   DATA32 *start = d;
+   int size = l;
+   DATA32 *end = start + (size & ~7);
+
+   unsigned char alpha;
+   alpha = ~(c >> 24) + 1; // 256 - (c >> 24)
+   alpha_8x8 = vdup_n_u8(alpha);
+
+   c_32x4 = vdupq_n_u32(c);
+
+   while (start < end)
+   {
+  d0_32x4 = vld1q_u32(start);
+  d1_32x4 = vld1q_u32(start+4);
+  d0_8x16 = vreinterpretq_u8_u32(d0_32x4);
+  d1_8x16 = vreinterpretq_u8_u32(d1_32x4);
+
+  d00_8x8 = vget_low_u8(d0_8x16);
+  d01_8x8 = vget_high_u8(d0_8x16);
+  d10_8x8 = vget_low_u8(d1_8x16);
+  d11_8x8 = vget_high_u8(d1_8x16);
+
+  temp00_16x8 = vmull_u8(alpha_8x8, d00_8x8);
+  temp01_16x8 = vmull_u8(alpha_8x8, d01_8x8);
+  temp10_16x8 = vmull_u8(alpha_8x8, d10_8x8);
+  temp11_16x8 = vmull_u8(alpha_8x8, d11_8x8);
+
+  temp00_8x8 = vshrn_n_u16(temp00_16x8,8);
+  temp01_8x8 = vshrn_n_u16(temp01_16x8,8);
+  temp10_8x8 = vshrn_n_u16(temp10_16x8,8);
+  temp11_8x8 = vshrn_n_u16(temp11_16x8,8);
+
+  temp0_8x16 = vcombine_u8(temp00_8x8, temp01_8x8);
+  temp1_8x16 = vcombine_u8(temp10_8x8, temp11_8x8);
+
+  temp0_32x4 = vreinterpretq_u32_u8(temp0_8x16);
+  temp1_32x4 = vreinterpretq_u32_u8(temp1_8x16);
+
+  d0_32x4 = vaddq_u32(c_32x4, temp0_32x4);
+  d1_32x4 = vaddq_u32(c_32x4, temp1_32x4);
+
+  vst1q_u32(start, d0_32x4);
+  vst1q_u32(start+4, d1_32x4);
+  start+=8;
+   }
+   end += (size & 7);
+   while (start <  end)
+   {
+  *start = c + MUL_256(alpha, *start);
+  start++;
+   }
 #else
DATA32 *e, *tmp = 0;
 #define AP "B_C_DP"

-- 




[EGIT] [core/efl] master 04/55: emile: add emile_suite_build function to separate creation of test suite.

2015-05-07 Thread vivek
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a415fa9a7f11db0aa5716772e2a2015d987590e4

commit a415fa9a7f11db0aa5716772e2a2015d987590e4
Author: vivek 
Date:   Wed Apr 15 16:59:38 2015 +0200

emile: add emile_suite_build function to separate creation of test suite.

Summary: Signed-off-by: vivek 

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2319

Signed-off-by: Cedric BAIL 
---
 src/tests/emile/emile_suite.c | 47 ++-
 1 file changed, 28 insertions(+), 19 deletions(-)

diff --git a/src/tests/emile/emile_suite.c b/src/tests/emile/emile_suite.c
index 9ba150f..7d37367 100644
--- a/src/tests/emile/emile_suite.c
+++ b/src/tests/emile/emile_suite.c
@@ -44,7 +44,7 @@ _list_tests(void)
 }
 
 static Eina_Bool
-_use_test(const char *name, int argc, char *argv[])
+_use_test(const char *name, int argc, const char *argv[])
 {
argc--;
argv--;
@@ -58,12 +58,36 @@ _use_test(const char *name, int argc, char *argv[])
return EINA_FALSE;
 }
 
+static Suite *
+emile_suite_build(int argc, const char **argv)
+{
+   TCase *tc;
+   Suite *s;
+   unsigned int i;
+
+   s = suite_create("Emile");
+
+   for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i)
+ {
+if (!_use_test(tests[i].name, argc, argv))
+  continue;
+
+tc = tcase_create(tests[i].name);
+tests[i].build(tc);
+suite_add_tcase(s, tc);
+#ifndef _WIN32
+tcase_set_timeout(tc, 0);
+#endif
+ }
+
+   return s;
+}
+
 int
 main(int argc, char *argv[])
 {
SRunner *sr;
Suite *s;
-   unsigned int i;
int failed_count;
int j;
 
@@ -80,24 +104,9 @@ main(int argc, char *argv[])
   return 0;
}
 
-   s = suite_create("Emile");
-
-   for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i)
- {
-TCase *tc;
-
-if (!_use_test(tests[i].name, argc, argv))
-  continue;
-
-tc = tcase_create(tests[i].name);
-tests[i].build(tc);
-suite_add_tcase(s, tc);
-#ifndef _WIN32
-tcase_set_timeout(tc, 0);
-#endif
- }
-
+   s = emile_suite_build(argc, (const char **)argv);
sr = srunner_create(s);
+
srunner_set_xml(sr, TESTS_BUILD_DIR "/check-results.xml");
srunner_run_all(sr, CK_ENV);
failed_count = srunner_ntests_failed(sr);

-- 




[EGIT] [core/efl] master 07/55: evas: surface primitive is normalized in Evas_3D examples.

2015-05-07 Thread Bogdan Devichev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=fe674b160f6113600137db0bee4c9e0e422591f2

commit fe674b160f6113600137db0bee4c9e0e422591f2
Author: Bogdan Devichev 
Date:   Wed Apr 15 17:02:25 2015 +0200

evas: surface primitive is normalized in Evas_3D examples.

Reviewers: cedric, Hermet, raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2341

Signed-off-by: Cedric BAIL 
---
 src/examples/evas/evas-3d-primitives.c | 33 +
 1 file changed, 33 insertions(+)

diff --git a/src/examples/evas/evas-3d-primitives.c 
b/src/examples/evas/evas-3d-primitives.c
index d2297fa..41b3fde 100644
--- a/src/examples/evas/evas-3d-primitives.c
+++ b/src/examples/evas/evas-3d-primitives.c
@@ -383,6 +383,38 @@ evas_3d_add_sphere_frame(Eo *mesh, int frame, int p, vec2 
tex_scale)
 }
 
 void
+_normalize(vec3 *vertices, vec3 *normals, int vcount)
+{
+   int i;
+   vec3 min, max;
+   min = max = vertices[0];
+
+#define CHECK_MIN_AND_MAX(coord)\
+if (min.coord > vertices[i].coord)  \
+  min.coord = vertices[i].coord;\
+else if (max.coord < vertices[i].coord) \
+  max.coord = vertices[i].coord;
+   for (i = 1; i < vcount; i++)
+ {
+CHECK_MIN_AND_MAX(x)
+CHECK_MIN_AND_MAX(y)
+CHECK_MIN_AND_MAX(z)
+ }
+#undef CHECK_MIN_AND_MAX
+
+   for (i = 0; i < vcount; i++)
+ {
+vertices[i].x = (vertices[i].x - min.x) / (max.x - min.x) - 0.5;
+vertices[i].y = (vertices[i].y - min.y) / (max.y - min.y) - 0.5;
+vertices[i].z = (vertices[i].z - min.z) / (max.z - min.z) - 0.5;
+
+normals[i].x = normals[i].x / (max.x - min.x);
+normals[i].y = normals[i].y / (max.y - min.y);
+normals[i].z = normals[i].z / (max.z - min.z);
+ }
+}
+
+void
 evas_3d_add_func_surface_frame(Eo *mesh, int frame, Surface func, int p, vec2 
tex_scale)
 {
int vcount, icount, vccount, i, j;
@@ -413,6 +445,7 @@ evas_3d_add_func_surface_frame(Eo *mesh, int frame, Surface 
func, int p, vec2 te
   }
  }
 
+   _normalize(vertices, normals, vcount);
_generate_grid_indices(indices, p);
SET_VERTEX_DATA(frame)
 }

-- 




[EGIT] [core/efl] master 51/55: evas: implement _op_blend_rel_mas_c_dp_neon using NEON intrinsics

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ad1076525a519ccc53be8a2a6992c870b857bf4a

commit ad1076525a519ccc53be8a2a6992c870b857bf4a
Author: Cedric BAIL 
Date:   Tue Apr 28 23:40:04 2015 +0200

evas: implement _op_blend_rel_mas_c_dp_neon using NEON intrinsics

Summary: NEON intrinsics can be built both for armv7 and armv8.

Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2442

Signed-off-by: Cedric BAIL 
---
 .../evas_op_blend/op_blend_mask_color_neon.c   | 149 +++--
 1 file changed, 136 insertions(+), 13 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
index e492bb0..2c0fad7 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
@@ -1,8 +1,6 @@
 #ifdef BUILD_NEON
-#ifdef BUILD_NEON_INTRINSICS
 #include 
 #endif
-#endif
 #define NEONDEBUG 0
 
 
@@ -689,19 +687,144 @@ init_blend_mask_color_pt_funcs_neon(void)
 #ifdef BUILD_NEON
 static void
 _op_blend_rel_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, DATA32 c, DATA32 
*d, int l) {
-   DATA32 *e;
-   int alpha;
+   uint16x8_t dc0_16x8;
+   uint16x8_t dc1_16x8;
+   uint16x8_t m_16x8;
+   uint16x8_t mc0_16x8;
+   uint16x8_t mc1_16x8;
+   uint16x8_t temp0_16x8;
+   uint16x8_t temp1_16x8;
+   uint16x8_t x255_16x8;
+   uint32x2_t c_32x2;
+   uint32x2_t m_32x2;
+   uint32x4_t a_32x4;
+   uint32x4_t ad_32x4;
+   uint32x4_t cond_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t dc_32x4;
+   uint32x4_t m_32x4;
+   uint32x4_t temp_32x4;
+   uint32x4_t x0_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t a_8x16;
+   uint8x16_t d_8x16;
+   uint8x16_t dc_8x16;
+   uint8x16_t m_8x16;
+   uint8x16_t mc_8x16;
+   uint8x16_t temp_8x16;
+   uint8x16_t x0_8x16;
+   uint8x16_t x1_8x16;
+   uint8x8_t a0_8x8;
+   uint8x8_t a1_8x8;
+   uint8x8_t c_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t dc0_8x8;
+   uint8x8_t dc1_8x8;
+   uint8x8_t m0_8x8;
+   uint8x8_t m1_8x8;
+   uint8x8_t m_8x8;
+   uint8x8_t mc0_8x8;
+   uint8x8_t mc1_8x8;
+   uint8x8_t temp0_8x8;
+   uint8x8_t temp1_8x8;
 
-   DEBUG_FNCOUNT("not");
+   c_32x2 = vdup_n_u32(c);
+   c_8x8 = vreinterpret_u8_u32(c_32x2);
+   x1_8x16 = vdupq_n_u8(0x1);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+   x255_16x8 = vdupq_n_u16(0xff);
+   x0_8x16 = vdupq_n_u8(0x0);
+   x0_32x4 = vreinterpretq_u32_u8(x0_8x16);
 
-   UNROLL8_PLD_WHILE(d, l, e,
- {
-DATA32 mc = MUL_SYM(*m, c);
-alpha = 256 - (mc >> 24);
-*d = MUL_SYM(*d >> 24, mc) + MUL_256(alpha, *d);
-d++;
-m++;
- });
+   DATA32 *end = d + (l & ~3);
+   while (d < end)
+   {
+  // load 4 elements from d
+  d_32x4 = vld1q_u32(d);
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  // load 4 elements from m
+  m_32x2 = vld1_lane_u32((DATA32*)m, m_32x2, 0);
+  m_8x8 = vreinterpret_u8_u32(m_32x2);
+  m_16x8 = vmovl_u8(m_8x8);
+  m_8x16 = vreinterpretq_u8_u16(m_16x8);
+  m_8x8 = vget_low_u8(m_8x16);
+  m_16x8 = vmovl_u8(m_8x8);
+  m_32x4 = vreinterpretq_u32_u16(m_16x8);
+
+  m_32x4 = vmulq_u32(m_32x4, x1_32x4);
+  m_8x16 = vreinterpretq_u8_u32(m_32x4);
+  m0_8x8 = vget_low_u8(m_8x16);
+  m1_8x8 = vget_high_u8(m_8x16);
+
+  // multiply MUL_SYM(*m, c)
+  mc0_16x8 = vmull_u8(m0_8x8, c_8x8);
+  mc1_16x8 = vmull_u8(m1_8x8, c_8x8);
+  mc0_16x8 = vaddq_u16(mc0_16x8, x255_16x8);
+  mc1_16x8 = vaddq_u16(mc1_16x8, x255_16x8);
+  mc0_8x8 = vshrn_n_u16(mc0_16x8, 8);
+  mc1_8x8 = vshrn_n_u16(mc1_16x8, 8);
+  mc_8x16 = vcombine_u8(mc0_8x8, mc1_8x8);
+
+  // calculate alpha = 256 - (mc >> 24)
+  a_8x16 = vsubq_u8(x0_8x16, mc_8x16);
+  a_32x4 = vreinterpretq_u32_u8(a_8x16);
+  a_32x4 = vshrq_n_u32(a_32x4, 24);
+  a_32x4 = vmulq_u32(a_32x4, x1_32x4);
+  a_8x16 = vreinterpretq_u8_u32(a_32x4);
+  a0_8x8 = vget_low_u8(a_8x16);
+  a1_8x8 = vget_high_u8(a_8x16);
+
+  // multiply MUL_256(alpha, *d)
+  temp0_16x8 = vmull_u8(a0_8x8, d0_8x8);
+  temp1_16x8 = vmull_u8(a1_8x8, d1_8x8);
+  temp0_8x8 = vshrn_n_u16(temp0_16x8,8);
+  temp1_8x8 = vshrn_n_u16(temp1_16x8,8);
+  temp_8x16 = vcombine_u8(temp0_8x8, temp1_8x8);
+  temp_32x4 = vreinterpretq_u32_u8(temp_8x16);
+
+  // select d where alpha == 0
+  cond_32x4 = vceqq_u32(a_32x4, x0_32x4);
+  ad_32x4 = vbslq_u32(cond_32x4, d_32x4, temp_32x4);
+
+  // shift (*d >> 24)
+  dc_32x4 = vshrq_n_u32(d_32x4, 24);
+  dc_32x4 = vmulq_u32(x1_32x4, dc_32x4);
+  

[EGIT] [core/efl] master 20/55: evas: improve _op_blend_p_dp_neon intrinsics implementation

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8fa4d415e4e82316bfaecd7f9dbe64131fff345b

commit 8fa4d415e4e82316bfaecd7f9dbe64131fff345b
Author: Cedric BAIL 
Date:   Wed Apr 22 15:20:22 2015 +0200

evas: improve _op_blend_p_dp_neon intrinsics implementation

Summary:
Use vceqq and vbsl instead of twice as much vmovl and vadd instructions.
Replace vaddq_u8 with vaddq_u32.
This allows NEON code to behave exactly like C version.

Reviewers: raster, cedric

Reviewed By: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2361

Signed-off-by: Cedric BAIL 
---
 .../common/evas_op_blend/op_blend_pixel_neon.c | 196 -
 1 file changed, 108 insertions(+), 88 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
index e81466c..8d70b9d 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
@@ -9,29 +9,34 @@
 static void
 _op_blend_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
 #ifdef BUILD_NEON_INTRINSICS
-   uint16x8_t alpha00_16x8;
-   uint16x8_t alpha01_16x8;
-   uint16x8_t alpha10_16x8;
-   uint16x8_t alpha11_16x8;
-   uint16x8_t d00_16x8;
-   uint16x8_t d01_16x8;
-   uint16x8_t d10_16x8;
-   uint16x8_t d11_16x8;
+   uint16x8_t ad00_16x8;
+   uint16x8_t ad01_16x8;
+   uint16x8_t ad10_16x8;
+   uint16x8_t ad11_16x8;
+   uint32x4_t ad0_32x4;
+   uint32x4_t ad1_32x4;
uint32x4_t alpha0_32x4;
uint32x4_t alpha1_32x4;
+   uint32x4_t cond0_32x4;
+   uint32x4_t cond1_32x4;
uint32x4_t d0_32x4;
uint32x4_t d1_32x4;
uint32x4_t s0_32x4;
uint32x4_t s1_32x4;
+   uint32x4_t x0_32x4;
uint32x4_t x1_32x4;
+   uint8x16_t ad0_8x16;
+   uint8x16_t ad1_8x16;
uint8x16_t alpha0_8x16;
uint8x16_t alpha1_8x16;
uint8x16_t d0_8x16;
uint8x16_t d1_8x16;
-   uint8x16_t s0_8x16;
-   uint8x16_t s1_8x16;
+   uint8x16_t x0_8x16;
uint8x16_t x1_8x16;
-   uint8x16_t x255_8x16;
+   uint8x8_t ad00_8x8;
+   uint8x8_t ad01_8x8;
+   uint8x8_t ad10_8x8;
+   uint8x8_t ad11_8x8;
uint8x8_t alpha00_8x8;
uint8x8_t alpha01_8x8;
uint8x8_t alpha10_8x8;
@@ -43,7 +48,8 @@ _op_blend_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, 
int l) {
 
x1_8x16 = vdupq_n_u8(0x1);
x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
-   x255_8x16 = vdupq_n_u8(0xff);
+   x0_8x16 = vdupq_n_u8(0x0);
+   x0_32x4 = vreinterpretq_u32_u8(x0_8x16);
 
DATA32 *start = d;
int size = l;
@@ -56,6 +62,13 @@ _op_blend_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 
*d, int l) {
   d0_32x4 = vld1q_u32(start);
   d1_32x4 = vld1q_u32(start+4);
 
+  d0_8x16 = vreinterpretq_u8_u32(d0_32x4);
+  d1_8x16 = vreinterpretq_u8_u32(d1_32x4);
+  d00_8x8 = vget_low_u8(d0_8x16);
+  d01_8x8 = vget_high_u8(d0_8x16);
+  d10_8x8 = vget_low_u8(d1_8x16);
+  d11_8x8 = vget_high_u8(d1_8x16);
+
   alpha0_32x4 = vshrq_n_u32(s0_32x4, 24);
   alpha1_32x4 = vshrq_n_u32(s1_32x4, 24);
 
@@ -65,46 +78,43 @@ _op_blend_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 
*d, int l) {
   alpha0_8x16 = vreinterpretq_u8_u32(alpha0_32x4);
   alpha1_8x16 = vreinterpretq_u8_u32(alpha1_32x4);
 
-  alpha0_8x16 = vsubq_u8(x255_8x16, alpha0_8x16);
-  alpha1_8x16 = vsubq_u8(x255_8x16, alpha1_8x16);
+  alpha0_8x16 = vsubq_u8(x0_8x16, alpha0_8x16);
+  alpha1_8x16 = vsubq_u8(x0_8x16, alpha1_8x16);
+
+  alpha0_32x4 = vreinterpretq_u32_u8(alpha0_8x16);
+  alpha1_32x4 = vreinterpretq_u32_u8(alpha1_8x16);
 
   alpha10_8x8 = vget_low_u8(alpha1_8x16);
   alpha11_8x8 = vget_high_u8(alpha1_8x16);
   alpha00_8x8 = vget_low_u8(alpha0_8x16);
   alpha01_8x8 = vget_high_u8(alpha0_8x16);
-  d0_8x16 = vreinterpretq_u8_u32(d0_32x4);
-  d1_8x16 = vreinterpretq_u8_u32(d1_32x4);
-  d00_8x8 = vget_low_u8(d0_8x16);
-  d01_8x8 = vget_high_u8(d0_8x16);
-  d10_8x8 = vget_low_u8(d1_8x16);
-  d11_8x8 = vget_high_u8(d1_8x16);
-  alpha00_16x8 = vmull_u8(alpha00_8x8, d00_8x8);
-  alpha01_16x8 = vmull_u8(alpha01_8x8, d01_8x8);
-  alpha10_16x8 = vmull_u8(alpha10_8x8, d10_8x8);
-  alpha11_16x8 = vmull_u8(alpha11_8x8, d11_8x8);
-  d00_16x8 = vmovl_u8(d00_8x8);
-  d01_16x8 = vmovl_u8(d01_8x8);
-  d10_16x8 = vmovl_u8(d10_8x8);
-  d11_16x8 = vmovl_u8(d11_8x8);
-  alpha00_16x8 = vaddq_u16(alpha00_16x8, d00_16x8);
-  alpha01_16x8 = vaddq_u16(alpha01_16x8, d01_16x8);
-  alpha10_16x8 = vaddq_u16(alpha10_16x8, d10_16x8);
-  alpha11_16x8 = vaddq_u16(alpha11_16x8, d11_16x8);
-  alpha00_8x8 = vshrn_n_u16(alpha00_16x8,8);
-  alpha01_8x8 = vshrn_n_u16(alpha01_16x8,8);
-  alpha10_8x8 = vshrn_n_u16(alpha10_16x8,8);
-  alpha11_8x8 = vshrn_n_u16(alpha11_16x8,8);
-  alpha0_8x16 = vcombine_u8(alpha00_8x8, alpha01_8x8);
- 

[EGIT] [core/efl] master 50/55: evas: implement _op_blend_rel_{p, pan}_dp_neon using NEON intrinsics

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2c2983aadb8cd7351d821c0a5b01efafd445665d

commit 2c2983aadb8cd7351d821c0a5b01efafd445665d
Author: Cedric BAIL 
Date:   Tue Apr 28 23:39:18 2015 +0200

evas: implement _op_blend_rel_{p,pan}_dp_neon using NEON intrinsics

Summary: NEON intrinsics can be built both for armv7 and armv8.

Reviewers: raster, cedric

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2441

Signed-off-by: Cedric BAIL 
---
 .../common/evas_op_blend/op_blend_pixel_neon.c | 182 -
 1 file changed, 176 insertions(+), 6 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
index 8d70b9d..0db97be 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c
@@ -1,8 +1,6 @@
 #ifdef BUILD_NEON
-#ifdef BUILD_NEON_INTRINSICS
 #include 
 #endif
-#endif
 /* blend pixel --> dst */
 
 #ifdef BUILD_NEON
@@ -747,8 +745,114 @@ init_blend_pixel_pt_funcs_neon(void)
 #ifdef BUILD_NEON
 static void
 _op_blend_rel_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
-   DATA32 *e = d + l;
-   while (d < e) {
+   uint16x8_t cs0_16x8;
+   uint16x8_t cs1_16x8;
+   uint16x8_t ld0_16x8;
+   uint16x8_t ld1_16x8;
+   uint32x4_t c_32x4;
+   uint32x4_t cond_32x4;
+   uint32x4_t cs_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t l_32x4;
+   uint32x4_t ld_32x4;
+   uint32x4_t s_32x4;
+   uint32x4_t x0_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t c_8x16;
+   uint8x16_t cs_8x16;
+   uint8x16_t d_8x16;
+   uint8x16_t l_8x16;
+   uint8x16_t ld_8x16;
+   uint8x16_t s_8x16;
+   uint8x16_t x0_8x16;
+   uint8x16_t x1_8x16;
+   uint8x8_t c0_8x8;
+   uint8x8_t c1_8x8;
+   uint8x8_t cs0_8x8;
+   uint8x8_t cs1_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t l0_8x8;
+   uint8x8_t l1_8x8;
+   uint8x8_t ld0_8x8;
+   uint8x8_t ld1_8x8;
+   uint8x8_t s0_8x8;
+   uint8x8_t s1_8x8;
+
+   x1_8x16 = vdupq_n_u8(0x1);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+   x0_8x16 = vdupq_n_u8(0x0);
+   x0_32x4 = vreinterpretq_u32_u8(x0_8x16);
+
+   DATA32 *end = d + (l & ~3);
+   while (d < end)
+   {
+  // load 4 elements from d
+  d_32x4 = vld1q_u32(d);
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  // load 4 elements from s
+  s_32x4 = vld1q_u32(s);
+  s_8x16 = vreinterpretq_u8_u32(s_32x4);
+  s0_8x8 = vget_low_u8(s_8x16);
+  s1_8x8 = vget_high_u8(s_8x16);
+
+  // calculate l = 256 - (*s >> 24)
+  l_32x4 = vshrq_n_u32(s_32x4, 24);
+  l_32x4 = vmulq_u32(x1_32x4, l_32x4);
+  l_8x16 = vreinterpretq_u8_u32(l_32x4);
+  l_8x16 = vsubq_u8(x0_8x16, l_8x16);
+  l0_8x8 = vget_low_u8(l_8x16);
+  l1_8x8 = vget_high_u8(l_8x16);
+
+  // multiply MUL_256(l, *d)
+  ld0_16x8 = vmull_u8(l0_8x8, d0_8x8);
+  ld1_16x8 = vmull_u8(l1_8x8, d1_8x8);
+  ld0_8x8 = vshrn_n_u16(ld0_16x8,8);
+  ld1_8x8 = vshrn_n_u16(ld1_16x8,8);
+  ld_8x16 = vcombine_u8(ld0_8x8, ld1_8x8);
+  ld_32x4 = vreinterpretq_u32_u8(ld_8x16);
+
+  // select d where l should be 256
+  cond_32x4 = vceqq_u32(l_32x4, x0_32x4);
+  ld_32x4 = vbslq_u32(cond_32x4, d_32x4, ld_32x4);
+
+  // calculate 1 + (*d >> 24)
+  c_32x4 = vshrq_n_u32(d_32x4, 24);
+  c_32x4 = vmulq_u32(x1_32x4, c_32x4);
+  c_8x16 = vreinterpretq_u8_u32(c_32x4);
+  c_8x16 = vaddq_u8(c_8x16, x1_8x16);
+  c0_8x8 = vget_low_u8(c_8x16);
+  c1_8x8 = vget_high_u8(c_8x16);
+
+  // multiply MUL_256(l, *d)
+  cs0_16x8 = vmull_u8(c0_8x8, s0_8x8);
+  cs1_16x8 = vmull_u8(c1_8x8, s1_8x8);
+  cs0_8x8 = vshrn_n_u16(cs0_16x8,8);
+  cs1_8x8 = vshrn_n_u16(cs1_16x8,8);
+  cs_8x16 = vcombine_u8(cs0_8x8, cs1_8x8);
+  cs_32x4 = vreinterpretq_u32_u8(cs_8x16);
+
+  // select s where c should be 256
+  c_32x4 = vreinterpretq_u32_u8(c_8x16);
+  cond_32x4 = vceqq_u32(c_32x4, x0_32x4);
+  cs_32x4 = vbslq_u32(cond_32x4, s_32x4, cs_32x4);
+
+  // add up everything
+  d_32x4 = vaddq_u32(cs_32x4, ld_32x4);
+
+  // save result
+  vst1q_u32(d, d_32x4);
+
+  d+=4;
+  s+=4;
+   }
+
+   end += (l & 3);
+   while (d < end)
+   {
   l = 256 - (*s >> 24);
   c = 1 + (*d >> 24);
   *d = MUL_256(c, *s) + MUL_256(l, *d);
@@ -759,8 +863,74 @@ _op_blend_rel_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, 
DATA32 *d, int l) {
 
 static void
 _op_blend_rel_pan_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
-   DATA32 *e = d + l;
-   while (d < e) {
+   uint16x8_t cs0_16x8;
+   uint16x8_t cs1_16x8;
+   uint32x4_t c_32x4;
+   uint32x4_t cond_32x4;
+   uint32x4_t cs_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t s_32x4;
+   uint32x4_t x0_32x4;
+   uint32x4_t x1_32x4;
+   uin

[EGIT] [core/efl] master 47/55: evas: implement pixel_color blending functions using NEON intrinsics.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=76a5efe13ae76ce44d02e1f5921db9465e8a739b

commit 76a5efe13ae76ce44d02e1f5921db9465e8a739b
Author: Cedric BAIL 
Date:   Tue Apr 28 23:36:04 2015 +0200

evas: implement pixel_color blending functions using NEON intrinsics.

Summary:
NEON intrinsics can be built both for armv7 and armv8.
Implemented functions:
_op_blend_pan_c_dp_neon
_op_blend_p_can_dp_neon
_op_blend_pan_can_dp_neon
_op_blend_p_caa_dp_neon
_op_blend_pan_caa_dp_neon

Reviewers: raster, cedric

Subscribers: cedric

Projects: #efl

Maniphest Tasks: T2341

Differential Revision: https://phab.enlightenment.org/D2409

Signed-off-by: Cedric BAIL 
---
 .../evas_op_blend/op_blend_pixel_color_neon.c  | 654 +++--
 1 file changed, 465 insertions(+), 189 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
index b1bfc25..aec1c86 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
@@ -1,8 +1,3 @@
-#ifdef BUILD_NEON
-#ifdef BUILD_NEON_INTRINSICS
-#include 
-#endif
-#endif
 /* blend pixel x color --> dst */
 #ifdef BUILD_NEON
 
@@ -202,240 +197,521 @@ _op_blend_p_c_dp_neon(DATA32 * __restrict s, DATA8 *m 
EINA_UNUSED, DATA32 c, DAT
 #endif
 }
 
-static void
-_op_blend_pan_can_dp_neon(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c, DATA32 
*d, int l) {
-   DATA32 *e;
-   UNROLL8_PLD_WHILE(d, l, e,
- {
-*d++ = 0xff00 + MUL3_SYM(c, *s);
-s++;
- });
-}
 
 static void
-_op_blend_pan_caa_dp_neon(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c, DATA32 
*d, int l) {
-#if 1
-   DATA32 *e;
-   DATA32 sc;
-   int alpha;
-   c = 1 + (c & 0xff);
-   UNROLL8_PLD_WHILE(d, l, e,
-{
-   sc = MUL_256(c, *s);
-   alpha = 256 - (sc >> 24);
-   *d = sc + MUL_256(alpha, *d);
-   d++;
-   s++;
-});
-#else // the below neon is buggy!! misses rendering of spans, i think with 
alignment. quick - just disable this.
-#define AP "_op_blend_pan_caa_dp_"
-   DATA32 *e = d + l, *tmp = (void*)73;
-  asm volatile (
-   ".fpu neon  \n\t"
-   /* Set up 'c' */
-   "vdup.u8 d14, %[c]  \n\t"
-   "vmov.i8 d15, #1\n\t"
-   "vaddl.u8   q15, d14, d15   \n\t"
-   "vshr.u8q15,#1  \n\t"
-
-   // Pick a loop
-   "andS   %[tmp], %[d], $0xf  \n\t"
-   "beq"AP"quadstart   \n\t"
-
-   "andS   %[tmp], %[d], $0x4  \n\t"
-   "beq"AP"dualstart   \n\t"
-
-   AP"singleloop:  \n\t"
-   "vld1.32d4[0],  [%[d]]  \n\t"
-   "vld1.32d0[0],  [%[s]]! \n\t"
-
-   // Long version of 'd'
-   "vmovl.u8   q8, d4  \n\t"
+_op_blend_pan_c_dp_neon(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c, DATA32 *d, 
int l) {
+   uint16x8_t ad0_16x8;
+   uint16x8_t ad1_16x8;
+   uint16x8_t sc0_16x8;
+   uint16x8_t sc1_16x8;
+   uint16x8_t x255_16x8;
+   uint32x4_t ad_32x4;
+   uint32x4_t c_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t mask_32x4;
+   uint32x4_t s_32x4;
+   uint32x4_t sc_32x4;
+   uint8x16_t ad_8x16;
+   uint8x16_t c_8x16;
+   uint8x16_t d_8x16;
+   uint8x16_t mask_8x16;
+   uint8x16_t s_8x16;
+   uint8x16_t sc_8x16;
+   uint8x8_t a_8x8;
+   uint8x8_t ad0_8x8;
+   uint8x8_t ad1_8x8;
+   uint8x8_t c_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t s0_8x8;
+   uint8x8_t s1_8x8;
+   uint8x8_t sc0_8x8;
+   uint8x8_t sc1_8x8;
+
+   // alpha can only be 0 if color is 0x0. In that case we can just return.
+   // Otherwise we can assume alpha != 0. This allows more optimization in
+   // NEON code.
+
+   if(!c)
+  return;
+
+   unsigned char a;
+   a = ~(c >> 24) + 1; // 256 - (c >> 24)
+
+   a_8x8 = vdup_n_u8(a);
+   c_32x4 = vdupq_n_u32(c);
+   c_8x16 = vreinterpretq_u8_u32(c_32x4);
+   c_8x8 = vget_low_u8(c_8x16);
+   x255_16x8 = vdupq_n_u16(0xff);
+   mask_32x4 = vdupq_n_u32(0xff00);
+   mask_8x16 = vreinterpretq_u8_u32(mask_32x4);
+
+   DATA32 *end = d + (l & ~3);
+   while (d < end)
+   {
+  // load 4 elements from d
+  d_32x4 = vld1q_u32(d);
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  // multiply MUL_256(a, *d)
+  ad0_16x8 = vmull_u8(a_8x8, d0_8x8);
+  ad1_16x8 = vmull_u8(a_8x8, d1_8x8);
+  ad0_8x8

[EGIT] [core/efl] master 48/55: evas: implement _op_blend_rel_p_c_dp_neon using NEON intrinsics

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d364cbdadd6a4f0d59bcdeead90205e847c84c56

commit d364cbdadd6a4f0d59bcdeead90205e847c84c56
Author: Cedric BAIL 
Date:   Tue Apr 28 23:37:37 2015 +0200

evas: implement _op_blend_rel_p_c_dp_neon using NEON intrinsics

Summary:
NEON intrinsics can be built both for armv7 and armv8.

There were no NEON variant for this function, so it was added with all 
copies to init function.

Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2417

Signed-off-by: Cedric BAIL 
---
 .../evas_op_blend/op_blend_pixel_color_neon.c  | 152 +
 1 file changed, 152 insertions(+)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
index aec1c86..d49562a 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
@@ -808,6 +808,148 @@ init_blend_pixel_color_pt_funcs_neon(void)
 
 #ifdef BUILD_NEON
 
+static void
+_op_blend_rel_p_c_dp_neon(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c, DATA32 
*d, int l) {
+   uint16x8_t ad0_16x8;
+   uint16x8_t ad1_16x8;
+   uint16x8_t dsc0_16x8;
+   uint16x8_t dsc1_16x8;
+   uint16x8_t sc0_16x8;
+   uint16x8_t sc1_16x8;
+   uint16x8_t x255_16x8;
+   uint32x2_t c_32x2;
+   uint32x4_t ad_32x4;
+   uint32x4_t alpha_32x4;
+   uint32x4_t cond_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t dsc_32x4;
+   uint32x4_t s_32x4;
+   uint32x4_t x0_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t ad_8x16;
+   uint8x16_t alpha_8x16;
+   uint8x16_t d_8x16;
+   uint8x16_t dsc_8x16;
+   uint8x16_t s_8x16;
+   uint8x16_t sc_8x16;
+   uint8x16_t x0_8x16;
+   uint8x16_t x1_8x16;
+   uint8x8_t ad0_8x8;
+   uint8x8_t ad1_8x8;
+   uint8x8_t alpha0_8x8;
+   uint8x8_t alpha1_8x8;
+   uint8x8_t c_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t dsc0_8x8;
+   uint8x8_t dsc1_8x8;
+   uint8x8_t s0_8x8;
+   uint8x8_t s1_8x8;
+   uint8x8_t sc0_8x8;
+   uint8x8_t sc1_8x8;
+
+   c_32x2 = vdup_n_u32(c);
+   c_8x8 = vreinterpret_u8_u32(c_32x2);
+   x255_16x8 = vdupq_n_u16(0xff);
+   x0_8x16 = vdupq_n_u8(0x0);
+   x0_32x4 = vreinterpretq_u32_u8(x0_8x16);
+   x1_8x16 = vdupq_n_u8(0x1);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+
+   DATA32 *end = d + (l & ~3);
+   while (d < end)
+   {
+  // load 4 elements from s
+  s_32x4 = vld1q_u32(s);
+  s_8x16 = vreinterpretq_u8_u32(s_32x4);
+  s0_8x8 = vget_low_u8(s_8x16);
+  s1_8x8 = vget_high_u8(s_8x16);
+
+  // load 4 elements from d
+  d_32x4 = vld1q_u32(d);
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  // multiply MUL4_SYM(c, *s);
+  sc0_16x8 = vmull_u8(s0_8x8, c_8x8);
+  sc1_16x8 = vmull_u8(s1_8x8, c_8x8);
+  sc0_16x8 = vaddq_u16(sc0_16x8, x255_16x8);
+  sc1_16x8 = vaddq_u16(sc1_16x8, x255_16x8);
+  sc0_8x8 = vshrn_n_u16(sc0_16x8, 8);
+  sc1_8x8 = vshrn_n_u16(sc1_16x8, 8);
+  sc_8x16 = vcombine_u8(sc0_8x8, sc1_8x8);
+
+  // calculate alpha = 256 - (sc >> 24)
+  alpha_32x4 = vreinterpretq_u32_u8(sc_8x16);
+  alpha_32x4 = vshrq_n_u32(alpha_32x4, 24);
+  alpha_32x4 = vmulq_u32(x1_32x4, alpha_32x4);
+  alpha_8x16 = vreinterpretq_u8_u32(alpha_32x4);
+  alpha_8x16 = vsubq_u8(x0_8x16, alpha_8x16);
+  alpha0_8x8 = vget_low_u8(alpha_8x16);
+  alpha1_8x8 = vget_high_u8(alpha_8x16);
+
+  // multiply MUL_256(alpha, *d);
+  ad0_16x8 = vmull_u8(alpha0_8x8, d0_8x8);
+  ad1_16x8 = vmull_u8(alpha1_8x8, d1_8x8);
+  ad0_8x8 = vshrn_n_u16(ad0_16x8,8);
+  ad1_8x8 = vshrn_n_u16(ad1_16x8,8);
+  ad_8x16 = vcombine_u8(ad0_8x8, ad1_8x8);
+  ad_32x4 = vreinterpretq_u32_u8(ad_8x16);
+
+  // select d when alpha is 0
+  alpha_32x4 = vreinterpretq_u32_u8(alpha_8x16);
+  cond_32x4 = vceqq_u32(alpha_32x4, x0_32x4);
+  ad_32x4 = vbslq_u32(cond_32x4, d_32x4 , ad_32x4);
+
+  // shift (*d >> 24)
+  dsc_32x4 = vshrq_n_u32(d_32x4, 24);
+  dsc_32x4 = vmulq_u32(x1_32x4, dsc_32x4);
+  dsc_8x16 = vreinterpretq_u8_u32(dsc_32x4);
+  dsc0_8x8 = vget_low_u8(dsc_8x16);
+  dsc1_8x8 = vget_high_u8(dsc_8x16);
+
+  // multiply MUL_256(*d >> 24, sc);
+  dsc0_16x8 = vmull_u8(dsc0_8x8, sc0_8x8);
+  dsc1_16x8 = vmull_u8(dsc1_8x8, sc1_8x8);
+  dsc0_16x8 = vaddq_u16(dsc0_16x8, x255_16x8);
+  dsc1_16x8 = vaddq_u16(dsc1_16x8, x255_16x8);
+  dsc0_8x8 = vshrn_n_u16(dsc0_16x8, 8);
+  dsc1_8x8 = vshrn_n_u16(dsc1_16x8, 8);
+  dsc_8x16 = vcombine_u8(dsc0_8x8, dsc1_8x8);
+
+  // add up everything
+  dsc_32x4 = vreinterpretq_u32_u8(dsc_8x16);
+  d_32x4 = vaddq_u32(dsc_32x4, ad_32x4);
+
+  // save result
+  vst1q_u32(d, d_32

[EGIT] [core/efl] master 29/55: ecore: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ce5ccfb5bee5174b168f0df49b75df2ab3849454

commit ce5ccfb5bee5174b168f0df49b75df2ab3849454
Author: Cedric BAIL 
Date:   Tue Apr 28 14:24:48 2015 +0200

ecore: remove the need to order the header correctly for Windows.
---
 src/lib/ecore/Ecore.h  |  4 +++
 src/lib/ecore/ecore_private.h  | 29 +
 src/lib/ecore_audio/Ecore_Audio.h  |  3 +++
 src/lib/ecore_avahi/Ecore_Avahi.h  |  3 +++
 src/lib/ecore_cocoa/Ecore_Cocoa.h  |  6 +++--
 src/lib/ecore_con/Ecore_Con.h  |  3 +++
 src/lib/ecore_drm/Ecore_Drm.h  | 21 +++
 src/lib/ecore_drm/ecore_drm.c  |  1 -
 src/lib/ecore_evas/Ecore_Evas.h|  3 +++
 src/lib/ecore_evas/ecore_evas_private.h| 30 +-
 src/lib/ecore_fb/Ecore_Fb.h|  3 +++
 src/lib/ecore_file/Ecore_File.h|  3 +++
 src/lib/ecore_imf/Ecore_IMF.h  |  3 +++
 src/lib/ecore_imf_evas/Ecore_IMF_Evas.h|  3 +++
 src/lib/ecore_input/Ecore_Input.h  |  3 +++
 src/lib/ecore_input_evas/Ecore_Input_Evas.h|  3 +++
 src/lib/ecore_ipc/Ecore_Ipc.h  |  5 +++-
 src/lib/ecore_psl1ght/Ecore_Psl1ght.h  |  3 +++
 src/lib/ecore_sdl/Ecore_Sdl.h  |  3 +++
 src/lib/ecore_wayland/Ecore_Wayland.h  |  4 +++
 src/lib/ecore_win32/Ecore_Win32.h  |  3 ++-
 src/lib/ecore_x/Ecore_X.h  |  7 +++--
 .../ecore_evas/engines/cocoa/ecore_evas_cocoa.c| 21 +++
 .../ecore_evas/engines/drm/ecore_evas_drm.c| 22 
 .../ecore_evas/engines/extn/ecore_evas_extn.c  | 22 
 src/modules/ecore_evas/engines/fb/ecore_evas_fb.c  | 22 
 .../engines/psl1ght/ecore_evas_psl1ght.c   | 22 
 .../ecore_evas/engines/sdl/ecore_evas_sdl.c| 22 
 .../engines/wayland/ecore_evas_wayland_egl.c   | 22 
 .../engines/wayland/ecore_evas_wayland_shm.c   | 22 
 .../ecore_evas/engines/win32/ecore_evas_win32.c| 22 
 src/modules/ecore_evas/engines/x/ecore_evas_x.c| 22 
 32 files changed, 352 insertions(+), 13 deletions(-)

diff --git a/src/lib/ecore/Ecore.h b/src/lib/ecore/Ecore.h
index a6ac338..e843038 100644
--- a/src/lib/ecore/Ecore.h
+++ b/src/lib/ecore/Ecore.h
@@ -361,4 +361,8 @@ extern "C" {
 #ifdef __cplusplus
 }
 #endif
+
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/ecore/ecore_private.h b/src/lib/ecore/ecore_private.h
index afbfeb9..89f6013 100644
--- a/src/lib/ecore/ecore_private.h
+++ b/src/lib/ecore/ecore_private.h
@@ -3,6 +3,32 @@
 
 #include 
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
 extern int _ecore_log_dom;
 #ifdef  _ECORE_DEFAULT_LOG_DOM
 # undef _ECORE_DEFAULT_LOG_DOM
@@ -422,4 +448,7 @@ extern Eo *_ecore_parent;
 #define ECORE_PARENT_CLASS ecore_parent_class_get()
 const Eo_Class *ecore_parent_class_get(void) EINA_CONST;
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/ecore_audio/Ecore_Audio.h 
b/src/lib/ecore_audio/Ecore_Audio.h
index edb9b49..ec1f85b 100644
--- a/src/lib/ecore_audio/Ecore_Audio.h
+++ b/src/lib/ecore_audio/Ecore_Audio.h
@@ -224,4 +224,7 @@ EAPI int ecore_audio_shutdown(void);
  * @}
  */
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/ecore_avahi/Ecore_Avahi.h 
b/src/lib/ecore_avahi/Ecore_Avahi.h
index dc70b9a..1ba7443 100644
--- a/src/lib/ecore_avahi/Ecore_Avahi.h
+++ b/src/lib/ecore_avahi/Ecore_Avahi.h
@@ -85,4 +85,7 @@ EAPI const void  *ecore_avahi_poll_get(Ecore_Avahi *handler); 
// return AvahiPol
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/ecore_cocoa/Ecore_Cocoa.h 
b/src/lib/ecore_cocoa/Ecore_Cocoa.h
index 3b65001..78d15ce 100644
--- a/src/lib/ecore_cocoa/Ecore_Cocoa.h
+++ b/src/lib/ecore_cocoa/Ecore_Cocoa.h
@@ -159,15 +159,17 @@ EAPI void 
ecore_cocoa_window_borderless_set(Ecore_Cocoa_Window *window,
 int on);
 
 EAPI void ecore_cocoa_window_view_set(Ecore_Cocoa_Window *window,
- void *view);
+  void *view);
 
 EAPI int ecore_cocoa_titlebar_height_get(void);
 
 EAPI Ecore_Cocoa_Window_Id ecor

[EGIT] [core/efl] master 32/55: efl: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=04d290c35022b9add5ef8de9cd22fdf7dd69d930

commit 04d290c35022b9add5ef8de9cd22fdf7dd69d930
Author: Cedric BAIL 
Date:   Tue Apr 28 15:11:20 2015 +0200

efl: remove the need to order the header correctly for Windows.
---
 src/lib/efl/Efl.h | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h
index 2de7680..f8eb8eb 100644
--- a/src/lib/efl/Efl.h
+++ b/src/lib/efl/Efl.h
@@ -2,8 +2,7 @@
 #define _EFL_H
 
 #if defined ( __cplusplus )
-extern "C"
-{
+extern "C" {
 #endif
 
 #include 
@@ -171,4 +170,7 @@ EAPI extern const Eo_Event_Description 
_EFL_GFX_PATH_CHANGED;
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 38/55: emotion: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=f193b91fd8aa16d377476137a7a84ea1fc6682b9

commit f193b91fd8aa16d377476137a7a84ea1fc6682b9
Author: Cedric BAIL 
Date:   Tue Apr 28 16:51:57 2015 +0200

emotion: remove the need to order the header correctly for Windows.
---
 src/lib/emotion/Emotion.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/emotion/Emotion.h b/src/lib/emotion/Emotion.h
index a776084..09c88e1 100644
--- a/src/lib/emotion/Emotion.h
+++ b/src/lib/emotion/Emotion.h
@@ -1347,4 +1347,7 @@ EAPI const char  *emotion_webcam_device_get(const 
Emotion_Webcam *ew);
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 37/55: embryo: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=109dc5445182047fd2fcad8820210ef46066c769

commit 109dc5445182047fd2fcad8820210ef46066c769
Author: Cedric BAIL 
Date:   Tue Apr 28 16:51:44 2015 +0200

embryo: remove the need to order the header correctly for Windows.
---
 src/lib/embryo/Embryo.h | 11 +++
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/lib/embryo/Embryo.h b/src/lib/embryo/Embryo.h
index 413c38b..fc358ef 100644
--- a/src/lib/embryo/Embryo.h
+++ b/src/lib/embryo/Embryo.h
@@ -885,7 +885,7 @@ EAPI Embryo_Cell  
embryo_program_return_value_get(Embryo_Program *ep);
  * @ingroup Embryo_Run_Group
  */
 EAPI void embryo_program_max_cycle_run_set(Embryo_Program *ep, int 
max);
-   
+
 /**
  * Retreives the maximum number of abstract machine cycles a program is allowed
  * to run.
@@ -899,7 +899,7 @@ EAPI void 
embryo_program_max_cycle_run_set(Embryo_Program *ep, int m
  * @ingroup Embryo_Run_Group
  */
 EAPI int  embryo_program_max_cycle_run_get(Embryo_Program *ep);
-   
+
 /**
  * Pushes an Embryo_Cell onto the function stack to use as a parameter for
  * the next function that is called in the given program.
@@ -916,7 +916,7 @@ EAPI int  
embryo_program_max_cycle_run_get(Embryo_Program *ep);
  * Functions that set parameters for the next function that is called.
  */
 EAPI int  embryo_parameter_cell_push(Embryo_Program *ep, 
Embryo_Cell cell);
-   
+
 /**
  * Pushes a string onto the function stack to use as a parameter for the
  * next function that is called in the given program.
@@ -926,7 +926,7 @@ EAPI int  
embryo_parameter_cell_push(Embryo_Program *ep, Embryo_Cell
  * @ingroup Embryo_Parameter_Group
  */
 EAPI int  embryo_parameter_string_push(Embryo_Program *ep, const 
char *str);
-   
+
 /**
  * Pushes an array of Embryo_Cells onto the function stack to be used as
  * parameters for the next function that is called in the given program.
@@ -942,4 +942,7 @@ EAPI int  
embryo_parameter_cell_array_push(Embryo_Program *ep, Embry
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 06/55: evas: sphere is rotated to standard axis and fix tangents of sphere for Evas_3D examples.

2015-05-07 Thread Bogdan Devichev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b803714e406f5b447388640cefb2eeb4ca8decf7

commit b803714e406f5b447388640cefb2eeb4ca8decf7
Author: Bogdan Devichev 
Date:   Wed Apr 15 17:01:40 2015 +0200

evas: sphere is rotated to standard axis and fix tangents of sphere for 
Evas_3D examples.

Reviewers: Hermet, raster, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2333

Signed-off-by: Cedric BAIL 
---
 src/examples/evas/evas-3d-primitives.c | 112 +
 1 file changed, 87 insertions(+), 25 deletions(-)

diff --git a/src/examples/evas/evas-3d-primitives.c 
b/src/examples/evas/evas-3d-primitives.c
index f737002..d2297fa 100644
--- a/src/examples/evas/evas-3d-primitives.c
+++ b/src/examples/evas/evas-3d-primitives.c
@@ -278,45 +278,107 @@ void
 evas_3d_add_sphere_frame(Eo *mesh, int frame, int p, vec2 tex_scale)
 {
int vcount, icount, vccount, i, j;
-   icount = p * p * 6;
+   unsigned short *index;
+
vccount = p + 1;
vcount = vccount * vccount;
+   icount = p * p * 6;
 
ALLOCATE_VERTEX_DATA
 
-   double dtheta, dfi, sinth, costh, fi, theta, sinfi, cosfi;
-   dtheta = M_PI / p;
-   dfi = 2 * M_PI / p;
-
-   for (j = 0; j < vccount; j++)
+   /* Calculate vertices position of the sphere mesh by using
+  splitting of sphere by latitude and longitude. */
+   for (i = 0; i <= p; i++)
  {
-theta = j * dtheta;
-sinth = sin(theta);
-costh = cos(theta);
-for (i = 0; i < vccount; i++)
-  {
- fi = i * dfi;
- sinfi = sin(fi);
- cosfi = cos(fi);
- normals[i + j * vccount].x = sinth * sinfi;
- normals[i + j * vccount].y = costh;
- normals[i + j * vccount].z =  sinth * cosfi;
+double lati, z, r, point_r;
 
- vertices[i + j * vccount].x = normals[i + j * vccount].x / 2;
- vertices[i + j * vccount].y = normals[i + j * vccount].y / 2;
- vertices[i + j * vccount].z = normals[i + j * vccount].z / 2;
+point_r = 0.1;//non-zero little value for correct tangents 
calculation.
 
- tangents[i + j * vccount].x = normals[i + j * vccount].z;
- tangents[i + j * vccount].y = normals[i + j * vccount].y;
- tangents[i + j * vccount].z = -normals[i + j * vccount].x;
+lati = ((M_PI - 2 * point_r) * (double)i) / (double)p;
+z = cos(lati + point_r);
+r = fabs(sin(lati + point_r));
 
- tex_coord[i + j * vccount].x = i / (float)(vccount - 1) * 
tex_scale.x;
- tex_coord[i + j *vccount].y = tex_scale.y - j / (float)(vccount - 
1) * tex_scale.y;
+for (j = 0; j <= p; j++)
+  {
+ double longi;
+ int num = (i * (p + 1)) + j;
+
+ longi = (M_PI * 2.0 * (double)j) / (double)p;
+
+ normals[num].x = r * sin(longi);
+ normals[num].y = r * cos(longi);
+ normals[num].z = z;
+
+ vertices[num].x = normals[num].x / 2;
+ vertices[num].y = normals[num].y / 2;
+ vertices[num].z = normals[num].z / 2;
+
+ if (vertices[num].x > 0.0)
+   {
+  tangents[num].x = -normals[num].z;
+  tangents[num].y = normals[num].y;
+  tangents[num].z = normals[num].x;
+   }
+ else
+   {
+  tangents[num].x = normals[num].z;
+  tangents[num].y = normals[num].y;
+  tangents[num].z = -normals[num].x;
+   }
+
+ tex_coord[num].x = i / (float)(vccount - 1) * tex_scale.x;
+ tex_coord[num].y = tex_scale.y - j / (float)(vccount - 1) * 
tex_scale.y;
   }
  }
 
_generate_grid_indices(indices, p);
 
+   /* Triangulation of sphere mesh in appliance with buffer of indices. */
+   for (i = 0; i < icount; i += 3)
+ {
+vec3 e1, e2;
+float du1, du2, dv1, dv2, f;
+vec3 tangent;
+int num0, num1, num2;
+
+num0 = indices[i + 0];
+num1 = indices[i + 1];
+num2 = indices[i + 2];
+
+e1.x = vertices[num1].x - vertices[num0].x;
+e1.y = vertices[num1].y - vertices[num0].y;
+e1.z = vertices[num1].z - vertices[num0].z;
+
+e2.x = vertices[num2].x - vertices[num0].x;
+e2.y = vertices[num2].y - vertices[num0].y;
+e2.z = vertices[num2].z - vertices[num0].z;
+
+du1 = tex_coord[num1].x - tex_coord[num0].x;
+dv1 = tex_coord[num1].y - tex_coord[num0].y;
+
+du2 = tex_coord[num2].x - tex_coord[num0].x;
+dv2 = tex_coord[num2].y - tex_coord[num0].y;
+
+f = 1.0 / ((du1 * dv2) - (du2 * dv1));
+
+tangent.x = f * ((dv2 * e1.x) - (dv1 * e2.x));
+tangent.y = f * ((dv2 * e1.y) - (dv1 * e2.y));
+tange

[EGIT] [core/efl] master 16/55: evas: implement _op_blend_mas_can_dp_neon in NEON intrinsics.

2015-05-07 Thread Yury Usishchev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=970afe9bea5bd61bef208d65af0a3a6c7b912a42

commit 970afe9bea5bd61bef208d65af0a3a6c7b912a42
Author: Yury Usishchev 
Date:   Thu Apr 16 19:26:49 2015 +0200

evas: implement _op_blend_mas_can_dp_neon in NEON intrinsics.

Reviewers: raster, cedric

Reviewed By: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2369

Signed-off-by: Cedric BAIL 
---
 .../evas_op_blend/op_blend_mask_color_neon.c   | 136 ++---
 1 file changed, 117 insertions(+), 19 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
index a09277e..e492bb0 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c
@@ -279,25 +279,123 @@ _op_blend_mas_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, 
DATA32 c, DATA32 *d, in
 static void
 _op_blend_mas_can_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m, DATA32 c, DATA32 
*d, int l) {
 #ifdef BUILD_NEON_INTRINSICS
-   DATA32 *e;
-   int alpha;
-   UNROLL8_PLD_WHILE(d, l, e,
- {
-alpha = *m;
-switch(alpha)
-  {
-  case 0:
- break;
-  case 255:
- *d = c;
- break;
-  default:
- alpha++;
- *d = INTERP_256(alpha, c, *d);
- break;
-  }
-m++;  d++;
- });
+   int16x8_t c_i16x8;
+   int16x8_t d0_i16x8;
+   int16x8_t d1_i16x8;
+   int16x8_t dc0_i16x8;
+   int16x8_t dc1_i16x8;
+   int16x8_t m0_i16x8;
+   int16x8_t m1_i16x8;
+   int8x16_t dc_i8x16;
+   int8x8_t dc0_i8x8;
+   int8x8_t dc1_i8x8;
+   uint16x8_t c_16x8;
+   uint16x8_t d0_16x8;
+   uint16x8_t d1_16x8;
+   uint16x8_t m0_16x8;
+   uint16x8_t m1_16x8;
+   uint16x8_t m_16x8;
+   uint32x2_t c_32x2;
+   uint32x2_t m_32x2;
+   uint32x4_t d_32x4;
+   uint32x4_t dc_32x4;
+   uint32x4_t m_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t d_8x16;
+   uint8x16_t m_8x16;
+   uint8x16_t x1_8x16;
+   uint8x8_t c_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t m0_8x8;
+   uint8x8_t m1_8x8;
+   uint8x8_t m_8x8;
+   uint8x8_t x1_8x8;
+   uint32x4_t x0_32x4;
+   uint32x4_t cond_32x4;
+
+   c_32x2 = vdup_n_u32(c);
+   c_8x8 = vreinterpret_u8_u32(c_32x2);
+   c_16x8 = vmovl_u8(c_8x8);
+   c_i16x8 = vreinterpretq_s16_u16(c_16x8);
+   x1_8x16 = vdupq_n_u8(0x1);
+   x1_8x8 = vget_low_u8(x1_8x16);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+   x0_32x4 = vdupq_n_u32(0x0);
+
+   DATA32 *start = d;
+   int size = l;
+   DATA32 *end = start + (size & ~3);
+   while (start < end) {
+  int k = *((int *)m);
+  if (k == 0)
+  {
+ m+=4;
+ start+=4;
+ continue;
+  }
+
+  m_32x2 = vld1_lane_u32((DATA32*)m, m_32x2, 0);
+  d_32x4 = vld1q_u32(start);
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  m_8x8 = vreinterpret_u8_u32(m_32x2);
+  m_16x8 = vmovl_u8(m_8x8);
+  m_8x16 = vreinterpretq_u8_u16(m_16x8);
+  m_8x8 = vget_low_u8(m_8x16);
+  m_16x8 = vmovl_u8(m_8x8);
+  m_32x4 = vreinterpretq_u32_u16(m_16x8);
+
+  m_32x4 = vmulq_u32(m_32x4, x1_32x4);
+  m_8x16 = vreinterpretq_u8_u32(m_32x4);
+  m0_8x8 = vget_low_u8(m_8x16);
+  m1_8x8 = vget_high_u8(m_8x16);
+  m0_16x8 = vaddl_u8(m0_8x8, x1_8x8);
+  m1_16x8 = vaddl_u8(m1_8x8, x1_8x8);
+
+  m0_i16x8 = vreinterpretq_s16_u16(m0_16x8);
+  m1_i16x8 = vreinterpretq_s16_u16(m1_16x8);
+
+  d0_16x8 = vmovl_u8(d0_8x8);
+  d1_16x8 = vmovl_u8(d1_8x8);
+
+  d0_i16x8 = vreinterpretq_s16_u16(d0_16x8);
+  d1_i16x8 = vreinterpretq_s16_u16(d1_16x8);
+
+  dc0_i16x8 = vsubq_s16(c_i16x8, d0_i16x8);
+  dc1_i16x8 = vsubq_s16(c_i16x8, d1_i16x8);
+
+  dc0_i16x8 = vmulq_s16(dc0_i16x8, m0_i16x8);
+  dc1_i16x8 = vmulq_s16(dc1_i16x8, m1_i16x8);
+
+  dc0_i16x8 = vshrq_n_s16(dc0_i16x8, 8);
+  dc1_i16x8 = vshrq_n_s16(dc1_i16x8, 8);
+
+  dc0_i16x8 = vaddq_s16(dc0_i16x8, d0_i16x8);
+  dc1_i16x8 = vaddq_s16(dc1_i16x8, d1_i16x8);
+
+  dc0_i8x8 = vmovn_s16(dc0_i16x8);
+  dc1_i8x8 = vmovn_s16(dc1_i16x8);
+
+  dc_i8x16 = vcombine_s8(dc0_i8x8, dc1_i8x8);
+  dc_32x4 = vreinterpretq_u32_s8(dc_i8x16);
+
+  cond_32x4 = vceqq_u32(m_32x4, x0_32x4);
+  dc_32x4 = vbslq_u32(cond_32x4, d_32x4, dc_32x4);
+
+  vst1q_u32(start, dc_32x4);
+  m+=4;
+  start+=4;
+   }
+   end += (size & 3);
+   while (start <  end) {
+  DATA32 alpha = *m;
+  alpha++;
+  *start = INTERP_256(

[EGIT] [core/efl] master 28/55: evas: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=71b7fc982a2e23bcb41bf6d227bceeba1f5596ec

commit 71b7fc982a2e23bcb41bf6d227bceeba1f5596ec
Author: Cedric BAIL 
Date:   Tue Apr 28 14:24:11 2015 +0200

evas: remove the need to order the header correctly for Windows.
---
 src/lib/evas/Evas.h|  4 +++
 src/lib/evas/Evas_GL.h | 29 +
 src/lib/evas/Evas_Loader.h |  3 +++
 src/lib/evas/cserve2/evas_cs2_private.h| 26 +++
 src/lib/evas/include/evas_common_private.h | 29 +
 src/lib/evas/include/evas_filter.h | 30 +-
 src/lib/evas/include/evas_private.h| 26 +++
 .../evas/engines/gl_common/evas_gl_common.h| 29 +
 src/modules/evas/engines/gl_common/evas_gl_core.h  | 30 ++
 9 files changed, 205 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/Evas.h b/src/lib/evas/Evas.h
index 71d91ea..9abcfd3 100644
--- a/src/lib/evas/Evas.h
+++ b/src/lib/evas/Evas.h
@@ -292,8 +292,12 @@ extern "C" {
 #ifdef EFL_EO_API_SUPPORT
 #include 
 #endif
+
 #ifdef __cplusplus
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/evas/Evas_GL.h b/src/lib/evas/Evas_GL.h
index 5a7efef..255ccfc 100644
--- a/src/lib/evas/Evas_GL.h
+++ b/src/lib/evas/Evas_GL.h
@@ -4,6 +4,32 @@
 #include 
 //#include 
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -4616,6 +4642,9 @@ EvasGLImage *img = glapi->evasglCreateImageForContext
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif
 /**
  * @}
diff --git a/src/lib/evas/Evas_Loader.h b/src/lib/evas/Evas_Loader.h
index ab2fd13..58e760c 100644
--- a/src/lib/evas/Evas_Loader.h
+++ b/src/lib/evas/Evas_Loader.h
@@ -215,4 +215,7 @@ EAPI Eina_Boolevas_module_unregister (const 
Evas_Module_Api *module, Evas_Mo
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/evas/cserve2/evas_cs2_private.h 
b/src/lib/evas/cserve2/evas_cs2_private.h
index 2d4aeb4..9412a7d 100644
--- a/src/lib/evas/cserve2/evas_cs2_private.h
+++ b/src/lib/evas/cserve2/evas_cs2_private.h
@@ -4,6 +4,32 @@
 #include "evas_common_private.h"
 #include "evas_cs2.h"
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
 #define SHARED_BUFFER_PATH_MAX 64
 typedef struct _Data_Entry Data_Entry;
 typedef struct _Font_Entry Font_Entry;
diff --git a/src/lib/evas/include/evas_common_private.h 
b/src/lib/evas/include/evas_common_private.h
index 6b4cf5e..17a08bd 100644
--- a/src/lib/evas/include/evas_common_private.h
+++ b/src/lib/evas/include/evas_common_private.h
@@ -57,6 +57,32 @@
 #include "Evas.h"
 //#include "Evas_GL.h"
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
 #ifndef HAVE_LROUND
 /* right now i dont care about rendering bugs on platforms without lround
  (e.g. windows/vc++... yay!)
@@ -1317,6 +1343,9 @@ void 
evas_common_rgba_image_scalecache_item_unref(Image_Entry *ie);
 
 /*/
 
+#undef EAPI
+#define EAPI
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/evas/include/evas_filter.h 
b/src/lib/evas/include/evas_filter.h
index 70b45bf..2280441 100644
--- a/src/lib/evas/include/evas_filter.h
+++ b/src/lib/evas/include/evas_filter.h
@@ -4,6 +4,32 @@
 #include "evas_common_private.h"
 #include "evas_private.h"
 
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)

[EGIT] [core/efl] master 49/55: evas: implement _op_blend_rel_c_dp_neon using NEON intrinsics

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=10ece61dbf6d77d0a42df05c88742114c0ad6ef2

commit 10ece61dbf6d77d0a42df05c88742114c0ad6ef2
Author: Cedric BAIL 
Date:   Tue Apr 28 23:38:34 2015 +0200

evas: implement _op_blend_rel_c_dp_neon using NEON intrinsics

Summary: NEON intrinsics can be built both for armv7 and armv8.

Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2440

Signed-off-by: Cedric BAIL 
---
 .../common/evas_op_blend/op_blend_color_neon.c | 98 --
 1 file changed, 89 insertions(+), 9 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
index 7ba2ffd..076bad9 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
@@ -1,8 +1,6 @@
 #ifdef BUILD_NEON
-#ifdef BUILD_NEON_INTRINSICS
 #include 
 #endif
-#endif
 /* blend color --> dst */
 
 #ifdef BUILD_NEON
@@ -278,13 +276,95 @@ init_blend_color_pt_funcs_neon(void)
 #ifdef BUILD_NEON
 static void
 _op_blend_rel_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m EINA_UNUSED, DATA32 c, 
DATA32 *d, int l) {
-   DATA32 *e;
-   int alpha = 256 - (c >> 24);
-   UNROLL8_PLD_WHILE(d, l, e,
- {
-*d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d);
-d++;
- });
+   uint16x8_t ad0_16x8;
+   uint16x8_t ad1_16x8;
+   uint16x8_t dc0_16x8;
+   uint16x8_t dc1_16x8;
+   uint16x8_t x255_16x8;
+   uint32x2_t c_32x2;
+   uint32x4_t ad_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t dc_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t ad_8x16;
+   uint8x16_t d_8x16;
+   uint8x16_t dc_8x16;
+   uint8x16_t x1_8x16;
+   uint8x8_t ad0_8x8;
+   uint8x8_t ad1_8x8;
+   uint8x8_t alpha_8x8;
+   uint8x8_t c_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t dc0_8x8;
+   uint8x8_t dc1_8x8;
+
+   // alpha can only be 0 if color is 0x0. In that case we can just return.
+   // Otherwise we can assume alpha != 0. This allows more optimization in
+   // NEON code.
+
+   if(!c)
+  return;
+
+   unsigned char alpha;
+   alpha = ~(c >> 24) + 1; // 256 - (c >> 24)
+
+   alpha_8x8 = vdup_n_u8(alpha);
+   c_32x2 = vdup_n_u32(c);
+   c_8x8 = vreinterpret_u8_u32(c_32x2);
+   x1_8x16 = vdupq_n_u8(0x1);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+   x255_16x8 = vdupq_n_u16(0xff);
+
+   DATA32 *end = d + (l & ~3);
+   while (d < end)
+   {
+  // load 4 elements from d
+  d_32x4 = vld1q_u32(d);
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  // multiply MUL_256(alpha, *d);
+  ad0_16x8 = vmull_u8(alpha_8x8, d0_8x8);
+  ad1_16x8 = vmull_u8(alpha_8x8, d1_8x8);
+  ad0_8x8 = vshrn_n_u16(ad0_16x8,8);
+  ad1_8x8 = vshrn_n_u16(ad1_16x8,8);
+  ad_8x16 = vcombine_u8(ad0_8x8, ad1_8x8);
+  ad_32x4 = vreinterpretq_u32_u8(ad_8x16);
+
+  // shift (*d >> 24)
+  dc_32x4 = vshrq_n_u32(d_32x4, 24);
+  dc_32x4 = vmulq_u32(x1_32x4, dc_32x4);
+  dc_8x16 = vreinterpretq_u8_u32(dc_32x4);
+  dc0_8x8 = vget_low_u8(dc_8x16);
+  dc1_8x8 = vget_high_u8(dc_8x16);
+
+  // multiply MUL_256(*d >> 24, sc);
+  dc0_16x8 = vmull_u8(dc0_8x8, c_8x8);
+  dc1_16x8 = vmull_u8(dc1_8x8, c_8x8);
+  dc0_16x8 = vaddq_u16(dc0_16x8, x255_16x8);
+  dc1_16x8 = vaddq_u16(dc1_16x8, x255_16x8);
+  dc0_8x8 = vshrn_n_u16(dc0_16x8, 8);
+  dc1_8x8 = vshrn_n_u16(dc1_16x8, 8);
+  dc_8x16 = vcombine_u8(dc0_8x8, dc1_8x8);
+
+  // add up everything
+  dc_32x4 = vreinterpretq_u32_u8(dc_8x16);
+  d_32x4 = vaddq_u32(dc_32x4, ad_32x4);
+
+  // save result
+  vst1q_u32(d, d_32x4);
+
+  d+=4;
+   }
+
+   end += (l & 3);
+   while (d < end)
+   {
+  *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d);
+  d++;
+   }
 }
 
 #define _op_blend_rel_caa_dp_neon _op_blend_rel_c_dp_neon

-- 




[EGIT] [core/efl] master 09/55: evas: enable NEON-optimized code for aarch64.

2015-05-07 Thread Yury Usishchev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=71eec44ccc9ab43e728ba986fadce6c6cfd2ff7c

commit 71eec44ccc9ab43e728ba986fadce6c6cfd2ff7c
Author: Yury Usishchev 
Date:   Wed Apr 15 17:21:33 2015 +0200

evas: enable NEON-optimized code for aarch64.

Summary:
Add new define, BUILD_NEON_INTRINSICS to control whether NEON inline code or
NEON intrinsics should be built.

GCC NEON intrinsics can be built both for armv7 and armv8. However NEON 
inline
code can be built only for armv7.

@feature

Reviewers: raster, stefan_schmidt, cedric

Subscribers: cedric, stefan_schmidt

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2309

Signed-off-by: Cedric BAIL 
---
 configure.ac   | 18 +
 src/lib/evas/common/evas_blit_main.c   |  8 
 src/lib/evas/common/evas_cpu.c |  9 +
 .../common/evas_op_blend/op_blend_color_neon.c | 10 -
 .../evas_op_blend/op_blend_mask_color_neon.c   | 47 ++
 .../evas_op_blend/op_blend_pixel_color_neon.c  | 14 ++-
 .../common/evas_op_blend/op_blend_pixel_neon.c | 33 ++-
 .../evas/common/evas_op_copy/op_copy_color_neon.c  |  9 +
 8 files changed, 145 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index 9eed98c..63cc54d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -576,6 +576,21 @@ case $host_cpu in
CFLAGS="${CFLAGS_save}"
 fi
 ;;
+  aarch64*)
+if test "x${want_neon}" = "xyes"; then
+   build_cpu_neon="yes"
+   AC_MSG_CHECKING([whether to use NEON instructions])
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], 
[[volatile uint32x4_t test = vdupq_n_u32(0x1);]])],[
+   AC_MSG_RESULT([yes])
+   AC_DEFINE([BUILD_NEON], [1], [Build NEON Code])
+   AC_DEFINE([BUILD_NEON_INTRINSICS], [1], [Build NEON Intrinsics])
+   build_cpu_neon="yes"
+],[
+  AC_MSG_RESULT([no])
+   build_cpu_neon="no"
+])
+fi
+;;
 esac
 
 AC_SUBST([ALTIVEC_CFLAGS])
@@ -4741,6 +4756,9 @@ case $host_cpu in
   arm*)
 EFL_ADD_FEATURE([cpu], [neon], [${build_cpu_neon}])
 ;;
+  aarch64*)
+EFL_ADD_FEATURE([cpu], [neon], [${build_cpu_neon}])
+;;
 esac
 
 if test "${have_linux}" = "yes"; then
diff --git a/src/lib/evas/common/evas_blit_main.c 
b/src/lib/evas/common/evas_blit_main.c
index 7f8faa1..4da4034 100644
--- a/src/lib/evas/common/evas_blit_main.c
+++ b/src/lib/evas/common/evas_blit_main.c
@@ -132,6 +132,9 @@ evas_common_copy_rev_pixels_c(DATA32 *src, DATA32 *dst, int 
len)
 static void
 evas_common_copy_pixels_rev_neon(DATA32 *src, DATA32 *dst, int len)
 {
+#ifdef BUILD_NEON_INTRINSICS
+evas_common_copy_pixels_rev_c(src, dst, len);
+#else
uint32_t *tmp = (void *)37;
 #define AP "evas_common_copy_rev_pixels_neon_"
asm volatile (
@@ -228,6 +231,7 @@ evas_common_copy_pixels_rev_neon(DATA32 *src, DATA32 *dst, 
int len)
);
 #undef AP
 
+#endif
 }
 #endif
 
@@ -324,6 +328,9 @@ evas_common_copy_pixels_mmx2(DATA32 *src, DATA32 *dst, int 
len)
 #ifdef BUILD_NEON
 static void
 evas_common_copy_pixels_neon(DATA32 *src, DATA32 *dst, int len){
+#ifdef BUILD_NEON_INTRINSICS
+evas_common_copy_pixels_c(src, dst, len);
+#else
uint32_t *e,*tmp = (void *)37;
e = dst + len;
 #define AP "evas_common_copy_pixels_neon_"
@@ -410,6 +417,7 @@ evas_common_copy_pixels_neon(DATA32 *src, DATA32 *dst, int 
len){
);
 #undef AP
 
+#endif
 }
 #endif /* BUILD_NEON */
 
diff --git a/src/lib/evas/common/evas_cpu.c b/src/lib/evas/common/evas_cpu.c
index 4139098..0f83258 100644
--- a/src/lib/evas/common/evas_cpu.c
+++ b/src/lib/evas/common/evas_cpu.c
@@ -2,6 +2,11 @@
 #ifdef BUILD_MMX
 #include "evas_mmx.h"
 #endif
+#ifdef BUILD_NEON
+#ifdef BUILD_NEON_INTRINSICS
+#include 
+#endif
+#endif
 #if defined BUILD_SSE3
 #include 
 #endif
@@ -92,6 +97,9 @@ evas_common_cpu_neon_test(void)
 {
 //#if defined(__ARM_ARCH__) && (__ARM_ARCH__ >= 70)
 #ifdef BUILD_NEON
+#ifdef BUILD_NEON_INTRINSICS
+   volatile uint32x4_t temp = vdupq_n_u32(0x1);
+#else
asm volatile (
".fpu neon   \n\t"
  "vqadd.u8 d0, d1, d0\n"
@@ -101,6 +109,7 @@ evas_common_cpu_neon_test(void)
  "d0", "d1"
  );
 #endif
+#endif
 //#endif
 }
 
diff --git a/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
index 9e94298..2bf14c1 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_color_neon.c
@@ -3,6 +3,14 @@
 #ifdef BUILD_NEON
 static void
 _op_blend_c_dp_neon(DATA32 *s EINA_UNUSED, DATA8 *m EINA_UNUSED, DATA32 c, 
DATA32 *d, int l) {
+#ifdef BUILD_NEON_INTRINSICS
+DATA32 *e, a = 256 - (c >> 24);
+UNROLL8_PLD_WHILE(d, l, e,
+   

[EGIT] [core/efl] master 15/55: evas: implement _op_blend_p_c_dp_neon in NEON intrinsics.

2015-05-07 Thread Yury Usishchev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=be7c7c2c77c7b61f569532be7abb07858490bae6

commit be7c7c2c77c7b61f569532be7abb07858490bae6
Author: Yury Usishchev 
Date:   Thu Apr 16 19:25:29 2015 +0200

evas: implement _op_blend_p_c_dp_neon in NEON intrinsics.

Reviewers: cedric, raster

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2366

Signed-off-by: Cedric BAIL 
---
 .../evas_op_blend/op_blend_pixel_color_neon.c  | 116 +++--
 1 file changed, 106 insertions(+), 10 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
index c47ec7c..b1bfc25 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c
@@ -1,3 +1,8 @@
+#ifdef BUILD_NEON
+#ifdef BUILD_NEON_INTRINSICS
+#include 
+#endif
+#endif
 /* blend pixel x color --> dst */
 #ifdef BUILD_NEON
 
@@ -8,16 +13,107 @@
 static void
 _op_blend_p_c_dp_neon(DATA32 * __restrict s, DATA8 *m EINA_UNUSED, DATA32 c, 
DATA32 * __restrict d, int l) {
 #ifdef BUILD_NEON_INTRINSICS
-   DATA32 *e;
-   int alpha;
-   UNROLL8_PLD_WHILE(d, l, e,
- {
-DATA32 sc = MUL4_SYM(c, *s);
-alpha = 256 - (sc >> 24);
-*d = sc + MUL_256(alpha, *d);
-d++;
-s++;
- });
+   uint16x8_t ad0_16x8;
+   uint16x8_t ad1_16x8;
+   uint16x8_t sc0_16x8;
+   uint16x8_t sc1_16x8;
+   uint16x8_t x255_16x8;
+   uint32x2_t c_32x2;
+   uint32x4_t ad_32x4;
+   uint32x4_t alpha_32x4;
+   uint32x4_t cond_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t s_32x4;
+   uint32x4_t sc_32x4;
+   uint32x4_t x0_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t ad_8x16;
+   uint8x16_t alpha_8x16;
+   uint8x16_t d_8x16;
+   uint8x16_t s_8x16;
+   uint8x16_t sc_8x16;
+   uint8x16_t x0_8x16;
+   uint8x16_t x1_8x16;
+   uint8x8_t ad0_8x8;
+   uint8x8_t ad1_8x8;
+   uint8x8_t alpha0_8x8;
+   uint8x8_t alpha1_8x8;
+   uint8x8_t c_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t s0_8x8;
+   uint8x8_t s1_8x8;
+   uint8x8_t sc0_8x8;
+   uint8x8_t sc1_8x8;
+
+   c_32x2 = vdup_n_u32(c);
+   c_8x8 = vreinterpret_u8_u32(c_32x2);
+   x255_16x8 = vdupq_n_u16(0xff);
+   x0_8x16 = vdupq_n_u8(0x0);
+   x0_32x4 = vreinterpretq_u32_u8(x0_8x16);
+   x1_8x16 = vdupq_n_u8(0x1);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+   DATA32 *start = d;
+   int size = l;
+   DATA32 *end = start + (size & ~3);
+   while (start < end)
+   {
+
+  s_32x4 = vld1q_u32(s);
+  s_8x16 = vreinterpretq_u8_u32(s_32x4);
+
+  d_32x4 = vld1q_u32(start);
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  s0_8x8 = vget_low_u8(s_8x16);
+  s1_8x8 = vget_high_u8(s_8x16);
+
+  sc0_16x8 = vmull_u8(s0_8x8, c_8x8);
+  sc1_16x8 = vmull_u8(s1_8x8, c_8x8);
+  sc0_16x8 = vaddq_u16(sc0_16x8, x255_16x8);
+  sc1_16x8 = vaddq_u16(sc1_16x8, x255_16x8);
+  sc0_8x8 = vshrn_n_u16(sc0_16x8, 8);
+  sc1_8x8 = vshrn_n_u16(sc1_16x8, 8);
+  sc_8x16 = vcombine_u8(sc0_8x8, sc1_8x8);
+
+  alpha_32x4 = vreinterpretq_u32_u8(sc_8x16);
+  alpha_32x4 = vshrq_n_u32(alpha_32x4, 24);
+  alpha_32x4 = vmulq_u32(x1_32x4, alpha_32x4);
+  alpha_8x16 = vreinterpretq_u8_u32(alpha_32x4);
+  alpha_8x16 = vsubq_u8(x0_8x16, alpha_8x16);
+  alpha0_8x8 = vget_low_u8(alpha_8x16);
+  alpha1_8x8 = vget_high_u8(alpha_8x16);
+
+  ad0_16x8 = vmull_u8(alpha0_8x8, d0_8x8);
+  ad1_16x8 = vmull_u8(alpha1_8x8, d1_8x8);
+  ad0_8x8 = vshrn_n_u16(ad0_16x8,8);
+  ad1_8x8 = vshrn_n_u16(ad1_16x8,8);
+  ad_8x16 = vcombine_u8(ad0_8x8, ad1_8x8);
+  ad_32x4 = vreinterpretq_u32_u8(ad_8x16);
+
+  alpha_32x4 = vreinterpretq_u32_u8(alpha_8x16);
+  cond_32x4 = vceqq_u32(alpha_32x4, x0_32x4);
+  ad_32x4 = vbslq_u32(cond_32x4, d_32x4 , ad_32x4);
+
+  sc_32x4 = vreinterpretq_u32_u8(sc_8x16);
+  d_32x4 = vaddq_u32(sc_32x4, ad_32x4);
+
+  vst1q_u32(start, d_32x4);
+
+  s+=4;
+  start+=4;
+   }
+   end += (size & 3);
+   while (start <  end)
+   {
+  DATA32 sc = MUL4_SYM(c, *s);
+  DATA32 alpha = 256 - (sc >> 24);
+  *start = sc + MUL_256(alpha, *start);
+  start++;
+  s++;
+   }
 #else
 #define AP "blend_p_c_dp_"
asm volatile (

-- 




[EGIT] [core/efl] master 44/55: eina: add benchmark for crc hash in eina benchmark

2015-05-07 Thread vivek
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=eec4a7bd0caa7d52bff6cc524ca12efa16d1445b

commit eec4a7bd0caa7d52bff6cc524ca12efa16d1445b
Author: vivek 
Date:   Tue Apr 28 23:29:18 2015 +0200

eina: add benchmark for crc hash in eina benchmark

Summary:
The code added is actually benchmarking all hash function key with various 
length (8, 32, 256 bytes).

Signed-off-by: vivek 

Reviewers: Sergeant_Whitespace, cedric

Reviewed By: cedric

Subscribers: Sergeant_Whitespace, cedric

Differential Revision: https://phab.enlightenment.org/D2217

Signed-off-by: Cedric BAIL 
---
 src/benchmarks/eina/Makefile.am   |   1 +
 src/benchmarks/eina/eina_bench.c  |   3 +
 src/benchmarks/eina/eina_bench.h  |   5 +
 src/benchmarks/eina/eina_bench_crc_hash.c | 279 ++
 4 files changed, 288 insertions(+)

diff --git a/src/benchmarks/eina/Makefile.am b/src/benchmarks/eina/Makefile.am
index 9f64d46..da6ceb9 100644
--- a/src/benchmarks/eina/Makefile.am
+++ b/src/benchmarks/eina/Makefile.am
@@ -18,6 +18,7 @@ eina_bench_SOURCES = \
 eina_bench.c \
 eina_bench_sort.c \
 eina_bench_hash.c \
+eina_bench_crc_hash.c \
 eina_bench_stringshare.c \
 eina_bench_convert.c \
 eina_bench_mempool.c \
diff --git a/src/benchmarks/eina/eina_bench.c b/src/benchmarks/eina/eina_bench.c
index dec210e..1ca7e51 100644
--- a/src/benchmarks/eina/eina_bench.c
+++ b/src/benchmarks/eina/eina_bench.c
@@ -37,6 +37,9 @@ struct _Eina_Benchmark_Case
 
 static const Eina_Benchmark_Case etc[] = {
{ "Hash", eina_bench_hash, EINA_TRUE },
+   { "Hash_Short_Key", eina_bench_crc_hash_short, EINA_TRUE },
+   { "Hash_Medium_Key", eina_bench_crc_hash_medium, EINA_TRUE },
+   { "Hash_Large_key", eina_bench_crc_hash_large, EINA_TRUE },
{ "Array vs List vs Inlist", eina_bench_array, EINA_TRUE },
{ "Stringshare", eina_bench_stringshare, EINA_TRUE },
{ "Convert", eina_bench_convert, EINA_TRUE },
diff --git a/src/benchmarks/eina/eina_bench.h b/src/benchmarks/eina/eina_bench.h
index d575822..f076d41 100644
--- a/src/benchmarks/eina/eina_bench.h
+++ b/src/benchmarks/eina/eina_bench.h
@@ -21,7 +21,12 @@
 
 #include "eina_benchmark.h"
 
+int key_size;
+
 void eina_bench_hash(Eina_Benchmark *bench);
+void eina_bench_crc_hash_short(Eina_Benchmark *bench);
+void eina_bench_crc_hash_medium(Eina_Benchmark *bench);
+void eina_bench_crc_hash_large(Eina_Benchmark *bench);
 void eina_bench_array(Eina_Benchmark *bench);
 void eina_bench_stringshare(Eina_Benchmark *bench);
 void eina_bench_convert(Eina_Benchmark *bench);
diff --git a/src/benchmarks/eina/eina_bench_crc_hash.c 
b/src/benchmarks/eina/eina_bench_crc_hash.c
new file mode 100644
index 000..b673448
--- /dev/null
+++ b/src/benchmarks/eina/eina_bench_crc_hash.c
@@ -0,0 +1,279 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include 
+#include 
+#include 
+#include 
+
+#ifdef EINA_BENCH_HAVE_GLIB
+# include 
+#endif
+
+#include 
+#include "Evas_Data.h"
+#include "Ecore_Data.h"
+
+#include "eina_hash.h"
+#include "eina_array.h"
+#include "eina_bench.h"
+#include "eina_rbtree.h"
+#include "eina_convert.h"
+
+#ifdef CITYHASH_BENCH
+// Hash function for a byte array.
+uint64_t CityHash64(const char *buf, size_t len);
+#endif
+
+char *key_str=NULL;
+
+void repchar(int n)
+{
+   key_str = (char *)malloc(n);
+   int i;
+
+   for (i = 0; i < n; i++)
+  key_str[i] = 'a';
+}
+
+static void
+eina_bench_murmur_hash(int request)
+{
+   unsigned int i;
+
+   for (i = 0; i < (unsigned int)request; ++i)
+ {
+char tmp_key[key_size];
+
+eina_convert_itoa(i, tmp_key);
+eina_strlcat(tmp_key, key_str, key_size);
+
+eina_hash_murmur3(tmp_key, key_size);
+ }
+}
+
+#ifdef CITYHASH_BENCH
+static void
+eina_bench_cityhash(int request)
+{
+   unsigned int i;
+
+   for (i = 0; i < (unsigned int)request; ++i)
+ {
+char tmp_key[key_size];
+
+eina_convert_itoa(i, tmp_key);
+eina_strlcat(tmp_key, key_str, key_size);
+
+CityHash64(tmp_key, key_size);
+ }
+}
+#endif
+
+static void
+eina_bench_superfast_hash(int request)
+{
+   unsigned int i;
+
+   for (i = 0; i < (unsigned int)request; ++i)
+ {
+char tmp_key[key_size];
+
+eina_convert_itoa(i, tmp_key);
+eina_strlcat(tmp_key, key_str, key_size);
+
+eina_hash_superfast(tmp_key, key_size);
+ }
+}
+
+static void
+eina_bench_crchash(int request)
+{
+   unsigned int i;
+
+   for (i = 0; i < (unsigned int)request; ++i)
+ {
+char tmp_key[key_size];
+
+eina_convert_itoa(i, tmp_key);
+eina_strlcat(tmp_key, key_str, key_size);
+
+eina_hash_crc(tmp_key, key_size);
+ }
+}
+
+static void
+eina_bench_djb2_hash(int request)
+{
+   unsigned int i;
+
+   for (i = 0; i < (unsigned int)request; ++i)
+ {
+char tmp_key[key_size];
+
+eina_convert_itoa(i, tmp_key);
+   

[EGIT] [core/efl] master 17/55: edje: add align 3d support.

2015-05-07 Thread perepelits.m
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=83bb3b5b5180bbe96d6ea8da1f3b82071b6a01c9

commit 83bb3b5b5180bbe96d6ea8da1f3b82071b6a01c9
Author: perepelits.m 
Date:   Thu Apr 16 19:29:01 2015 +0200

edje: add align 3d support.

Summary: Adding of Z axis to be aligned

Reviewers: cedric, raster, Hermet

Subscribers: cedric, artem.popov

Differential Revision: https://phab.enlightenment.org/D2368

Signed-off-by: Cedric BAIL 
---
 src/bin/edje/edje_cc_handlers.c | 23 +--
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index 41da0f2..fe11ddb 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -6377,6 +6377,9 @@ ob_collections_group_parts_part_description(void)
ed->minmul.have = 1;
ed->minmul.w = FROM_INT(1);
ed->minmul.h = FROM_INT(1);
+   ed->align_3d.x = FROM_DOUBLE(0.5);
+   ed->align_3d.y = FROM_DOUBLE(0.5);
+   ed->align_3d.z = FROM_DOUBLE(0.5);
 }
 
 static void
@@ -6870,7 +6873,7 @@ st_collections_group_parts_part_description_limit(void)
 @property
 align
 @parameters
-[X axis] [Y axis]
+[X axis] [Y axis] ([Z axis])
 @effect
 When the displayed object's size is smaller (or bigger) than
 its container, this property moves it relatively along both
@@ -6878,16 +6881,24 @@ st_collections_group_parts_part_description_limit(void)
 the object touching container's respective ones, while @c
 "1.0" stands for right/bottom edges of the object (on
 horizonal/vertical axis, respectively). The default value is
-@c "0.5 0.5".
+@c "0.5 0.5". There is one more parametr for Z axis in case
+of MESH_NODE.
 @endproperty
 */
 static void
 st_collections_group_parts_part_description_align(void)
 {
-   check_arg_count(2);
-
-   current_desc->align.x = FROM_DOUBLE(parse_float_range(0, 0.0, 1.0));
-   current_desc->align.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0));
+   if (get_arg_count() == 2)
+ {
+current_desc->align.x = FROM_DOUBLE(parse_float_range(0, 0.0, 1.0));
+current_desc->align.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0));
+ }
+   else if (get_arg_count() == 3)
+ {
+current_desc->align_3d.x = FROM_DOUBLE(parse_float_range(0, 0.0, 1.0));
+current_desc->align_3d.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0));
+current_desc->align_3d.z = FROM_DOUBLE(parse_float_range(2, 0.0, 1.0));
+ }
 }
 
 /**

-- 




[EGIT] [core/efl] master 21/55: evas: implement _op_blend_p_mas_dp_neon and _op_blend_pas_mas_dp_neon in NEON intrinsics.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=657d495aa9607774409206099d809a1a737b736a

commit 657d495aa9607774409206099d809a1a737b736a
Author: Cedric BAIL 
Date:   Wed Apr 22 15:24:13 2015 +0200

evas: implement _op_blend_p_mas_dp_neon and _op_blend_pas_mas_dp_neon in 
NEON intrinsics.

Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2391

Signed-off-by: Cedric BAIL 
---
 .../evas_op_blend/op_blend_pixel_mask_neon.c   | 384 ++---
 1 file changed, 337 insertions(+), 47 deletions(-)

diff --git a/src/lib/evas/common/evas_op_blend/op_blend_pixel_mask_neon.c 
b/src/lib/evas/common/evas_op_blend/op_blend_pixel_mask_neon.c
index 0c1029b..317e7d5 100644
--- a/src/lib/evas/common/evas_op_blend/op_blend_pixel_mask_neon.c
+++ b/src/lib/evas/common/evas_op_blend/op_blend_pixel_mask_neon.c
@@ -1,62 +1,352 @@
+#ifdef BUILD_NEON
+#include 
+#endif
 /* blend pixel x mask --> dst */
 
-// FIXME: These functions most likely don't perform the correct operation.
-// Test them with masks and images.
-
 #ifdef BUILD_NEON
-#if 0
 static void
 _op_blend_pas_mas_dp_neon(DATA32 *s, DATA8 *m, DATA32 c EINA_UNUSED, DATA32 
*d, int l) {
-   DATA32 *e;
+   uint16x8_t m_16x8;
+   uint16x8_t ms0_16x8;
+   uint16x8_t ms1_16x8;
+   uint16x8_t temp0_16x8;
+   uint16x8_t temp1_16x8;
+   uint16x8_t x255_16x8;
+   uint32_t m_32;
+   uint32x2_t m_32x2;
+   uint32x4_t a_32x4;
+   uint32x4_t ad_32x4;
+   uint32x4_t cond_32x4;
+   uint32x4_t d_32x4;
+   uint32x4_t m_32x4;
+   uint32x4_t ms_32x4;
+   uint32x4_t s_32x4;
+   uint32x4_t temp_32x4;
+   uint32x4_t x0_32x4;
+   uint32x4_t x1_32x4;
+   uint8x16_t a_8x16;
+   uint8x16_t d_8x16;
+   uint8x16_t m_8x16;
+   uint8x16_t ms_8x16;
+   uint8x16_t s_8x16;
+   uint8x16_t temp_8x16;
+   uint8x16_t x0_8x16;
+   uint8x16_t x1_8x16;
+   uint8x8_t a0_8x8;
+   uint8x8_t a1_8x8;
+   uint8x8_t d0_8x8;
+   uint8x8_t d1_8x8;
+   uint8x8_t m0_8x8;
+   uint8x8_t m1_8x8;
+   uint8x8_t m_8x8;
+   uint8x8_t ms0_8x8;
+   uint8x8_t ms1_8x8;
+   uint8x8_t s0_8x8;
+   uint8x8_t s1_8x8;
+   uint8x8_t temp0_8x8;
+   uint8x8_t temp1_8x8;
+
+   x1_8x16 = vdupq_n_u8(0x1);
+   x1_32x4 = vreinterpretq_u32_u8(x1_8x16);
+   x255_16x8 = vdupq_n_u16(0xff);
+   x0_8x16 = vdupq_n_u8(0x0);
+   x0_32x4 = vreinterpretq_u32_u8(x0_8x16);
+
+   DATA32 *end = d + (l & ~3);
+   while (d < end)
+   {
+  unsigned int k = *((unsigned int *)m);
+  // shortcut if *m==0
+  if (k == 0)
+  {
+ m+=4;
+ d+=4;
+ s+=4;
+ continue;
+  }
+  // shortcut if *m==0xff
+  if (~k == 0)
+  {
+ // load 4 elements from s
+ s_32x4 = vld1q_u32(s);
+ s_8x16 = vreinterpretq_u8_u32(s_32x4);
+
+ // load 4 elements from d
+ d_32x4 = vld1q_u32(d);
+ d_8x16 = vreinterpretq_u8_u32(d_32x4);
+ d0_8x8 = vget_low_u8(d_8x16);
+ d1_8x8 = vget_high_u8(d_8x16);
+
+ // substract 256 - *s
+ a_8x16 = vsubq_u8(x0_8x16, s_8x16);
+ a_32x4 = vreinterpretq_u32_u8(a_8x16);
+
+ // shift alpha>>24 and place it into every 8bit element
+ a_32x4 = vshrq_n_u32(a_32x4, 24);
+ a_32x4 = vmulq_u32(a_32x4, x1_32x4);
+ a_8x16 = vreinterpretq_u8_u32(a_32x4);
+ a0_8x8 = vget_low_u8(a_8x16);
+ a1_8x8 = vget_high_u8(a_8x16);
+
+ // multiply MUL_256(a, *d)
+ temp0_16x8 = vmull_u8(a0_8x8, d0_8x8);
+ temp1_16x8 = vmull_u8(a1_8x8, d1_8x8);
+ temp0_8x8 = vshrn_n_u16(temp0_16x8,8);
+ temp1_8x8 = vshrn_n_u16(temp1_16x8,8);
+ temp_8x16 = vcombine_u8(temp0_8x8, temp1_8x8);
+ temp_32x4 = vreinterpretq_u32_u8(temp_8x16);
+
+ // if alpha is 0, replace a*d with d
+ cond_32x4 = vceqq_u32(a_32x4, x0_32x4);
+ ad_32x4 = vbslq_u32(cond_32x4, d_32x4, temp_32x4);
+
+ // add *s
+ d_32x4 = vaddq_u32(s_32x4, ad_32x4);
+
+ // save result
+ vst1q_u32(d, d_32x4);
+ m+=4;
+ d+=4;
+ s+=4;
+ continue;
+  }
+  // load 4 elements from m
+  m_32 = k;
+  m_32x2 = vset_lane_u32(m_32, m_32x2, 0);
+
+  // load 4 elements from s
+  s_32x4 = vld1q_u32(s);
+  s_8x16 = vreinterpretq_u8_u32(s_32x4);
+  s0_8x8 = vget_low_u8(s_8x16);
+  s1_8x8 = vget_high_u8(s_8x16);
+
+  // load 4 elements from d
+  d_32x4 = vld1q_u32(d);
+  d_8x16 = vreinterpretq_u8_u32(d_32x4);
+  d0_8x8 = vget_low_u8(d_8x16);
+  d1_8x8 = vget_high_u8(d_8x16);
+
+  // make m 32 bit wide
+  m_8x8 = vreinterpret_u8_u32(m_32x2);
+  m_16x8 = vmovl_u8(m_8x8);
+  m_8x16 = vreinterpretq_u8_u16(m_16x8);
+  m_8x8 = vget_low_u8(m_8x16);
+  m_16x8 = vmovl_u8(m_8x8);
+  m_32x4 = vreinterpretq_u32_u16(m_16x8);
+
+  // place m into every 8 bit element of 

[EGIT] [core/efl] master 26/55: emile: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=fe6f394dabe5db0cb739ac852b9f3f36247a0885

commit fe6f394dabe5db0cb739ac852b9f3f36247a0885
Author: Cedric BAIL 
Date:   Tue Apr 28 14:22:38 2015 +0200

emile: remove the need to order the header correctly for Windows.
---
 src/lib/emile/Emile.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/emile/Emile.h b/src/lib/emile/Emile.h
index 88e2c62..486acc3 100644
--- a/src/lib/emile/Emile.h
+++ b/src/lib/emile/Emile.h
@@ -114,4 +114,7 @@ EAPI int emile_shutdown(void);
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 31/55: eeze: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e2f69adcf08b2967cfad08b1c0295d9333262925

commit e2f69adcf08b2967cfad08b1c0295d9333262925
Author: Cedric BAIL 
Date:   Tue Apr 28 15:09:59 2015 +0200

eeze: remove the need to order the header correctly for Windows.
---
 src/lib/eeze/Eeze.h | 3 +++
 src/lib/eeze/Eeze_Net.h | 9 ++---
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/lib/eeze/Eeze.h b/src/lib/eeze/Eeze.h
index 0ad8a29..39096a0 100644
--- a/src/lib/eeze/Eeze.h
+++ b/src/lib/eeze/Eeze.h
@@ -705,4 +705,7 @@ EAPI void*eeze_udev_watch_del(Eeze_Udev_Watch 
*watch);
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/eeze/Eeze_Net.h b/src/lib/eeze/Eeze_Net.h
index aa58deb..25bc27f 100644
--- a/src/lib/eeze/Eeze_Net.h
+++ b/src/lib/eeze/Eeze_Net.h
@@ -1,6 +1,9 @@
 #ifndef EEZE_NET_H
 #define EEZE_NET_H
 
+#include 
+#include 
+
 #ifdef EAPI
 # undef EAPI
 #endif
@@ -15,9 +18,6 @@
 # define EAPI
 #endif
 
-#include 
-#include 
-
 /**
  * @file Eeze_Net.h
  * @brief Network manipulation
@@ -62,4 +62,7 @@ EAPI Eina_List  *eeze_net_list(void);
 #endif
 /** @} */
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 18/55: evas: add to Evas_GL_Image flag disable generate atlas.

2015-05-07 Thread Oleksandr Shcherbina
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0f6d101ad5ec8327088e448c347e1f4054a5c8d7

commit 0f6d101ad5ec8327088e448c347e1f4054a5c8d7
Author: Oleksandr Shcherbina 
Date:   Wed Apr 22 15:15:08 2015 +0200

evas: add to Evas_GL_Image flag disable generate atlas.

Summary:
It is need in case Evas_3D_Mesh created with not normileze texture 
coordinate
and flag repeat mode for Evas_3D_Texture
Additional info see here https://phab.enlightenment.org/conpherence/54/
Use Evas_GL_Image for generation texture unit for Evas_3D_Texture
see here https://phab.enlightenment.org/D2371

Reviewers: jpeg, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2375

Signed-off-by: Cedric BAIL 
---
 src/modules/evas/engines/gl_common/evas_gl_common.h  |  4 +++-
 src/modules/evas/engines/gl_common/evas_gl_image.c   |  8 
 src/modules/evas/engines/gl_common/evas_gl_texture.c | 17 +++--
 src/modules/evas/engines/gl_generic/evas_engine.c|  2 +-
 4 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/modules/evas/engines/gl_common/evas_gl_common.h 
b/src/modules/evas/engines/gl_common/evas_gl_common.h
index d4ca68d..4460835 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_common.h
+++ b/src/modules/evas/engines/gl_common/evas_gl_common.h
@@ -654,6 +654,8 @@ struct _Evas_GL_Image
unsigned chartex_only : 1;
unsigned charlocked : 1; // gl_surface_lock/unlock
unsigned chardirect : 1; // evas gl direct renderable
+   /*Disable generate atlas for texture unit, EINA_FALSE by default*/
+   Eina_Booldisable_atlas : 1;
 };
 
 struct _Evas_GL_Font_Texture
@@ -811,7 +813,7 @@ int   
evas_gl_common_file_cache_save(Evas_GL_Shared *shared);
 void  evas_gl_common_rect_draw(Evas_Engine_GL_Context *gc, int x, 
int y, int w, int h);
 
 void  evas_gl_texture_pool_empty(Evas_GL_Texture_Pool *pt);
-Evas_GL_Texture  *evas_gl_common_texture_new(Evas_Engine_GL_Context *gc, 
RGBA_Image *im);
+Evas_GL_Texture  *evas_gl_common_texture_new(Evas_Engine_GL_Context *gc, 
RGBA_Image *im, Eina_Bool disable_atlas);
 Evas_GL_Texture  *evas_gl_common_texture_native_new(Evas_Engine_GL_Context 
*gc, unsigned int w, unsigned int h, int alpha, Evas_GL_Image *im);
 Evas_GL_Texture  *evas_gl_common_texture_render_new(Evas_Engine_GL_Context 
*gc, unsigned int w, unsigned int h, int alpha);
 Evas_GL_Texture  *evas_gl_common_texture_dynamic_new(Evas_Engine_GL_Context 
*gc, Evas_GL_Image *im);
diff --git a/src/modules/evas/engines/gl_common/evas_gl_image.c 
b/src/modules/evas/engines/gl_common/evas_gl_image.c
index 09d999b..3a4ad54 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_image.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_image.c
@@ -516,7 +516,7 @@ evas_gl_common_image_alpha_set(Evas_GL_Image *im, int alpha)
  }
else
  {
-im->tex = evas_gl_common_texture_new(im->gc, im->im);
+im->tex = evas_gl_common_texture_new(im->gc, im->im, EINA_FALSE);
 if (im->tex) evas_gl_common_texture_update(im->tex, im->im);
  }
return im;
@@ -679,7 +679,7 @@ evas_gl_common_image_content_hint_set(Evas_GL_Image *im, 
int hint)
 evas_cache_image_colorspace(&im->im->cache_entry, im->cs.space);
 im->im = (RGBA_Image *)evas_cache_image_size_set(&im->im->cache_entry, 
im->w, im->h);
 if (!im->tex)
-   im->tex = evas_gl_common_texture_new(im->gc, im->im);
+   im->tex = evas_gl_common_texture_new(im->gc, im->im, EINA_FALSE);
  }
 }
 
@@ -841,14 +841,14 @@ evas_gl_common_image_update(Evas_Engine_GL_Context *gc, 
Evas_GL_Image *im)
  if (evas_cache2_image_cached(ie))
{
   evas_cache2_image_load_data(ie);
-  im->tex = evas_gl_common_texture_new(gc, im->im);
+  im->tex = evas_gl_common_texture_new(gc, im->im, 
im->disable_atlas);
   evas_cache2_image_unload_data(ie);
}
  else
 #endif
{
   evas_cache_image_load_data(ie);
-  im->tex = evas_gl_common_texture_new(gc, im->im);
+  im->tex = evas_gl_common_texture_new(gc, im->im, 
im->disable_atlas);
   evas_cache_image_unload_data(ie);
}
   }
diff --git a/src/modules/evas/engines/gl_common/evas_gl_texture.c 
b/src/modules/evas/engines/gl_common/evas_gl_texture.c
index f65784d..5c1c07f 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_texture.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_texture.c
@@ -439,13 +439,18 @@ _pool_tex_alloc(Evas_GL_Texture_Pool *pt, int w, int h, 
int *u, int *v)
 static Evas_GL_Texture_Pool *
 _pool_tex_find(Evas_Engine_GL_Context *gc, int w, int h,
GLenum intformat, GLenum format, int *u, int *v,
-  

[EGIT] [core/efl] master 30/55: edje: remove the need to order the header correctly for Windows.

2015-05-07 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=59fb53c4cc41434da051626c75b5ffa4569d7c0d

commit 59fb53c4cc41434da051626c75b5ffa4569d7c0d
Author: Cedric BAIL 
Date:   Tue Apr 28 15:09:11 2015 +0200

edje: remove the need to order the header correctly for Windows.
---
 src/lib/edje/Edje.h |  3 +++
 src/lib/edje/edje_private.h | 28 
 2 files changed, 31 insertions(+)

diff --git a/src/lib/edje/Edje.h b/src/lib/edje/Edje.h
index ccace36..c13292f 100644
--- a/src/lib/edje/Edje.h
+++ b/src/lib/edje/Edje.h
@@ -261,4 +261,7 @@ extern "C" {
 }
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index 4abc5eb..5d9592b 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -58,6 +58,31 @@
 #endif
 
 #include "Edje.h"
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EDJE_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EDJE_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
 
 EAPI extern int _edje_default_log_dom ;
 
@@ -2800,4 +2825,7 @@ typedef Eina_Bool (*MULTISENSE_FACTORY_INIT_FUNC) 
(Edje_Multisense_Env *);
 typedef RemixBase* (*MULTISENSE_SOUND_PLAYER_GET_FUNC) (Edje_Multisense_Env *);
 #endif
 
+#undef EAPI
+#define EAPI
+
 #endif

-- 




[EGIT] [core/efl] master 22/55: evas: primitives - Changed enum for types of Evas_3D_Mesh primitives

2015-05-07 Thread Bogdan Devichev
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=04038dfaefa81e39988b3dc90b84da73dfea5e1f

commit 04038dfaefa81e39988b3dc90b84da73dfea5e1f
Author: Bogdan Devichev 
Date:   Wed Apr 22 15:27:49 2015 +0200

evas: primitives - Changed enum for types of Evas_3D_Mesh primitives

Summary:
**`Creating API for primitives.`**

//What should be in the end://

- Class evas_3d_primitive inherited from eo.base
- Unificated API of mesh for setting data from primitives
- API's of primitives to get/set precision, ratio, type, tex_scale etc.
- code of primitives in separated modules

//Steps://

**1.) Enum for types of primitives**
2.) Copies of primitives in modules
3.) Eo and c files for class of primitive
4.) In common create picker of module
5.) API function in mesh.c
6.) Binding of new realization
7.) Rewriting of examples
8.) Deleting of old files for primitives

//Also this commit will be usable in parsing EDC by edje//

Reviewers: Hermet, raster, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2359

Signed-off-by: Cedric BAIL 
---
 src/lib/evas/Evas_Eo.h | 20 +---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h
index 2964442..8850a45 100644
--- a/src/lib/evas/Evas_Eo.h
+++ b/src/lib/evas/Evas_Eo.h
@@ -721,12 +721,26 @@ typedef enum _Evas_3D_Wrap_Mode
  */
 typedef enum _Evas_3D_Mesh_Primitive
 {
+   /**< An empty space */
EVAS_3D_MESH_PRIMITIVE_NONE = 0,
-   EVAS_3D_MESH_PRIMITIVE_CUBE = 1,
-   EVAS_3D_MESH_PRIMITIVE_SPHERE = 2
+   /**< One sided square */
+   EVAS_3D_MESH_PRIMITIVE_SQUARE,
+   /**< Cube */
+   EVAS_3D_MESH_PRIMITIVE_CUBE,
+   /**< Cylinder (can use precision and texture scale) */
+   EVAS_3D_MESH_PRIMITIVE_CYLINDER,
+   /**< Cone (can use precision and texture scale) */
+   EVAS_3D_MESH_PRIMITIVE_CONE,
+   /**< Sphere (can use precision and texture scale) */
+   EVAS_3D_MESH_PRIMITIVE_SPHERE,
+   /**< Torus (can use ratio, precision and texture scale) */
+   EVAS_3D_MESH_PRIMITIVE_TORUS,
+   /**< Custom surface (can use pointer to users function, precision and 
texture scale) */
+   EVAS_3D_MESH_PRIMITIVE_SURFACE,
+   /**< Terrain as surface with pointer to Perlin's noise function */
+   EVAS_3D_MESH_PRIMITIVE_TERRAIN
 } Evas_3D_Mesh_Primitive;
 
-
 /**
  * Texture filters
  *

-- 




  1   2   >