[EGIT] [core/efl] master 01/03: efl - emotion modules - unbreak due to EAPI changes
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
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
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
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
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
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
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
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
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
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
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
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
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'
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
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
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
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
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
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
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
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
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
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
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
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
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
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."
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
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
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
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
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
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
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
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
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
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
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
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.
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)
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
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
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.
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
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
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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
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
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
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.
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
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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.
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.
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.
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.
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.
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.
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
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 * --