[EGIT] [core/efl] master 01/01: eina vpath - improve docs and add app.tmp and usr.tmp vpaths too

2018-02-22 Thread Carsten Haitzler
raster pushed a commit to branch master.

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

commit 411e140eaf9f51b9018e089d42ec1c8a8b5419ed
Author: Carsten Haitzler (Rasterman) 
Date:   Fri Feb 23 16:26:30 2018 +0900

eina vpath - improve docs and add app.tmp and usr.tmp vpaths too

definitely kaes the docs better with lots of sample paths and some
indication of what these may map to in real life.
---
 src/lib/efreet/efreet.c  |  1 +
 src/lib/eina/eina_internal.h |  1 +
 src/lib/eina/eina_vpath.c| 18 +
 src/lib/eina/eina_vpath.h| 90 
 4 files changed, 88 insertions(+), 22 deletions(-)

diff --git a/src/lib/efreet/efreet.c b/src/lib/efreet/efreet.c
index eb29b55f72..9c22d6386a 100644
--- a/src/lib/efreet/efreet.c
+++ b/src/lib/efreet/efreet.c
@@ -86,6 +86,7 @@ _efreet_efreet_app_interface_set(void)
//   not set or empty, a default equal to $HOME/.local/share should be
//   used.
ENV_HOME_SET("XDG_DATA_HOME", ".local/share", data);
+   ENV_HOME_SET("XDG_TMP_HOME", ".local/tmp", tmp);
// $XDG_CONFIG_HOME defines the base directory relative to which user
//   specific configuration files should be stored. If $XDG_CONFIG_HOME
//   is either not set or empty, a default equal to $HOME/.config should
diff --git a/src/lib/eina/eina_internal.h b/src/lib/eina/eina_internal.h
index 0c5adbb1cd..9324118c91 100644
--- a/src/lib/eina/eina_internal.h
+++ b/src/lib/eina/eina_internal.h
@@ -59,6 +59,7 @@ struct _Eina_Vpath_Interface_User
const char *config;
const char *cache;
const char *run;
+   const char *tmp;
 };
 
 /**
diff --git a/src/lib/eina/eina_vpath.c b/src/lib/eina/eina_vpath.c
index cb9ff972bb..9a31d74c58 100644
--- a/src/lib/eina/eina_vpath.c
+++ b/src/lib/eina/eina_vpath.c
@@ -35,7 +35,7 @@ _eina_vpath_data_get(const char *key)
 }
 
 
-static char*
+static char *
 _fallback_runtime_dir(const char *home)
 {
char buf[PATH_MAX];
@@ -109,7 +109,7 @@ _fallback_runtime_dir(const char *home)
return strdup(buf);
 }
 
-static char*
+static char *
 _fallback_home_dir()
 {
char buf[PATH_MAX];
@@ -178,7 +178,7 @@ eina_vpath_shutdown(void)
return EINA_TRUE;
 }
 
-EAPI char*
+EAPI char *
 eina_vpath_resolve(const char* path)
 {
// XXX: implement parse of path then look up in hash if not just create
@@ -306,14 +306,17 @@ eina_vpath_interface_app_set(const char *app_domain, 
Eina_Prefix *app_pfx)
_eina_vpath_data_add("app.data", eina_prefix_data_get(app_pfx));
_eina_vpath_data_add("app.locale", eina_prefix_locale_get(app_pfx));
snprintf(buf, sizeof(buf), "%s/%s",
-_eina_vpath_data_get("config"), app_domain);
+_eina_vpath_data_get("usr.config"), app_domain);
_eina_vpath_data_add("app.config", buf);
snprintf(buf, sizeof(buf), "%s/%s",
-_eina_vpath_data_get("cache"), app_domain);
+_eina_vpath_data_get("usr.cache"), app_domain);
_eina_vpath_data_add("app.cache", buf);
snprintf(buf, sizeof(buf), "%s/%s",
-_eina_vpath_data_get("data"), app_domain);
+_eina_vpath_data_get("usr.data"), app_domain);
_eina_vpath_data_add("app.local", buf);
+   snprintf(buf, sizeof(buf), "%s/%s",
+_eina_vpath_data_get("usr.tmp"), app_domain);
+   _eina_vpath_data_add("app.tmp", buf);
 }
 
 EAPI void
@@ -342,8 +345,9 @@ eina_vpath_interface_user_set(Eina_Vpath_Interface_User 
*user)
ADD(config);
ADD(cache);
ADD(run);
+   ADD(tmp);
 #undef ADD
 
if (free_run)
- free((char*)user->run);
+ free((char *)user->run);
 }
diff --git a/src/lib/eina/eina_vpath.h b/src/lib/eina/eina_vpath.h
index 7927b4ad0b..36d1b595a4 100644
--- a/src/lib/eina/eina_vpath.h
+++ b/src/lib/eina/eina_vpath.h
@@ -3,29 +3,89 @@
 
 #include "eina_prefix.h"
 
-/*
- * Eina_vpath
- * eina vpath is a path that can be prefixed with a virtual path.
+/**
+ * Eina vpath is a path that can be prefixed with a virtual path.
  *
- * A virutla path can either start with (::) that indicates a virtual 
path, OR normal with / or ./ or ../ or ~
- * The char sequence in between (: and :) are used as key to lookup the real 
value.
- * The key has to be set by a interface before, otherwise you will get a error.
+ * A virutal path can either start with (::) that indicates a virtual
+ * path with  as the location, OR a normal path with / or a realative
+ * path like ./ or ../ or even shell common locatiors like ~/ or ~username/
+ *
+ * The string between (: and :) is used as key to lookup the real value.
+ * The key has to be set by an interface before, otherwise you will get an
+ * error.
+ *
+ * Sample paths:
+ *
+ *   ~/myfiles/file.png
+ *   ~bob/dir/file.txt
+ *   /path/to/file.cfg
+ *   ./file/relative/path.txt
+ *   file/relative/path.txt
+ *   (:tmp:)/some-temp-file/file.txt
+ *   (:home:)/myfiles/file.png
+ *
+ *   

[EGIT] [core/efl] master 01/01: eina: Change assert_ptr_null to asset_ptr_eq(null)

2018-02-22 Thread Lauro Moura
felipealmeida pushed a commit to branch master.

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

commit bda5a0dd4ab730ddb3fbab90a38cdf33a807ae53
Author: Lauro Moura 
Date:   Thu Feb 22 20:37:11 2018 -0300

eina: Change assert_ptr_null to asset_ptr_eq(null)

Summary:
Again, ptr_null/nonnull were added in check 0.11, while we depend on
0.9.10.

Test Plan: Run make check

Reviewers: marcelhollerbach, cedric, felipealmeida

Reviewed By: felipealmeida

Differential Revision: https://phab.enlightenment.org/D5820
---
 src/tests/eina/eina_test_vpath.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/tests/eina/eina_test_vpath.c b/src/tests/eina/eina_test_vpath.c
index b09d2d5c9a..92e93a6f75 100644
--- a/src/tests/eina/eina_test_vpath.c
+++ b/src/tests/eina/eina_test_vpath.c
@@ -36,11 +36,11 @@ START_TEST(eina_test_vpath_invalid)
ret = eina_init();
ck_assert_int_ne(ret, 0);
 
-   ck_assert_ptr_null(eina_vpath_resolve("(:asdfasdfafasdf"));
-   ck_assert_ptr_null(eina_vpath_resolve("(:missing_slash:)"));
-   ck_assert_ptr_null(eina_vpath_resolve("(:"));
-   ck_assert_ptr_null(eina_vpath_resolve("(:home:)"));
-   ck_assert_ptr_null(eina_vpath_resolve("(:wrong_meta_key:)/"));
+   ck_assert_ptr_eq(eina_vpath_resolve("(:asdfasdfafasdf"), NULL);
+   ck_assert_ptr_eq(eina_vpath_resolve("(:missing_slash:)"), NULL);
+   ck_assert_ptr_eq(eina_vpath_resolve("(:"), NULL);
+   ck_assert_ptr_eq(eina_vpath_resolve("(:home:)"), NULL);
+   ck_assert_ptr_eq(eina_vpath_resolve("(:wrong_meta_key:)/"), NULL);
 
ret = eina_shutdown();
 }

-- 




[EGIT] [core/efl] master 01/01: mono: Whitelist some interfaces and classes

2018-02-22 Thread Lauro Moura
felipealmeida pushed a commit to branch master.

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

commit 2fc4c91917ae303604092457d636bd0fce49724c
Author: Lauro Moura 
Date:   Thu Feb 22 20:22:51 2018 -0300

mono: Whitelist some interfaces and classes

Summary: Among them, IO interfaces are needed by the new efl.Task.

Test Plan: Run make check

Reviewers: felipealmeida

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5821
---
 src/Makefile_Efl_Mono.am | 9 +
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/src/Makefile_Efl_Mono.am b/src/Makefile_Efl_Mono.am
index de3b331e62..9344fbda2f 100644
--- a/src/Makefile_Efl_Mono.am
+++ b/src/Makefile_Efl_Mono.am
@@ -125,17 +125,10 @@ lib/evas/canvas/efl_vg_shape.eo.cs
 
 efl_eolian_blacklisted_files = \
 lib/efl/interfaces/efl_io_buffer.eo.cs \
-lib/efl/interfaces/efl_io_closer.eo.cs \
 lib/efl/interfaces/efl_io_positioner.eo.cs \
 lib/efl/interfaces/efl_io_queue.eo.cs \
-lib/efl/interfaces/efl_io_reader.eo.cs \
 lib/efl/interfaces/efl_io_sizer.eo.cs \
-lib/efl/interfaces/efl_io_writer.eo.cs \
-lib/efl/interfaces/efl_gfx_buffer.eo.cs \
-lib/efl/interfaces/efl_gfx_shape.eo.cs \
-lib/efl/interfaces/efl_gfx_gradient.eo.cs \
-lib/efl/interfaces/efl_gfx_gradient_linear.eo.cs \
-lib/efl/interfaces/efl_gfx_gradient_radial.eo.cs
+lib/efl/interfaces/efl_gfx_buffer.eo.cs
 
 ecore_eolian_blacklisted_files = \
 lib/ecore/efl_io_closer_fd.eo.cs \

-- 




[EGIT] [core/efl] master 05/05: eina: make eina_vpath_interface_app_set an internal function.

2018-02-22 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit d57b9a7d14afdc71f4da8265f7dac49deaf6a8c5
Author: Cedric Bail 
Date:   Thu Feb 22 15:26:28 2018 -0800

eina: make eina_vpath_interface_app_set an internal function.

I am wondering if this one shouldn't even be a private one and
directly used by eina_prefix.
---
 src/lib/eina/eina_internal.h  | 19 +++
 src/lib/eina/eina_vpath.h | 17 -
 src/lib/elementary/elm_main.c |  5 -
 3 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/src/lib/eina/eina_internal.h b/src/lib/eina/eina_internal.h
index 79ec98a7bd..0c5adbb1cd 100644
--- a/src/lib/eina/eina_internal.h
+++ b/src/lib/eina/eina_internal.h
@@ -41,6 +41,8 @@
 # endif
 #endif
 
+#include "eina_prefix.h"
+
 typedef struct _Eina_Vpath_Interface_User Eina_Vpath_Interface_User;
 
 struct _Eina_Vpath_Interface_User
@@ -69,6 +71,23 @@ struct _Eina_Vpath_Interface_User
 EAPI void __eina_promise_cancel_all(void);
 
 /**
+ * Make the app specific paths accessable as virtual path
+ *
+ * This will create :
+ *   - app.dir
+ *   - app.bin
+ *   - app.lib
+ *   - app.data
+ *   - app.locale
+ *   - app.config
+ *   - app.cache
+ *   - app.local
+ *
+ * If you do NOT call this api the virtual paths for app.* will be unset
+ */
+EAPI void eina_vpath_interface_app_set(const char *app_name, Eina_Prefix *p);
+
+/**
  * Create the desktop specific vpaths
  *
  * The virtual paths will be named usr.
diff --git a/src/lib/eina/eina_vpath.h b/src/lib/eina/eina_vpath.h
index c279018cf1..7927b4ad0b 100644
--- a/src/lib/eina/eina_vpath.h
+++ b/src/lib/eina/eina_vpath.h
@@ -20,23 +20,6 @@
  */
 typedef const char* Eina_Vpath;
 
-/**
- * Make the app specific paths accessable as virtual path
- *
- * This will create :
- *   - app.dir
- *   - app.bin
- *   - app.lib
- *   - app.data
- *   - app.locale
- *   - app.config
- *   - app.cache
- *   - app.local
- *
- * If you do NOT call this api the virtual paths for app.* will be unset
- */
-EAPI void eina_vpath_interface_app_set(const char *app_name, Eina_Prefix *p);
-
 /*
  * Translate a virtual path into a normal path.
  *
diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c
index 007e886c7f..646b2ee474 100644
--- a/src/lib/elementary/elm_main.c
+++ b/src/lib/elementary/elm_main.c
@@ -17,8 +17,11 @@
 #include 
 
 #include 
-#include "elm_priv.h"
+
+#include "eina_internal.h"
 #include "ecore_internal.h"
+
+#include "elm_priv.h"
 #include "elm_interface_scrollable.h"
 
 //we need those for legacy compatible code

-- 




[EGIT] [core/efl] master 02/05: edje: silence warning due to vpath change.

2018-02-22 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 288284585b38a668d1be1c69bc7523ecb7d98019
Author: Cedric Bail 
Date:   Thu Feb 22 14:55:55 2018 -0800

edje: silence warning due to vpath change.
---
 src/lib/edje/edje_load.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c
index 6c749bcdb6..76964dd0d0 100644
--- a/src/lib/edje/edje_load.c
+++ b/src/lib/edje/edje_load.c
@@ -260,15 +260,16 @@ edje_file_collection_list(const char *file)
 {
Eina_File *f;
Eina_List *lst;
+   char *tmp;
 
if ((!file) || (!*file)) return NULL;
-   file = eina_vpath_resolve(file);
-   f = eina_file_open(file, EINA_FALSE);
+   tmp = eina_vpath_resolve(file);
+   f = eina_file_open(tmp, EINA_FALSE);
 
lst = edje_mmap_collection_list(f);
 
eina_file_close(f);
-   free(file);
+   free(tmp);
return lst;
 }
 

-- 




[EGIT] [core/efl] master 03/05: efl: fix warning due to vpath change.

2018-02-22 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 16f604f4690e09eff4cdd6169ef936d99dbf58c4
Author: Cedric Bail 
Date:   Thu Feb 22 14:56:31 2018 -0800

efl: fix warning due to vpath change.
---
 src/lib/efl/interfaces/efl_file.c | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/lib/efl/interfaces/efl_file.c 
b/src/lib/efl/interfaces/efl_file.c
index 65060d858d..9f0be2e8a1 100644
--- a/src/lib/efl/interfaces/efl_file.c
+++ b/src/lib/efl/interfaces/efl_file.c
@@ -13,19 +13,21 @@ struct _Efl_File_Data
 static Eina_Bool
 _efl_file_file_set(Eo *obj, Efl_File_Data *pd, const char *file, const char 
*key)
 {
+   char *tmp = NULL;
Eina_File *f = NULL;
Eina_Bool r = EINA_FALSE;
 
pd->error = EFL_IMAGE_LOAD_ERROR_DOES_NOT_EXIST;
 
-   if (file)
+   tmp = (char*)(file);
+   if (tmp)
  {
-file = eina_vpath_resolve(file);
+tmp = eina_vpath_resolve(tmp);
  }
 
-   if (file)
+   if (tmp)
  {
-f = eina_file_open(file, EINA_FALSE);
+f = eina_file_open(tmp, EINA_FALSE);
 if (!f) goto on_error;
  }
 
@@ -36,7 +38,7 @@ _efl_file_file_set(Eo *obj, Efl_File_Data *pd, const char 
*file, const char *key
 
  on_error:
 
-   free(file);
+   free(tmp);
return r;
 }
 

-- 




[EGIT] [core/efl] master 04/05: eina: make eina_vpath_interface_user_set an internal API.

2018-02-22 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit b575c416769bcab0eabaf7a68cc8129f81199606
Author: Cedric Bail 
Date:   Thu Feb 22 14:57:36 2018 -0800

eina: make eina_vpath_interface_user_set an internal API.
---
 src/lib/efreet/efreet.c  |  2 ++
 src/lib/eina/eina_internal.h | 27 +++
 src/lib/eina/eina_vpath.c|  1 +
 src/lib/eina/eina_vpath.h| 26 --
 4 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/src/lib/efreet/efreet.c b/src/lib/efreet/efreet.c
index 1acbdbd8d7..eb29b55f72 100644
--- a/src/lib/efreet/efreet.c
+++ b/src/lib/efreet/efreet.c
@@ -10,6 +10,8 @@
 #include 
 #include 
 
+#include "eina_internal.h"
+
 /* define macros and variable for using the eina logging system  */
 #define EFREET_MODULE_LOG_DOM /* no logging in this file */
 
diff --git a/src/lib/eina/eina_internal.h b/src/lib/eina/eina_internal.h
index b5bdbad414..79ec98a7bd 100644
--- a/src/lib/eina/eina_internal.h
+++ b/src/lib/eina/eina_internal.h
@@ -41,6 +41,24 @@
 # endif
 #endif
 
+typedef struct _Eina_Vpath_Interface_User Eina_Vpath_Interface_User;
+
+struct _Eina_Vpath_Interface_User
+{
+   const char *desktop;
+   const char *documents;
+   const char *downloads;
+   const char *music;
+   const char *pictures;
+   const char *pub;
+   const char *templates;
+   const char *videos;
+   const char *data;
+   const char *config;
+   const char *cache;
+   const char *run;
+};
+
 /**
  * @brief Cancels all pending promise/futures.
  *
@@ -50,6 +68,15 @@
  */
 EAPI void __eina_promise_cancel_all(void);
 
+/**
+ * Create the desktop specific vpaths
+ *
+ * The virtual paths will be named usr.
+ *
+ * If you do NOT call this api the virtual paths for usr.* will be unset.
+ */
+EAPI void eina_vpath_interface_user_set(Eina_Vpath_Interface_User *user);
+
 #undef EAPI
 #define EAPI
 
diff --git a/src/lib/eina/eina_vpath.c b/src/lib/eina/eina_vpath.c
index e744265955..cb9ff972bb 100644
--- a/src/lib/eina/eina_vpath.c
+++ b/src/lib/eina/eina_vpath.c
@@ -1,5 +1,6 @@
 #include 
 
+#include "eina_internal.h"
 #include "eina_private.h"
 
 static Eina_Hash *vpath_data = NULL;
diff --git a/src/lib/eina/eina_vpath.h b/src/lib/eina/eina_vpath.h
index 40adffeca1..c279018cf1 100644
--- a/src/lib/eina/eina_vpath.h
+++ b/src/lib/eina/eina_vpath.h
@@ -20,23 +20,6 @@
  */
 typedef const char* Eina_Vpath;
 
-
-typedef struct
-{
-  const char *desktop;
-  const char *documents;
-  const char *downloads;
-  const char *music;
-  const char *pictures;
-  const char *pub;
-  const char *templates;
-  const char *videos;
-  const char *data;
-  const char *config;
-  const char *cache;
-  const char *run;
-} Eina_Vpath_Interface_User;
-
 /**
  * Make the app specific paths accessable as virtual path
  *
@@ -54,15 +37,6 @@ typedef struct
  */
 EAPI void eina_vpath_interface_app_set(const char *app_name, Eina_Prefix *p);
 
-/**
- * Create the desktop specific vpaths
- *
- * The virtual paths will be named usr.
- *
- * If you do NOT call this api the virtual paths for usr.* will be unset.
- */
-EAPI void eina_vpath_interface_user_set(Eina_Vpath_Interface_User *user);
-
 /*
  * Translate a virtual path into a normal path.
  *

-- 




[EGIT] [core/efl] master 01/05: emotion: silence warning due to vpath change.

2018-02-22 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit a7c402b501bef8e1b72b80727662bcd2c654f3f1
Author: Cedric Bail 
Date:   Thu Feb 22 14:55:31 2018 -0800

emotion: silence warning due to vpath change.
---
 src/lib/emotion/emotion_smart.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/emotion/emotion_smart.c b/src/lib/emotion/emotion_smart.c
index 7e33a90a67..d84e5a1bd9 100644
--- a/src/lib/emotion/emotion_smart.c
+++ b/src/lib/emotion/emotion_smart.c
@@ -362,7 +362,7 @@ _efl_canvas_video_efl_file_file_set(Eo *obj EINA_UNUSED, 
Efl_Canvas_Video_Data *
sd->video.h = 0;
if ((file) && (file[0] != 0))
  {
-const char *file2 = NULL;
+char *file2 = NULL;
 
 eina_stringshare_replace(>file, file);
 emotion_engine_instance_file_close(sd->engine_instance);

-- 




[EGIT] [core/enlightenment] master 01/01: set E_GADGET_ANCHOR env var corresponding to the gadget sites anchor

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit f57cd82beb406adb90cdd0068647cd1bc57449f1
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 17:08:42 2018 -0500

set E_GADGET_ANCHOR env var corresponding to the gadget sites anchor

this value can change without destroying the gadget, but it can be
helpful to have this data available during initial setup
---
 src/bin/e_gadget_runner.c | 43 ---
 1 file changed, 36 insertions(+), 7 deletions(-)

diff --git a/src/bin/e_gadget_runner.c b/src/bin/e_gadget_runner.c
index 390e3eba9..cec75af4d 100644
--- a/src/bin/e_gadget_runner.c
+++ b/src/bin/e_gadget_runner.c
@@ -35,6 +35,7 @@ typedef struct Tooltip
 typedef struct Instance
 {
E_Gadget_Site_Orient orient;
+   E_Gadget_Site_Anchor anchor;
Evas_Object *box;
Evas_Object *obj;
Ecore_Exe *exe;
@@ -114,6 +115,34 @@ runner_run(Instance *inst)
 e_util_env_set("E_GADGET_ORIENTATION", "Vertical");
 break;
  }
+   if (inst->anchor)
+ {
+if (inst->anchor & E_GADGET_SITE_ANCHOR_TOP)
+  {
+ if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
+   e_util_env_set("E_GADGET_ANCHOR", "Top,Left");
+ else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
+   e_util_env_set("E_GADGET_ANCHOR", "Top,Right");
+ else
+   e_util_env_set("E_GADGET_ANCHOR", "Top");
+  }
+else if (inst->anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
+  {
+ if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
+   e_util_env_set("E_GADGET_ANCHOR", "Bottom,Left");
+ else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
+   e_util_env_set("E_GADGET_ANCHOR", "Bottom,Right");
+ else
+   e_util_env_set("E_GADGET_ANCHOR", "Bottom");
+  }
+else
+  {
+ if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
+   e_util_env_set("E_GADGET_ANCHOR", "Left");
+ else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
+   e_util_env_set("E_GADGET_ANCHOR", "Right");
+  }
+ }
e_util_env_set("E_GADGET_ID", buf);
 
unshare(CLONE_NEWPID);
@@ -122,12 +151,14 @@ runner_run(Instance *inst)
 
setns(ns_fd, CLONE_NEWPID);
 
+   e_util_env_set("E_GADGET_ANCHOR", NULL);
e_util_env_set("E_GADGET_ORIENTATION", NULL);
e_util_env_set("E_GADGET_ID", NULL);
e_util_env_set("LD_PRELOAD", preload);
free(preload);
eina_hash_free_buckets(inst->allowed_pids);
pid = ecore_exe_pid_get(inst->exe);
+   ecore_exe_data_set(inst->exe, inst);
eina_hash_add(inst->allowed_pids, , (void*)1);
 }
 
@@ -372,8 +403,9 @@ static void
 runner_site_anchor(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
Instance *inst = data;
+   inst->anchor = e_gadget_site_anchor_get(obj);
if (inst->gadget_resource)
- e_gadget_send_gadget_anchor(inst->gadget_resource, 
e_gadget_site_anchor_get(obj));
+ e_gadget_send_gadget_anchor(inst->gadget_resource, inst->anchor);
 }
 
 static void
@@ -417,12 +449,14 @@ runner_created(void *data, Evas_Object *obj, void 
*event_info EINA_UNUSED)
 {
Instance *inst = data;
if (inst->box != event_info) return;
+   inst->anchor = e_gadget_site_anchor_get(obj);
e_gadget_configure_cb_set(inst->box, runner_gadget_configure);
evas_object_smart_callback_del_full(obj, "gadget_created", runner_created, 
data);
if (e_gadget_site_is_desklock(obj))
  evas_object_show(inst->obj);
else if (!e_desklock_state_get())
  evas_object_show(inst->obj);
+   runner_run(inst);
 }
 
 
@@ -861,8 +895,6 @@ gadget_create(Evas_Object *parent, Config_Item *ci, int 
*id, E_Gadget_Site_Orien
evas_object_smart_callback_add(parent, "gadget_removed", runner_removed, 
inst);
evas_object_smart_callback_add(parent, "gadget_site_anchor", 
runner_site_anchor, inst);
evas_object_smart_callback_add(parent, "gadget_site_gravity", 
runner_site_gravity, inst);
-   runner_run(inst);
-   ecore_exe_data_set(inst->exe, inst);
inst->base.obj = inst->box = elm_box_add(e_comp->elm);
evas_object_data_set(inst->box, "runner", inst);
evas_object_smart_callback_add(inst->box, "gadget_menu", runner_menu, inst);
@@ -904,10 +936,7 @@ runner_exe_del(void *d EINA_UNUSED, int t EINA_UNUSED, 
Ecore_Exe_Event_Del *ev)
 if (ev->exit_code == 255) //exec error
   e_gadget_del(inst->box);
 else
-  {
- runner_run(inst);
- ecore_exe_data_set(inst->exe, inst);
-  }
+  runner_run(inst);
 break;
   case EXIT_MODE_DELETE:
 e_gadget_del(inst->box);

-- 




[EGIT] [website/www-content] master 01/01: Wiki page e16 changed with summary [] by Pavel Sanda

2018-02-22 Thread Pavel Sanda
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit c8a56985067bcf2ea50b7bfd28d118252f996add
Author: Pavel Sanda 
Date:   Thu Feb 22 13:56:37 2018 -0800

Wiki page e16 changed with summary [] by Pavel Sanda
---
 pages/e16.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/e16.txt b/pages/e16.txt
index d0198678a..770cb69f6 100644
--- a/pages/e16.txt
+++ b/pages/e16.txt
@@ -3,7 +3,7 @@
 {{page>incl:start-shortcuts}}
 
  About E16
-E16 is predecessor of the current E22 Enlightenment Window Manager, which is 
rather complete rewrite than incremental update of E16. Although most of the 
current development focus goes to E22, E16 is still under independent active 
development and some users prefer it to E22. In this sense E16 will keep it's 
name while incrementing the versions from 1.0.0 unlike the mainstream 
Enlightenment manager, which is likely going to increment it's E-suffix number. 
This page should summarize the li [...]
+E16 is predecessor of the current E22 Enlightenment Window Manager, which is 
rather complete rewrite than incremental update of E16. Although most of the 
current development focus goes to E22, E16 is still under independent active 
development and some users prefer it to E22. In this sense E16 will keep its 
name while incrementing the versions from 1.0.0 unlike the mainstream 
Enlightenment manager, which is likely going to increment its E-suffix number. 
This page should summarize the link [...]
 
  Download 
 

-- 




[EGIT] [website/www-content] master 01/01: Wiki page e16 changed with summary [] by Pavel Sanda

2018-02-22 Thread Pavel Sanda
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit b990052041ba521bcc86b4667bf77541add76f71
Author: Pavel Sanda 
Date:   Thu Feb 22 13:55:13 2018 -0800

Wiki page e16 changed with summary [] by Pavel Sanda
---
 pages/e16.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/e16.txt b/pages/e16.txt
index a3696e2a0..d0198678a 100644
--- a/pages/e16.txt
+++ b/pages/e16.txt
@@ -3,7 +3,7 @@
 {{page>incl:start-shortcuts}}
 
  About E16
-E16 is predecessor of the current E22 Enlightenment Window Manager. Although 
most of the current development focus goes to E22, E16 is still under active 
development and some users prefer it to E22. This page should summarize the 
links related to E16.
+E16 is predecessor of the current E22 Enlightenment Window Manager, which is 
rather complete rewrite than incremental update of E16. Although most of the 
current development focus goes to E22, E16 is still under independent active 
development and some users prefer it to E22. In this sense E16 will keep it's 
name while incrementing the versions from 1.0.0 unlike the mainstream 
Enlightenment manager, which is likely going to increment it's E-suffix number. 
This page should summarize the li [...]
 
  Download 
 

-- 




[EGIT] [website/www-content] master 01/01: Wiki page download-e16 changed with summary [] by Pavel Sanda

2018-02-22 Thread Pavel Sanda
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit 401ef66c832d986dbf96da8a0aec307ce8ff7a0f
Author: Pavel Sanda 
Date:   Thu Feb 22 13:37:52 2018 -0800

Wiki page download-e16 changed with summary [] by Pavel Sanda
---
 pages/download-e16.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/download-e16.txt b/pages/download-e16.txt
index a046667d1..772fb95e9 100644
--- a/pages/download-e16.txt
+++ b/pages/download-e16.txt
@@ -1,4 +1,4 @@
-=== Enlightenment DR16 ===
+=== Download Enlightenment E16 ===
 
 The latest version of DR16 is 1.0.18, released on April 16th, 2017.
 Packages for the current, and previous, releases of DR16,

-- 




[EGIT] [website/www-content] master 01/01: Wiki page e16 changed with summary [] by Pavel Sanda

2018-02-22 Thread Pavel Sanda
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit 506979f9e2c9996178e3ff22023160f74696a538
Author: Pavel Sanda 
Date:   Thu Feb 22 13:34:17 2018 -0800

Wiki page e16 changed with summary [] by Pavel Sanda
---
 pages/e16.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/e16.txt b/pages/e16.txt
index 0e19b7cc3..a3696e2a0 100644
--- a/pages/e16.txt
+++ b/pages/e16.txt
@@ -1,4 +1,4 @@
-~~Title: E16~~
+~~Title: Enlightenment E16~~
 
 {{page>incl:start-shortcuts}}
 

-- 




[EGIT] [website/www-content] master 01/01: Wiki page download-e16 changed with summary [] by Pavel Sanda

2018-02-22 Thread Pavel Sanda
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit d8779b0ead601f113af6bcabd972b3c0ae3bc5c8
Author: Pavel Sanda 
Date:   Thu Feb 22 13:34:20 2018 -0800

Wiki page download-e16 changed with summary [] by Pavel Sanda
---
 pages/download-e16.txt | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pages/download-e16.txt b/pages/download-e16.txt
index 9a7bb71e1..a046667d1 100644
--- a/pages/download-e16.txt
+++ b/pages/download-e16.txt
@@ -1,6 +1,5 @@
 === Enlightenment DR16 ===
 
-Some people still like to use our legacy WM codebase and it is still 
maintained.
 The latest version of DR16 is 1.0.18, released on April 16th, 2017.
 Packages for the current, and previous, releases of DR16,
 core themes, epplets, e16menuedit, e16keyedit, and imlib2 can be found

-- 




[EGIT] [core/enlightenment] master 04/04: add info about gadget bindings to editor, make editor movable

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 52e713147770d063597578cab0bc6fe7bf546827
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 16:19:34 2018 -0500

add info about gadget bindings to editor, make editor movable

ref T6341
---
 src/bin/e_gadget.c | 149 +
 1 file changed, 149 insertions(+)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index fa6b8c0d5..b5e1b57df 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -3111,12 +3111,161 @@ _gadget_moved()
added = 1;
 }
 
+static Eina_List *desktop_editor_move_handlers;
+static Evas_Point desktop_editor_move_point;
+static E_Zone *desktop_editor_move_zone;
+
+static void
+_desktop_editor_mouse_up_job(void *d)
+{
+   evas_object_repeat_events_set(d, 1);
+}
+
+static Eina_Bool
+_desktop_editor_mouse_up(void *d, int t EINA_UNUSED, Ecore_Event_Mouse_Button 
*ev)
+{
+   E_FREE_LIST(desktop_editor_move_handlers, ecore_event_handler_del);
+   evas_object_pointer_mode_set(d, EVAS_OBJECT_POINTER_MODE_NOGRAB);
+   ecore_job_add(_desktop_editor_mouse_up_job, d);
+   return ECORE_CALLBACK_RENEW;
+}
+
+static Eina_Bool
+_desktop_editor_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, 
Ecore_Event_Mouse_Move *ev)
+{
+   int x, y, w, h;
+   int nx, ny;
+
+   evas_object_geometry_get(desktop_editor, , , , );
+   nx = x + ev->x - desktop_editor_move_point.x;
+   ny = y + ev->y - desktop_editor_move_point.y;
+   desktop_editor_move_point.x = ev->x;
+   desktop_editor_move_point.y = ev->y;
+   if (!E_CONTAINS(desktop_editor_move_zone->x, desktop_editor_move_zone->y, 
desktop_editor_move_zone->w, desktop_editor_move_zone->h,
+   nx, ny, w, h))
+ {
+if (nx < desktop_editor_move_zone->x) nx = desktop_editor_move_zone->x;
+if (ny < desktop_editor_move_zone->y) ny = desktop_editor_move_zone->y;
+if (nx + w > desktop_editor_move_zone->x + desktop_editor_move_zone->w)
+  nx = desktop_editor_move_zone->x + desktop_editor_move_zone->w - w;
+if (ny + h > desktop_editor_move_zone->y + desktop_editor_move_zone->h)
+  ny = desktop_editor_move_zone->y + desktop_editor_move_zone->h - h;
+ }
+   evas_object_move(desktop_editor, nx, ny);
+   return ECORE_CALLBACK_RENEW;
+}
+
+static void
+_desktop_editor_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, 
void *event_info)
+{
+   Evas_Event_Mouse_Down *ev = event_info;
+   uintptr_t button = (uintptr_t)(uintptr_t*)data;
+   uintptr_t modifiers = button % 1;
+   int i;
+   const char *names[] =
+   {
+  "Shift",
+  "Control",
+  "Alt",
+  "Win",
+  "AltGr",
+   };
+
+   button = (button - modifiers) / 1;
+   if (button != (unsigned int)ev->button) return;
+   for (i = 0; modifiers && i < 5; i++)
+ {
+if (!(modifiers & (1 << i))) continue;
+if (evas_key_modifier_is_set(ev->modifiers, names[i]))
+  modifiers &= ~(1 << i);
+ }
+   if (modifiers) return;
+   desktop_editor_move_point.x = ev->output.x;
+   desktop_editor_move_point.y = ev->output.y;
+   desktop_editor_move_zone = e_comp_object_util_zone_get(obj);
+   evas_object_pointer_mode_set(obj, 
EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN);
+   evas_object_repeat_events_set(obj, 0);
+   E_LIST_HANDLER_APPEND(desktop_editor_move_handlers, ECORE_EVENT_MOUSE_MOVE, 
_desktop_editor_mouse_move, obj);
+   E_LIST_HANDLER_APPEND(desktop_editor_move_handlers, 
ECORE_EVENT_MOUSE_BUTTON_UP, _desktop_editor_mouse_up, obj);
+}
+
+static void
+_desktop_editor_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, 
void *event_info EINA_UNUSED)
+{
+   evas_object_layer_set(data, evas_object_layer_get(obj));
+}
+
+static void
+_desktop_editor_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, 
void *event_info EINA_UNUSED)
+{
+   int x, y, w, h;
+
+   evas_object_geometry_get(obj, , , , );
+   evas_object_geometry_set(data, x, y, w, h);
+}
+
+static void
+_desktop_editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   evas_object_del(data);
+   E_FREE_LIST(desktop_editor_move_handlers, ecore_event_handler_del);
+}
+
+static void
+_desktop_editor_visibility(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, 
void *event_info EINA_UNUSED)
+{
+   if (evas_object_visible_get(obj))
+ {
+evas_object_show(data);
+evas_object_pointer_mode_set(data, EVAS_OBJECT_POINTER_MODE_NOGRAB);
+ }
+   else
+ {
+evas_object_hide(data);
+evas_object_pointer_mode_set(data, 
EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN);
+ }
+}
+
 static void
 _desktop_editor_text_add(void)
 {
Evas_Object *txt, *tb, *popup = e_comp_object_util_get(desktop_editor);
+   unsigned int button, modifiers;
+   char *hotkeys;
 
+   hotkeys = 

[EGIT] [core/enlightenment] master 03/04: always unset pass_events on desktop editor when it is shown

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 7156ed8c38804ca479737d7e856b30238d94ce35
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 16:18:46 2018 -0500

always unset pass_events on desktop editor when it is shown

fixes some cases where the editor could not be interacted with after
it was hidden during gadget placement
---
 src/bin/e_gadget.c | 8 
 1 file changed, 8 insertions(+)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index 6643ccc16..fa6b8c0d5 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -2970,6 +2970,13 @@ e_gadget_editor_add(Evas_Object *parent, Evas_Object 
*site)
return list;
 }
 
+static void
+_editor_show(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, 
void *event_info EINA_UNUSED)
+{
+   if (obj == desktop_editor)
+ evas_object_pass_events_set(desktop_editor, 0);
+}
+
 E_API Evas_Object *
 e_gadget_site_edit(Evas_Object *site)
 {
@@ -3012,6 +3019,7 @@ e_gadget_site_edit(Evas_Object *site)
comp_object = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
evas_object_layer_set(comp_object, E_LAYER_POPUP);
evas_object_show(comp_object);
+   evas_object_event_callback_add(comp_object, EVAS_CALLBACK_SHOW, 
_editor_show, NULL);
evas_object_resize(comp_object, zone->w / 2, zone->h / 2);
e_comp_object_util_center_on_zone(comp_object, zone);
 

-- 




[EGIT] [core/enlightenment] master 01/04: add e_binding function to return printable string of modifiers for mouse binding

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit fd4a942906b49302fd86b3a1721600d667ddb29b
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 16:16:38 2018 -0500

add e_binding function to return printable string of modifiers for mouse 
binding
---
 src/bin/e_bindings.c | 61 +++-
 src/bin/e_bindings.h |  1 +
 2 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c
index e9d6a6797..810b7a00b 100644
--- a/src/bin/e_bindings.c
+++ b/src/bin/e_bindings.c
@@ -455,6 +455,66 @@ e_bindings_mouse_button_find(E_Binding_Context ctxt, 
E_Binding_Event_Mouse_Butto
return act;
 }
 
+E_API char *
+e_bindings_mouse_action_modifiers_text_generate(E_Binding_Context ctxt, const 
char *action, unsigned int *modifiers, unsigned int *button)
+{
+   Eina_Strbuf *sbuf;
+   Eina_Bool shift;
+   Eina_Bool ctrl;
+   Eina_Bool alt;
+   Eina_Bool win;
+   Eina_Bool altgr;
+   static const char *names[] =
+   {
+  "Shift",
+  "Control",
+  "Alt",
+  "Win",
+  "AltGr",
+   };
+
+   struct
+   {
+  Eina_Bool *val;
+  const char *name;
+   } keys[5];
+   unsigned int current, i;
+   Eina_Bool found = EINA_FALSE;
+   Eina_List *l;
+   char *ret;
+   E_Config_Binding_Mouse *ebm;
+
+   keys[0].val = 
+   keys[1].val = 
+   keys[2].val = 
+   keys[3].val = 
+   keys[4].val = 
+   
+   EINA_LIST_FOREACH(e_bindings->mouse_bindings, l, ebm)
+ if ((ebm->context == (int)ctxt) && eina_streq(ebm->action, action))
+   {
+  current = ebm->modifiers;
+  if (modifiers) *modifiers = current;
+  if (button) *button = ebm->button;
+  found = EINA_TRUE;
+  break;
+   }
+   if (!found) return NULL;
+   sbuf = eina_strbuf_new();
+   for (i = 0; i < 5; i++)
+ {
+keys[i].name = names[i];
+*keys[i].val = (current & (1 << i));
+if (!*keys[i].val) continue;
+if (eina_strbuf_length_get(sbuf))
+  eina_strbuf_append_char(sbuf, '+');
+eina_strbuf_append_printf(sbuf, "%s", 
_(keys[i].name));
+ }
+   ret = eina_strbuf_string_steal(sbuf);
+   eina_strbuf_free(sbuf);
+   return ret;
+}
+
 E_API E_Action *
 e_bindings_mouse_down_event_handle(E_Binding_Context ctxt, E_Object *obj, 
E_Binding_Event_Mouse_Button *ev)
 {
@@ -1523,4 +1583,3 @@ _e_bindings_edge_cb_timer(void *data)
 
return ECORE_CALLBACK_CANCEL;
 }
-
diff --git a/src/bin/e_bindings.h b/src/bin/e_bindings.h
index 0bc9892a1..043118cbf 100644
--- a/src/bin/e_bindings.h
+++ b/src/bin/e_bindings.h
@@ -152,6 +152,7 @@ E_API E_Action   
*e_bindings_mouse_down_ecore_event_handle(E_Binding_Context ctx
 E_API E_Action   *e_bindings_mouse_up_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Binding_Event_Mouse_Button *ev);
 E_API E_Action   *e_bindings_mouse_up_evas_event_handle(E_Binding_Context 
ctxt, E_Object *obj, Evas_Event_Mouse_Up *ev);
 E_API E_Action   *e_bindings_mouse_up_ecore_event_handle(E_Binding_Context 
ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev);
+E_API char   
*e_bindings_mouse_action_modifiers_text_generate(E_Binding_Context ctxt, const 
char *action, unsigned int *modifiers, unsigned int *button);
 
 E_API voide_bindings_key_add(E_Binding_Context ctxt, const char *key, 
E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
 E_API voide_bindings_key_del(E_Binding_Context ctxt, const char *key, 
E_Binding_Modifier mod, int any_mod, const char *action, const char *params);

-- 




[EGIT] [core/enlightenment] master 02/04: do not add gadget editor pointer site to editor del_list

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit b51552ca87eb092586701077a7045001b0540682
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 16:17:13 2018 -0500

do not add gadget editor pointer site to editor del_list

the pointer site will never exist at the time when the editor is
destroyed
---
 src/bin/e_gadget.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index 10ddda0d6..6643ccc16 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -2778,7 +2778,6 @@ _editor_gadget_new(void *data, Evas_Object *obj, void 
*event_info)
evas_object_pass_events_set(desktop_editor, 1);
orient = e_gadget_site_orient_get(gi->site);
_editor_pointer_site_init(orient, gi->site, gi->editor, 0);
-   e_comp_object_util_del_list_append(gi->editor, pointer_site);
 
if (zgc->external.domain)
  e_gadget_site_gadget_external_add(pointer_site, zgc->external.domain, 
e_gadget_type_get(gi->gadget), 1);

-- 




[EGIT] [core/efl] master 01/01: evas event_grabber: fix child ordering when adding non-top children

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 77b31ba0237a9579ac317f8c1ef3b9a73c17ebd1
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 15:30:10 2018 -0500

evas event_grabber: fix child ordering when adding non-top children

another ref 0516cdc0f9dc0969ac96df6984af2413680cad01

@fix
---
 src/lib/evas/canvas/efl_canvas_object_event_grabber.c | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/efl_canvas_object_event_grabber.c 
b/src/lib/evas/canvas/efl_canvas_object_event_grabber.c
index ddf31c90ba..01851897e9 100644
--- a/src/lib/evas/canvas/efl_canvas_object_event_grabber.c
+++ b/src/lib/evas/canvas/efl_canvas_object_event_grabber.c
@@ -123,13 +123,21 @@ _child_insert(Efl_Object_Event_Grabber_Data *pd, 
Evas_Object_Protected_Data *obj
 if (a->layer->layer > obj->layer->layer) continue;
 if (a->layer->layer < obj->layer->layer)
   {
+ /* new object is higher layer than 'a' */
  found = EINA_TRUE;
  break;
   }
 EINA_INLIST_FOREACH(EINA_INLIST_GET(a->layer->objects), i)
   {
- if (a == i || obj == i)
+ if (obj == i)
{
+  /* new object is below 'a' */
+  pd->contained = eina_list_prepend_relative(pd->contained, 
obj, a);
+  return;
+   }
+ else if (a == i)
+   {
+  /* new object is above 'a' */
   found = EINA_TRUE;
   break;
}

-- 




[EGIT] [core/enlightenment] enlightenment-0.17 01/01: Fix for window borders to accept edje icons

2018-02-22 Thread Samuel F. Baggen
thanatermesis pushed a commit to branch enlightenment-0.17.

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

commit 0a5ff4bd5adea88f70347354eabd93fdad63eed6
Author: Thanatermesis 
Date:   Thu Feb 22 19:48:04 2018 +0100

Fix for window borders to accept edje icons

If you have edje icons installed in your system (efreet smartly searches
the candidate icon based in your Icon= entry), they works correctly in
the menus, bar, etc... but doesn't works in the window borders icon,
this is because the code try's to add it without dealing with the .edj
extensions, probably attempting to load multiple image types and
returning some errors/warning, resulting in an empty icon in the window
borders

Fixes T6723
---
 src/bin/e_border.c | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/bin/e_border.c b/src/bin/e_border.c
index e7363fe4b..740033791 100644
--- a/src/bin/e_border.c
+++ b/src/bin/e_border.c
@@ -4246,12 +4246,9 @@ e_border_icon_add(E_Border *bd,
  {
 if ((bd->desktop) && (bd->icon_preference != E_ICON_PREF_NETWM))
   {
- o = e_icon_add(evas);
+ o = e_util_desktop_icon_add(bd->desktop, 64, evas);
  if (o)
-   {
-  e_icon_fdo_icon_set(o, bd->desktop->icon);
-  return o;
-   }
+   return o;
   }
 else if (bd->client.netwm.icons)
   {

-- 




[EGIT] [core/enlightenment] master 01/01: Fix for window borders to accept edje icons

2018-02-22 Thread Samuel F. Baggen
thanatermesis pushed a commit to branch master.

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

commit ca99207bdc4ae76b02cd8ce6e5a953c17c9d9d0e
Author: Thanatermesis 
Date:   Thu Feb 22 19:35:38 2018 +0100

Fix for window borders to accept edje icons

If you have edje icons installed in your system (efreet smartly searches
the candidate icon based in your Icon= entry), they works correctly in
the menus, bar, etc... but doesn't works in the window borders icon,
this is because the code try's to add it without dealing with the .edj
extensions, probably attempting to load multiple image types and
returning some errors/warning, resulting in an empty icon in the window
borders

Fixes T6723
---
 src/bin/e_client.c | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 675ba5688..464f7f9bd 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -5144,12 +5144,9 @@ e_client_icon_add(E_Client *ec, Evas *evas)
  {
 if ((ec->desktop) && (ec->icon_preference != E_ICON_PREF_NETWM))
   {
- o = e_icon_add(evas);
+ o = e_util_desktop_icon_add(ec->desktop, 64, evas);
  if (o)
-   {
-  e_icon_fdo_icon_set(o, ec->desktop->icon);
-  return o;
-   }
+   return o;
   }
 #ifndef HAVE_WAYLAND_ONLY
 else if (ec->netwm.icons)

-- 




[EGIT] [tools/examples] master 01/01: apps_mono: add text editor and Game of Life example apps for C# binding

2018-02-22 Thread Vitor Sousa
vitorsousa pushed a commit to branch master.

http://git.enlightenment.org/tools/examples.git/commit/?id=6009c1046cb77de93c5bcd524e73897d4dbcfa33

commit 6009c1046cb77de93c5bcd524e73897d4dbcfa33
Author: Vitor Sousa 
Date:   Thu Feb 22 14:44:55 2018 -0300

apps_mono: add text editor and Game of Life example apps for C# binding
---
 apps/csharp/life/meson.build  |  10 ++
 apps/csharp/life/src/life_board.cs| 163 ++
 apps/csharp/life/src/life_main.cs |  83 +
 apps/csharp/life/src/life_render.cs   |  71 +++
 apps/csharp/life/src/meson.build  |  14 +++
 apps/csharp/texteditor/meson.build|  10 ++
 apps/csharp/texteditor/src/meson.build|  12 ++
 apps/csharp/texteditor/src/texteditor_main.cs | 143 ++
 8 files changed, 506 insertions(+)

diff --git a/apps/csharp/life/meson.build b/apps/csharp/life/meson.build
new file mode 100644
index 000..bb46815
--- /dev/null
+++ b/apps/csharp/life/meson.build
@@ -0,0 +1,10 @@
+project(
+  'efl-example-life', 'cs',
+  version : '0.0.1',
+  meson_version : '>= 0.38.0')
+
+efl_mono = dependency('efl-mono', version : '>=1.20.99')
+efl_mono_libs = efl_mono.get_pkgconfig_variable('mono_libs')
+
+subdir('src')
+
diff --git a/apps/csharp/life/src/life_board.cs 
b/apps/csharp/life/src/life_board.cs
new file mode 100644
index 000..ca12115
--- /dev/null
+++ b/apps/csharp/life/src/life_board.cs
@@ -0,0 +1,163 @@
+using System;
+
+public class LifeBoard
+{
+public const int Width = 47;
+public const int Height = 31;
+
+public static int IndexForPosition(int x, int y)
+{
+return y * Width + x;
+}
+
+public bool[] Cells
+{
+get { return board; }
+}
+
+private int gen = 0;
+
+private bool[] board, boardPrev;
+private bool[] board1, board2;
+private efl.loop.Timer lifeTimer = null;
+private LifeRender lifeRender = null;
+
+private void CellOn(int x, int y)
+{
+board1[IndexForPosition(x, y)] = true;
+}
+
+private void BoardSetup()
+{
+// glide
+CellOn(16, 1);
+CellOn(17, 2);
+CellOn(18, 2);
+CellOn(16, 3);
+CellOn(17, 3);
+
+// oscilate
+CellOn(22, 15);
+CellOn(23, 15);
+CellOn(24, 15);
+
+// block
+CellOn(32, 15);
+CellOn(33, 15);
+CellOn(32, 16);
+CellOn(33, 16);
+}
+
+public LifeBoard()
+{
+board1 = new bool[Height * Width];
+board2 = new bool[Height * Width];
+
+BoardSetup();
+
+board = board1;
+boardPrev = board2;
+}
+
+public void Run(efl.ui.Win win)
+{
+lifeTimer = new efl.loop.Timer(null, (efl.loop.Timer etimer) => {
+etimer.SetInterval(0.1);
+});
+
+lifeTimer.TICK += (object sender, EventArgs ev) => {
+Nextgen();
+if (this.lifeRender != null)
+this.lifeRender.Refresh(win);
+};
+}
+
+public int SumAround(int x, int y)
+{
+int i, sum = 0;
+int max = Width * Height;
+
+i = IndexForPosition(x - 1, (y - 1));
+if (i >= 0 && board[i])
+++sum;
+++i;
+if (i >= 0 && board[i])
+++sum;
+++i;
+if (i >= 0 && board[i])
+++sum;
+
+i = IndexForPosition(x - 1, y);
+if (i >= 0 && board[i])
+++sum;
+i += 2;
+if (i < max && board[i])
+++sum;
+
+i = IndexForPosition(x - 1, (y + 1));
+if (i < max && board[i])
+++sum;
+++i;
+if (i < max && board[i])
+++sum;
+++i;
+if (i < max && board[i])
+++sum;
+
+return sum;
+}
+
+public void Nextgen()
+{
+int[] work = null;
+++gen;
+
+if (board == board1)
+work = board2;
+else
+work = board1;
+
+for (int y = 0; y < LIFE_BOARD_HEIGHT; y++)
+for (int x = 0; x < LIFE_BOARD_WIDTH; x++)
+{
+int i = IndexForPosition(x, y);
+
+int n = SumAround(x, y);
+if (board[i])
+{
+if (n > 3 || n < 2)
+work[i] = false;
+else
+work[i] = true;
+}
+else
+{
+if (n == 3)
+work[i] = true;
+else
+work[i] = false;
+}
+}
+
+boardPrev = board;
+board = work;
+}
+
+public void TogglePause(efl.ui.Win win)
+{
+if (lifeTimer)
+{
+lifeTimer.Dispose();
+lifeTimer = null;
+}
+else
+{
+Run(win);
+}
+ 

[EGIT] [core/enlightenment] master 01/01: toggle sandbox gadget visibility during desklock for non-desklock gadgets

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 5de469a690d6f69bc9a9d83dab03891d8ca6b910
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 12:59:13 2018 -0500

toggle sandbox gadget visibility during desklock for non-desklock gadgets

this triggers surface.leave events for clients while desklock is active
and allows them to conserve resources
---
 src/bin/e_gadget_runner.c | 33 -
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_gadget_runner.c b/src/bin/e_gadget_runner.c
index 7599f4f92..390e3eba9 100644
--- a/src/bin/e_gadget_runner.c
+++ b/src/bin/e_gadget_runner.c
@@ -419,6 +419,10 @@ runner_created(void *data, Evas_Object *obj, void 
*event_info EINA_UNUSED)
if (inst->box != event_info) return;
e_gadget_configure_cb_set(inst->box, runner_gadget_configure);
evas_object_smart_callback_del_full(obj, "gadget_created", runner_created, 
data);
+   if (e_gadget_site_is_desklock(obj))
+ evas_object_show(inst->obj);
+   else if (!e_desklock_state_get())
+ evas_object_show(inst->obj);
 }
 
 
@@ -843,7 +847,6 @@ gadget_create(Evas_Object *parent, Config_Item *ci, int 
*id, E_Gadget_Site_Orien
  }
E_EXPAND(inst->obj);
E_FILL(inst->obj);
-   evas_object_show(inst->obj);
efl_wl_aspect_set(inst->obj, 1);
efl_wl_minmax_set(inst->obj, 1);
efl_wl_global_add(inst->obj, _gadget_interface, 1, inst, gadget_bind);
@@ -1120,6 +1123,32 @@ list_error_cb(void *d EINA_UNUSED, Eio_File *ls 
EINA_UNUSED, int error EINA_UNUS
gadget_lister = NULL;
 }
 
+static Ecore_Job *desklock_job;
+
+static void
+desklock_job_cb()
+{
+   Eina_List *l;
+   Instance *inst;
+
+   EINA_LIST_FOREACH(instances, l, inst)
+ {
+if (e_gadget_site_is_desklock(e_gadget_site_get(inst->box))) continue;
+if (e_desklock_state_get())
+  evas_object_hide(inst->obj);
+else
+  evas_object_show(inst->obj);
+ }
+   desklock_job = NULL;
+}
+
+static Eina_Bool
+desklock_event()
+{
+   if (!desklock_job) desklock_job = ecore_job_add(desklock_job_cb, NULL);
+   return ECORE_CALLBACK_RENEW;
+}
+
 EINTERN void
 e_gadget_runner_init(void)
 {
@@ -1157,6 +1186,7 @@ e_gadget_runner_init(void)
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_DIRECTORY_CREATED, 
monitor_dir_create, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_DIRECTORY_DELETED, 
monitor_dir_del, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_ERROR, monitor_error, NULL);
+   E_LIST_HANDLER_APPEND(handlers, E_EVENT_DESKLOCK, desklock_event, NULL);
 
sandbox_gadgets = 
eina_hash_string_superfast_new((Eina_Free_Cb)efreet_desktop_free);
{
@@ -1195,6 +1225,7 @@ e_gadget_runner_shutdown(void)
E_FREE_LIST(handlers, ecore_event_handler_del);
E_FREE_FUNC(sandbox_gadgets, eina_hash_free);
E_FREE_FUNC(gadget_lister, eio_file_cancel);
+   E_FREE_FUNC(desklock_job, ecore_job_del);
close(ns_fd);
ns_fd = -1;
 }

-- 




[EGIT] [core/efl] master 01/01: efl-wl: send surface enter/leave based on compositor object visibility

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit cac28eeb7e68134cb8e48eec91407ed1c3727976
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 13:00:04 2018 -0500

efl-wl: send surface enter/leave based on compositor object visibility

this allows clients to conserve memory when the compositor is in a
hidden or obscured state

@feature
---
 src/lib/efl_wl/efl_wl.c | 31 +--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index 863dcd9452..aa4925d30d 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -1287,6 +1287,17 @@ shell_surface_init(Comp_Surface *cs)
 }
 
 static void
+comp_surface_output_leave(Comp_Surface *cs)
+{
+   Eina_List *l;
+   struct wl_resource *res;
+
+   EINA_LIST_FOREACH(cs->c->output_resources, l, res)
+ if (wl_resource_get_client(res) == wl_resource_get_client(cs->res))
+   wl_surface_send_leave(cs->res, res);
+}
+
+static void
 comp_surface_output_enter(Comp_Surface *cs)
 {
Eina_List *l;
@@ -2579,7 +2590,10 @@ comp_surface_create(struct wl_client *client, struct 
wl_resource *resource, uint
c->surfaces = eina_inlist_prepend(c->surfaces, EINA_INLIST_GET(cs));
c->surfaces_count++;
eina_hash_list_append(c->client_surfaces, , cs);
-   comp_surface_output_enter(cs);
+   if (evas_object_visible_get(cs->c->clip))
+ comp_surface_output_enter(cs);
+   else
+ comp_surface_output_leave(cs);
 
cs->opaque = tiler_new();
cs->input = tiler_new();
@@ -3188,7 +3202,12 @@ output_bind(struct wl_client *client, void *data, 
uint32_t version, uint32_t id)
output_resize(c, res);
EINA_INLIST_FOREACH(c->surfaces, cs)
  if (wl_resource_get_client(cs->res) == client)
-   comp_surface_output_enter(cs);
+   {
+  if (evas_object_visible_get(c->clip))
+comp_surface_output_enter(cs);
+  else
+comp_surface_output_leave(cs);
+   }
 }
 
 /
@@ -5477,14 +5496,22 @@ static void
 comp_smart_show(Evas_Object *obj)
 {
Comp *c = evas_object_smart_data_get(obj);
+   Comp_Surface *cs;
+
evas_object_show(c->clip);
+   EINA_INLIST_FOREACH(c->surfaces, cs)
+ comp_surface_output_leave(cs);
 }
 
 static void
 comp_smart_hide(Evas_Object *obj)
 {
Comp *c = evas_object_smart_data_get(obj);
+   Comp_Surface *cs;
+
evas_object_hide(c->clip);
+   EINA_INLIST_FOREACH(c->surfaces, cs)
+ comp_surface_output_leave(cs);
 }
 
 static void

-- 




[EGIT] [core/enlightenment] master 01/01: process comp object hide/show signals immediately during intercept

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit c1cd24a5616740b8c9f21d76a37728968e78fcfd
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 12:36:47 2018 -0500

process comp object hide/show signals immediately during intercept

for objects without animations, it's important to instantly perform
state transitions in order to preserve intended visibility behaviors of
these objects and avoid race conditions due to asynchronous signal
processing

fix T6722
---
 src/bin/e_comp_object.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index c1a7941c7..eecb88817 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -2816,6 +2816,7 @@ _e_comp_object_util_show(void *data EINA_UNUSED, 
Evas_Object *obj)
 evas_object_data_set(obj, "comp_ref", (void*)1);
  }
edje_object_signal_emit(obj, "e,state,visible", "e");
+   edje_object_message_signal_process(obj);
evas_object_data_set(obj, "comp_showing", (void*)1);
if (e_comp_util_object_is_above_nocomp(obj))
  {
@@ -2844,6 +2845,7 @@ _e_comp_object_util_hide(void *data EINA_UNUSED, 
Evas_Object *obj)
 evas_object_data_set(obj, "comp_ref", (void*)1);
  }
edje_object_signal_emit(obj, "e,state,hidden", "e");
+   edje_object_message_signal_process(obj);
evas_object_data_set(obj, "comp_hiding", (void*)1);
 
if (evas_object_data_del(obj, "comp_override"))

-- 




[EGIT] [core/enlightenment] master 01/01: re-set sandbox gadget cmdline on startup

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 10ae53b9948ca191915fe9de0dcdee4a10f61bee
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 11:45:46 2018 -0500

re-set sandbox gadget cmdline on startup

ensure that this is updated in case the .desktop changes
---
 src/bin/e_gadget_runner.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_gadget_runner.c b/src/bin/e_gadget_runner.c
index 723056bd5..7599f4f92 100644
--- a/src/bin/e_gadget_runner.c
+++ b/src/bin/e_gadget_runner.c
@@ -994,9 +994,12 @@ sandbox_create(Evas_Object *parent, const char *type, int 
*id, E_Gadget_Site_Ori
if (!ci)
  {
 ci = _conf_item_get(id);
-ci->cmd = eina_stringshare_add(ed->exec);
 ci->exit_mode = EXIT_MODE_RESTART;
  }
+   if (ci->id > 0)
+ if (!eina_streq(ci->cmd, ed->exec))
+   e_config_save_queue();
+   eina_stringshare_replace(>cmd, ed->exec);
ci->sandbox = 1;
return gadget_create(parent, ci, id, orient);
 }

-- 




[EGIT] [core/enlightenment] master 01/01: use per-instance event handler for batman powersave eventing

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 846c84639b7bfba45762997871b92ea2b4bdcfb5
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 11:14:33 2018 -0500

use per-instance event handler for batman powersave eventing

==19679== Invalid read of size 4
==19679==at 0x5CC90EF: _ecore_event_message_handler_handler_del 
(ecore_event_message_handler.c:194)
==19679==by 0x5CCA332: ecore_event_message_handler_del 
(ecore_event_message_handler.eo.c:22)
==19679==by 0x5CBC7E3: ecore_event_handler_del (ecore_events.c:51)
==19679==by 0x2A23F4F1: _batman_removed_cb (batman.c:579)
==19679==by 0x6A9A33D: _eo_evas_smart_cb (evas_object_smart.c:78)
==19679==by 0xC166F4D: _event_callback_call (eo_base_class.c:1560)
==19679==by 0xC16728E: _efl_object_event_callback_legacy_call 
(eo_base_class.c:1633)
==19679==by 0xC167334: efl_event_callback_legacy_call 
(eo_base_class.c:1636)
==19679==by 0x6A889CA: 
_efl_canvas_object_efl_object_event_callback_legacy_call 
(evas_object_main.c:1157)
==19679==by 0xC167334: efl_event_callback_legacy_call 
(eo_base_class.c:1636)
==19679==by 0x6A9CBA7: evas_object_smart_callback_call 
(evas_object_smart.c:1037)
==19679==by 0x500B1D: _gadget_remove (e_gadget.c:426)
==19679==by 0x5037A9: _gadget_menu_remove (e_gadget.c:1263)
==19679==by 0x552600: _e_menu_active_call (e_menu.c:2066)
==19679==by 0x55445E: _e_menu_cb_mouse_up (e_menu.c:2809)
==19679==by 0x5CC9933: 
_ecore_event_message_handler_efl_loop_message_handler_message_call 
(ecore_event_message_handler.c:359)
==19679==by 0x5CD31D1: efl_loop_message_handler_message_call 
(efl_loop_message_handler.eo.c:14)
==19679==by 0x5CCDA73: _efl_loop_message_process (efl_loop.c:681)
==19679==by 0x5CCDC64: efl_loop_message_process (efl_loop.c:711)
==19679==by 0x5CC7453: _ecore_main_loop_iterate_internal 
(ecore_main.c:2444)
==19679==by 0x5CC457E: _ecore_main_loop_begin (ecore_main.c:1173)
==19679==by 0x5CCC0CD: _efl_loop_begin (efl_loop.c:97)
==19679==by 0x5CCED13: efl_loop_begin (efl_loop.eo.c:50)
==19679==by 0x5CC46F7: ecore_main_loop_begin (ecore_main.c:1246)
==19679==by 0x5476B6: main (e_main.c:1092)
==19679==  Address 0x212af268 is 40 bytes inside a block of size 48 free'd
==19679==at 0x4C30D18: free (vg_replace_malloc.c:530)
==19679==by 0x5CC9BE6: 
_ecore_event_message_handler_efl_loop_message_handler_message_call 
(ecore_event_message_handler.c:389)
==19679==by 0x5CD31D1: efl_loop_message_handler_message_call 
(efl_loop_message_handler.eo.c:14)
==19679==by 0x5CCDA73: _efl_loop_message_process (efl_loop.c:681)
==19679==by 0x5CCDC64: efl_loop_message_process (efl_loop.c:711)
==19679==by 0x5CC7453: _ecore_main_loop_iterate_internal 
(ecore_main.c:2444)
==19679==by 0x5CC457E: _ecore_main_loop_begin (ecore_main.c:1173)
==19679==by 0x5CCC0CD: _efl_loop_begin (efl_loop.c:97)
==19679==by 0x5CCED13: efl_loop_begin (efl_loop.eo.c:50)
==19679==by 0x5CC46F7: ecore_main_loop_begin (ecore_main.c:1246)
==19679==by 0x5476B6: main (e_main.c:1092)
==19679==  Block was alloc'd at
==19679==at 0x4C31A1E: calloc (vg_replace_malloc.c:711)
==19679==by 0x5CC8EE1: _ecore_event_message_handler_handler_add 
(ecore_event_message_handler.c:148)
==19679==by 0x5CCA0FB: ecore_event_message_handler_add 
(ecore_event_message_handler.eo.c:14)
==19679==by 0x5CBC790: ecore_event_handler_add (ecore_events.c:35)
==19679==by 0x2A23FB87: _batman_created_cb (batman.c:661)
==19679==by 0x6A9A33D: _eo_evas_smart_cb (evas_object_smart.c:78)
==19679==by 0xC166F4D: _event_callback_call (eo_base_class.c:1560)
==19679==by 0xC16728E: _efl_object_event_callback_legacy_call 
(eo_base_class.c:1633)
==19679==by 0xC167334: efl_event_callback_legacy_call 
(eo_base_class.c:1636)
==19679==by 0x6A889CA: 
_efl_canvas_object_efl_object_event_callback_legacy_call 
(evas_object_main.c:1157)
==19679==by 0xC167334: efl_event_callback_legacy_call 
(eo_base_class.c:1636)
==19679==by 0x6A9CBA7: evas_object_smart_callback_call 
(evas_object_smart.c:1037)
==19679==by 0x501172: _gadget_object_create (e_gadget.c:548)
==19679==by 0x506B90: e_gadget_type_add (e_gadget.c:2056)
==19679==by 0x2A23CA44: sysinfo_init (mod.c:161)
==19679==by 0x2A23CCF5: e_modapi_init (mod.c:203)
==19679==by 0x556814: e_module_enable (e_module.c:524)
==19679==by 0x555DF9: e_module_all_load (e_module.c:324)
==19679==by 0x554EFF: _module_done_cb (e_module.c:73)
==19679==by 0x73531C1: eio_async_end (eio_file.c:510)
==19679==by 0x5CF8D67: 

[EGIT] [core/efl] master 01/01: evas: include legacy vg header instead of manually declaring typedef

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 561bfbc55b6ccd9a95084d428d358179abcd58d1
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 08:50:17 2018 -0500

evas: include legacy vg header instead of manually declaring typedef

fix T6720
---
 src/lib/evas/Evas_Legacy.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/lib/evas/Evas_Legacy.h b/src/lib/evas/Evas_Legacy.h
index e5c70334ab..acd0dc74d5 100644
--- a/src/lib/evas/Evas_Legacy.h
+++ b/src/lib/evas/Evas_Legacy.h
@@ -3589,8 +3589,6 @@ EAPI Evas_Object *evas_object_rectangle_add(Evas *e) 
EINA_WARN_UNUSED_RESULT EIN
 
 #ifdef EFL_BETA_API_SUPPORT
 
-typedef Eo Efl_Canvas_VG_Node;
-
 /**
  * Creates a new vector object on the given Evas @p e canvas.
  *
@@ -3606,6 +3604,7 @@ typedef Eo Efl_Canvas_VG_Node;
  */
 EAPI Evas_Object *evas_object_vg_add(Evas *e) EINA_WARN_UNUSED_RESULT 
EINA_ARG_NONNULL(1) EINA_MALLOC;
 
+#include "canvas/efl_canvas_vg_node.eo.legacy.h"
 #include "canvas/efl_canvas_vg.eo.legacy.h"
 #include "canvas/efl_canvas_vg_container.eo.legacy.h"
 /**

-- 




[EGIT] [core/enlightenment] master 01/01: disable bounce for gadget bar scrollers

2018-02-22 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit af249979066811365af8781a8871d450e4929a0a
Author: Mike Blumenkrantz 
Date:   Thu Feb 22 08:49:34 2018 -0500

disable bounce for gadget bar scrollers

fix T6721
---
 src/bin/e_bryce.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/bin/e_bryce.c b/src/bin/e_bryce.c
index 5a46ea31f..6dc0c97f9 100644
--- a/src/bin/e_bryce.c
+++ b/src/bin/e_bryce.c
@@ -875,11 +875,13 @@ _bryce_orient(Bryce *b)
  {
 elm_layout_signal_emit(b->layout, "e,state,orient,horizontal", "e");
 elm_layout_signal_emit(b->scroller, "e,state,orient,horizontal", "e");
+elm_scroller_policy_set(b->scroller, ELM_SCROLLER_POLICY_AUTO, 
ELM_SCROLLER_POLICY_OFF);
  }
else
  {
 elm_layout_signal_emit(b->layout, "e,state,orient,vertical", "e");
 elm_layout_signal_emit(b->scroller, "e,state,orient,vertical", "e");
+elm_scroller_policy_set(b->scroller, ELM_SCROLLER_POLICY_OFF, 
ELM_SCROLLER_POLICY_AUTO);
  }
evas_object_event_callback_add(b->site, EVAS_CALLBACK_CHANGED_SIZE_HINTS, 
_bryce_site_hints, b);
evas_object_smart_callback_add(b->site, "gadget_site_anchor", 
_bryce_site_anchor, b);
@@ -920,6 +922,7 @@ _bryce_create(Bryce *b, Evas_Object *parent)
_bryce_style_apply(b);
 
b->scroller = scr = elm_scroller_add(ly);
+   elm_scroller_bounce_set(scr, 0, 0);
elm_object_style_set(scr, "bryce");
_bryce_orient(b);
elm_object_part_content_set(ly, "e.swallow.content", scr);

-- 




[EGIT] [core/efl] master 03/03: eolian: fix eina hash usage so it doesn't consume all your memory

2018-02-22 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 26f0c56fafea8b46bbb425c3a0f808c1881fc08f
Author: Daniel Kolesa 
Date:   Thu Feb 22 11:18:55 2018 +0100

eolian: fix eina hash usage so it doesn't consume all your memory

This makes sure items are checked before being added, so that eina
hash doesn't get confused, add each item thousands of times and
run out of memory.
---
 src/lib/eolian/eo_parser.c   | 2 +-
 src/lib/eolian/eolian_database.c | 9 +++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 4a4757a949..56c6a4bfa3 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -2256,7 +2256,7 @@ eo_parser_database_fill(Eolian_Unit *parent, const char 
*filename, Eina_Bool eot
 
if (ret)
  {
-if (parent != ret)
+if ((parent != ret) && !eina_hash_find(parent->children, filename))
   eina_hash_add(parent->children, filename, ret);
 return ret;
  }
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index b932cdaa7e..514d4bf63a 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -706,8 +706,12 @@ static Eina_Bool
 _merge_unit_cb(const Eina_Hash *hash EINA_UNUSED,
const void *key, void *data, void *fdata)
 {
-   if (eina_hash_add((Eina_Hash *)fdata, key, data))
- eolian_object_ref((Eolian_Object *)data);
+   Eina_Hash *dest = fdata;
+   if (!eina_hash_find(dest, key))
+ {
+eina_hash_add(dest, key, data);
+eolian_object_ref((Eolian_Object *)data);
+ }
return EINA_TRUE;
 }
 
@@ -744,6 +748,7 @@ _merge_units_cb(const Eina_Hash *hash EINA_UNUSED,
return EINA_TRUE;
 }
 
+
 static void
 _merge_units(Eolian_Unit *unit)
 {

-- 




[EGIT] [core/efl] master 01/03: eolian: add eolian_object_add wrapper

2018-02-22 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 7b5a73b96765223ffcf1f74a7733beda655c33a0
Author: Daniel Kolesa 
Date:   Wed Feb 21 17:50:18 2018 +0100

eolian: add eolian_object_add wrapper
---
 src/lib/eolian/eo_parser.c   | 7 ++-
 src/lib/eolian/eolian_database.h | 7 +++
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 031687a80c..3f888c5dc7 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -2287,12 +2287,9 @@ eo_parser_database_fill(Eolian_Unit *parent, const char 
*filename, Eina_Bool eot
  }
ls->tmp.kls = NULL;
 
-   eina_hash_set(ls->state->unit.classes, cl->full_name, cl);
-   eina_hash_set(ls->unit->classes, cl->full_name, cl);
+   eolian_object_add(>base, cl->full_name, ls->unit->classes);
+   eolian_object_add(>base, cl->full_name, ls->state->unit.classes);
eina_hash_set(ls->state->classes_f, cl->base.file, cl);
-   /* once for unit, once for state */
-   eolian_object_ref(>base);
-   eolian_object_ref(>base);
 
 done:
ret = ls->unit;
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index 5811e93cad..e7ae5f1bb3 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -84,6 +84,13 @@ eolian_object_unref(Eolian_Object *obj)
return (--obj->refcount > 0);
 }
 
+static inline void
+eolian_object_add(Eolian_Object *obj, Eina_Stringshare *name, Eina_Hash *hash)
+{
+   eina_hash_add(hash, name, obj);
+   eolian_object_ref(obj);
+}
+
 struct _Eolian_Documentation
 {
Eolian_Object base;

-- 




[EGIT] [core/efl] master 02/03: eolian: store types/typedecls in units

2018-02-22 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 665b88204cae45a9aae7c1bdcdd4fbf1e2ac6fcb
Author: Daniel Kolesa 
Date:   Wed Feb 21 17:59:39 2018 +0100

eolian: store types/typedecls in units
---
 src/lib/eolian/database_type.c   | 35 +++
 src/lib/eolian/eo_parser.c   | 12 +---
 src/lib/eolian/eolian_database.h |  6 +++---
 3 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index 29da94cc86..d8954ec5ae 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -41,31 +41,34 @@ database_typedecl_del(Eolian_Typedecl *tp)
 }
 
 void
-database_type_add(Eolian *state, Eolian_Typedecl *def)
+database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eina_hash_set(state->unit.aliases, def->full_name, def);
-   eina_hash_set(state->aliases_f, def->base.file, eina_list_append
-((Eina_List*)eina_hash_find(state->aliases_f, def->base.file),
-def));
-   database_decl_add(state, def->full_name, EOLIAN_DECL_ALIAS, def->base.file, 
def);
+   eolian_object_add(>base, tp->full_name, unit->state->unit.aliases);
+   eolian_object_add(>base, tp->full_name, unit->aliases);
+   eina_hash_set(unit->state->aliases_f, tp->base.file, eina_list_append
+((Eina_List*)eina_hash_find(unit->state->aliases_f, 
tp->base.file),
+tp));
+   database_decl_add(unit->state, tp->full_name, EOLIAN_DECL_ALIAS, 
tp->base.file, tp);
 }
 
 void
-database_struct_add(Eolian *state, Eolian_Typedecl *tp)
+database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eina_hash_set(state->unit.structs, tp->full_name, tp);
-   eina_hash_set(state->structs_f, tp->base.file, eina_list_append
-((Eina_List*)eina_hash_find(state->structs_f, tp->base.file), 
tp));
-   database_decl_add(state, tp->full_name, EOLIAN_DECL_STRUCT, tp->base.file, 
tp);
+   eolian_object_add(>base, tp->full_name, unit->state->unit.structs);
+   eolian_object_add(>base, tp->full_name, unit->structs);
+   eina_hash_set(unit->state->structs_f, tp->base.file, eina_list_append
+((Eina_List*)eina_hash_find(unit->state->structs_f, 
tp->base.file), tp));
+   database_decl_add(unit->state, tp->full_name, EOLIAN_DECL_STRUCT, 
tp->base.file, tp);
 }
 
 void
-database_enum_add(Eolian *state, Eolian_Typedecl *tp)
+database_enum_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eina_hash_set(state->unit.enums, tp->full_name, tp);
-   eina_hash_set(state->enums_f, tp->base.file, eina_list_append
-((Eina_List*)eina_hash_find(state->enums_f, tp->base.file), 
tp));
-   database_decl_add(state, tp->full_name, EOLIAN_DECL_ENUM, tp->base.file, 
tp);
+   eolian_object_add(>base, tp->full_name, unit->state->unit.enums);
+   eolian_object_add(>base, tp->full_name, unit->enums);
+   eina_hash_set(unit->state->enums_f, tp->base.file, eina_list_append
+((Eina_List*)eina_hash_find(unit->state->enums_f, 
tp->base.file), tp));
+   database_decl_add(unit->state, tp->full_name, EOLIAN_DECL_ENUM, 
tp->base.file, tp);
 }
 
 Eina_Bool
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 3f888c5dc7..4a4757a949 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -131,14 +131,12 @@ push_typedecl(Eo_Lexer *ls)
 static void
 pop_type(Eo_Lexer *ls)
 {
-   eolian_object_ref((Eolian_Object *)eina_list_data_get(ls->tmp.type_defs));
ls->tmp.type_defs = eina_list_remove_list(ls->tmp.type_defs, 
ls->tmp.type_defs);
 }
 
 static void
 pop_typedecl(Eo_Lexer *ls)
 {
-   eolian_object_ref((Eolian_Object *)eina_list_data_get(ls->tmp.type_decls));
ls->tmp.type_decls = eina_list_remove_list(ls->tmp.type_decls, 
ls->tmp.type_decls);
 }
 
@@ -528,7 +526,7 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool 
is_extern,
  }
check_match(ls, '}', '{', bline, bcolumn);
FILL_BASE(def->base, ls, line, column);
-   if (name) database_struct_add(ls->state, def);
+   if (name) database_struct_add(ls->unit, def);
return def;
 }
 
@@ -640,7 +638,7 @@ parse_enum(Eo_Lexer *ls, const char *name, Eina_Bool 
is_extern,
  }
check_match(ls, '}', '{', bline, bcolumn);
FILL_BASE(def->base, ls, line, column);
-   if (name) database_enum_add(ls->state, def);
+   if (name) database_enum_add(ls->unit, def);
return def;
 }
 
@@ -2154,13 +2152,13 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot)
 }
   case KW_type:
 {
-   database_type_add(ls->state, parse_typedef(ls));
+   database_type_add(ls->unit, parse_typedef(ls));
pop_typedecl(ls);
break;
 }
   case KW_function:
 {
-   database_type_add(ls->state, parse_function_pointer(ls));
+   database_type_add(ls->unit, 

[EGIT] [core/efl] master 02/03: move from efl.vpath to eina_vpath

2018-02-22 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit c4f33c67a8d75888b21a0f464b0b1c82bd55bd0b
Author: Marcel Hollerbach 
Date:   Wed Feb 21 10:06:02 2018 +0100

move from efl.vpath to eina_vpath

The usages from efl.vpath are moved to to eina_vpath
---
 src/lib/ecore/ecore.c   | 11 
 src/lib/ecore_wl2/ecore_wl2_buffer.c| 10 ++--
 src/lib/edje/edje_edit.c|  9 +---
 src/lib/edje/edje_load.c|  9 +---
 src/lib/efl/interfaces/efl_file.c   | 14 +
 src/lib/efreet/efreet.c | 71 +
 src/lib/efreet/efreet_base.c|  8 ++-
 src/lib/eina/eina_vpath.c   |  1 -
 src/lib/elementary/elm_config.c | 13 +++--
 src/lib/elementary/elm_main.c   | 17 +-
 src/lib/emotion/emotion_smart.c | 23 +---
 src/modules/ecore_buffer/shm/ecore_buffer_shm.c |  6 +--
 12 files changed, 95 insertions(+), 97 deletions(-)

diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c
index a7b4025109..d911bc4e23 100644
--- a/src/lib/ecore/ecore.c
+++ b/src/lib/ecore/ecore.c
@@ -122,8 +122,6 @@ static void _systemd_watchdog_cb(void *data, const 
Efl_Event *event);
 static Efl_Loop_Timer *_systemd_watchdog = NULL;
 #endif
 
-static Efl_Vpath *vpath = NULL;
-
 Eina_Lock _ecore_main_loop_lock;
 int _ecore_main_lock_count;
 
@@ -279,9 +277,6 @@ ecore_init(void)
_ecore_main_loop_init();
if (!_ecore_event_init()) goto shutdown_event;
 
-   vpath = efl_add(EFL_VPATH_CORE_CLASS, NULL);
-   if (vpath) efl_vpath_manager_register(EFL_VPATH_MANAGER_CLASS, 0, vpath);
-
_ecore_signal_init();
 #ifndef HAVE_EXOTIC
_ecore_exe_init();
@@ -451,12 +446,6 @@ ecore_shutdown(void)
  _ecore_main_shutdown();
  _ecore_signal_shutdown();
 
-   if (vpath)
- {
-efl_del(vpath);
-vpath = NULL;
- }
-
  _ecore_main_loop_shutdown();
 
 #if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO)
diff --git a/src/lib/ecore_wl2/ecore_wl2_buffer.c 
b/src/lib/ecore_wl2/ecore_wl2_buffer.c
index 50dca1b35a..a7cb174cb2 100644
--- a/src/lib/ecore_wl2/ecore_wl2_buffer.c
+++ b/src/lib/ecore_wl2/ecore_wl2_buffer.c
@@ -310,15 +310,15 @@ err:
 static Buffer_Handle *
 _wl_shm_alloc(Buffer_Manager *self EINA_UNUSED, const char *name EINA_UNUSED, 
int w, int h, unsigned long *stride, int32_t *fd)
 {
-   Efl_Vpath_File *file_obj;
Eina_Tmpstr *fullname;
size_t size = w * h * 4;
void *out = NULL;
+   char *tmp;
+
+   tmp = eina_vpath_resolve("(:usr.run:)/evas-wayland_shm-XX");
+   *fd = eina_file_mkstemp(tmp, );
+   free(tmp);
 
-   file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS,
-  "(:run:)/evas-wayland_shm-XX");
-   *fd = eina_file_mkstemp(efl_vpath_file_result_get(file_obj), );
-   efl_del(file_obj);
if (*fd < 0) return NULL;
 
unlink(fullname);
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c
index 05336438d6..c908beba45 100644
--- a/src/lib/edje/edje_edit.c
+++ b/src/lib/edje/edje_edit.c
@@ -256,16 +256,11 @@ _edje_edit_efl_file_file_set(Eo *obj, Edje_Edit *eed, 
const char *file, const ch
 *groups).
 *  P.S. don't forget about mmap version below
 */
-   Efl_Vpath_File *file_obj =
- efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, file);
-   efl_vpath_file_do(file_obj);
-   // XXX:FIXME: allow this to be async
-   efl_vpath_file_wait(file_obj);
-   file = efl_vpath_file_result_get(file_obj);
+   file = eina_vpath_resolve(file);
 
Eina_Bool int_ret;
int_ret = efl_file_set(efl_super(obj, MY_CLASS), file, group);
-   efl_del(file_obj);
+
if (!int_ret)
  return EINA_FALSE;
 
diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c
index a458b77970..6c749bcdb6 100644
--- a/src/lib/edje/edje_load.c
+++ b/src/lib/edje/edje_load.c
@@ -262,18 +262,13 @@ edje_file_collection_list(const char *file)
Eina_List *lst;
 
if ((!file) || (!*file)) return NULL;
-   Efl_Vpath_File *file_obj =
- efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, file);
-   efl_vpath_file_do(file_obj);
-   // XXX:FIXME: allow this to be async
-   efl_vpath_file_wait(file_obj);
-   file = efl_vpath_file_result_get(file_obj);
+   file = eina_vpath_resolve(file);
f = eina_file_open(file, EINA_FALSE);
 
lst = edje_mmap_collection_list(f);
 
eina_file_close(f);
-   efl_del(file_obj);
+   free(file);
return lst;
 }
 
diff --git a/src/lib/efl/interfaces/efl_file.c 
b/src/lib/efl/interfaces/efl_file.c
index 562a06b059..65060d858d 100644
--- a/src/lib/efl/interfaces/efl_file.c
+++ b/src/lib/efl/interfaces/efl_file.c
@@ -7,8 +7,6 @@
 typedef struct _Efl_File_Data Efl_File_Data;
 struct _Efl_File_Data
 {
-   Eo *vo;
-
Efl_Image_Load_Error error;
 };
 
@@ -22,11 +20,7 @@ 

[EGIT] [core/efl] master 01/03: introduce eina_vpath!

2018-02-22 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 7165003bc60177818a491db0d6a557dd0767554b
Author: Marcel Hollerbach 
Date:   Sun Feb 18 22:12:58 2018 +0100

introduce eina_vpath!

Its the successor of efl.vpath, the api is synchronous, and supports
addtional vpath paths, new apis cal always be added to use them.
---
 src/Makefile_Eina.am |   9 +-
 src/lib/eina/Eina.h  |   1 +
 src/lib/eina/eina_main.c |   3 +
 src/lib/eina/eina_vpath.c| 349 +++
 src/lib/eina/eina_vpath.h|  74 +
 src/tests/eina/eina_suite.c  |   1 +
 src/tests/eina/eina_suite.h  |   1 +
 src/tests/eina/eina_test_vpath.c |  53 ++
 8 files changed, 488 insertions(+), 3 deletions(-)

diff --git a/src/Makefile_Eina.am b/src/Makefile_Eina.am
index 186bd1e8e1..33c7c660c2 100644
--- a/src/Makefile_Eina.am
+++ b/src/Makefile_Eina.am
@@ -107,7 +107,8 @@ lib/eina/eina_slice.h \
 lib/eina/eina_inline_slice.x \
 lib/eina/eina_inline_modinfo.x \
 lib/eina/eina_freeq.h \
-lib/eina/eina_slstr.h
+lib/eina/eina_slstr.h \
+lib/eina/eina_vpath.h
 
 
 lib_eina_libeina_la_SOURCES = \
@@ -183,7 +184,8 @@ lib/eina/eina_quaternion.c \
 lib/eina/eina_bezier.c \
 lib/eina/eina_safepointer.c \
 lib/eina/eina_freeq.c \
-lib/eina/eina_slstr.c
+lib/eina/eina_slstr.c \
+lib/eina/eina_vpath.c
 
 
 if HAVE_WIN32
@@ -356,7 +358,8 @@ tests/eina/eina_test_bezier.c \
 tests/eina/eina_test_safepointer.c \
 tests/eina/eina_test_slice.c \
 tests/eina/eina_test_freeq.c \
-tests/eina/eina_test_slstr.c
+tests/eina/eina_test_slstr.c \
+tests/eina/eina_test_vpath.c
 
 tests_eina_eina_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
 -DTESTS_WD=\"`pwd`\" \
diff --git a/src/lib/eina/Eina.h b/src/lib/eina/Eina.h
index 256de025bc..b403d308f8 100644
--- a/src/lib/eina/Eina.h
+++ b/src/lib/eina/Eina.h
@@ -274,6 +274,7 @@ extern "C" {
 #include 
 #include 
 #include 
+#include 
 
 #undef EAPI
 #define EAPI
diff --git a/src/lib/eina/eina_main.c b/src/lib/eina/eina_main.c
index 1a152d0da7..275e4a0baa 100644
--- a/src/lib/eina/eina_main.c
+++ b/src/lib/eina/eina_main.c
@@ -68,6 +68,7 @@
 #include "eina_evlog.h"
 #include "eina_freeq.h"
 #include "eina_slstr.h"
+#include "eina_vpath.h"
 
 /**
 *  Local *
@@ -155,6 +156,7 @@ EAPI Eina_Inlist *_eina_tracking = NULL;
S(safepointer);
S(slstr);
S(promise);
+   S(vpath);
 #undef S
 
 struct eina_desc_setup
@@ -202,6 +204,7 @@ static const struct eina_desc_setup _eina_desc_setup[] = {
S(safepointer),
S(slstr),
S(promise),
+   S(vpath),
 #undef S
 };
 static const size_t _eina_desc_setup_len = sizeof(_eina_desc_setup) /
diff --git a/src/lib/eina/eina_vpath.c b/src/lib/eina/eina_vpath.c
new file mode 100644
index 00..af57afae97
--- /dev/null
+++ b/src/lib/eina/eina_vpath.c
@@ -0,0 +1,349 @@
+#include 
+
+#include "eina_private.h"
+
+static Eina_Hash *vpath_data = NULL;
+
+#ifdef CRI
+#undef CRI
+#endif
+#define CRI(...) EINA_LOG_DOM_CRIT(_eina_vpath_log_dom, __VA_ARGS__)
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eina_vpath_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eina_vpath_log_dom, __VA_ARGS__)
+
+static int _eina_vpath_log_dom = -1;
+
+static inline void
+_eina_vpath_data_add(const char *key, const char *value)
+{
+   eina_hash_add(vpath_data, key, eina_stringshare_add(value));
+}
+
+static inline Eina_Stringshare*
+_eina_vpath_data_get(const char *key)
+{
+   return eina_hash_find(vpath_data, key);
+}
+
+
+static char*
+_fallback_runtime_dir(const char *home)
+{
+   char buf[PATH_MAX];
+   struct stat st;
+
+#if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
+   if (setuid(geteuid()) != 0)
+  {
+ fprintf(stderr,
+ "FATAL: Cannot setuid - errno=%i\n",
+ errno);
+ abort();
+  }
+#endif
+   // fallback - make ~/.run
+   snprintf(buf, sizeof(buf), "%s/.run", home);
+   if (!!mkdir(buf,  S_IRUSR | S_IWUSR | S_IXUSR))
+ {
+if (errno == EEXIST)
+  {
+ if (stat(buf, ) == 0)
+   {
+  // some sanity checks - but not for security
+  if (!(st.st_mode & S_IFDIR))
+{
+   // fatal - exists but is not a dir
+   fprintf(stderr,
+   "FATAL: run dir '%s' exists but not a dir\n",
+   buf);
+   abort();
+}
+#if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
+  if (st.st_uid != geteuid())
+{
+   // fatal - run dir doesn't belong to user
+  

[EGIT] [core/efl] master 03/03: lets delete efl_vpath

2018-02-22 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 8c7ba8c3a31ec671ccd6d7d30682dbd631d69a62
Author: Marcel Hollerbach 
Date:   Sun Feb 18 21:58:57 2018 +0100

lets delete efl_vpath

Its not used anymore.

ref T5314
---
 src/Makefile_Efl.am   |   9 -
 src/lib/efl/Efl.h |   6 -
 src/lib/efl/interfaces/efl_interfaces_main.c  |   2 -
 src/lib/efl/interfaces/efl_vpath.eo   |  31 --
 src/lib/efl/interfaces/efl_vpath_core.c   | 436 --
 src/lib/efl/interfaces/efl_vpath_core.eo  |  33 --
 src/lib/efl/interfaces/efl_vpath_file.c   |  74 -
 src/lib/efl/interfaces/efl_vpath_file.eo  |  55 
 src/lib/efl/interfaces/efl_vpath_file_core.c  |  66 
 src/lib/efl/interfaces/efl_vpath_file_core.eo |  14 -
 src/lib/efl/interfaces/efl_vpath_manager.c|  88 --
 src/lib/efl/interfaces/efl_vpath_manager.eo   |  30 --
 12 files changed, 844 deletions(-)

diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am
index 01b98ddfde..f98f554362 100644
--- a/src/Makefile_Efl.am
+++ b/src/Makefile_Efl.am
@@ -54,11 +54,6 @@ efl_eolian_files = \
   lib/efl/interfaces/efl_pack_layout.eo \
   lib/efl/interfaces/efl_pack_linear.eo \
   lib/efl/interfaces/efl_pack_table.eo \
-  lib/efl/interfaces/efl_vpath.eo \
-  lib/efl/interfaces/efl_vpath_manager.eo \
-  lib/efl/interfaces/efl_vpath_file.eo \
-  lib/efl/interfaces/efl_vpath_core.eo \
-  lib/efl/interfaces/efl_vpath_file_core.eo \
   lib/efl/interfaces/efl_ui_base.eo \
   lib/efl/interfaces/efl_ui_direction.eo \
   lib/efl/interfaces/efl_ui_drag.eo \
@@ -122,10 +117,6 @@ lib/efl/interfaces/efl_interfaces_main.c \
 lib/efl/interfaces/efl_model_common.c \
 lib/efl/interfaces/efl_gfx_path.c \
 lib/efl/interfaces/efl_gfx_shape.c \
-lib/efl/interfaces/efl_vpath_file.c \
-lib/efl/interfaces/efl_vpath_manager.c \
-lib/efl/interfaces/efl_vpath_core.c \
-lib/efl/interfaces/efl_vpath_file_core.c \
 lib/efl/interfaces/efl_input_device.c \
 lib/efl/interfaces/efl_io_closer.c \
 lib/efl/interfaces/efl_io_positioner.c \
diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h
index ed7405ced8..2399c9c30b 100644
--- a/src/lib/efl/Efl.h
+++ b/src/lib/efl/Efl.h
@@ -62,12 +62,6 @@ typedef struct _Efl_Text_Annotate_Annotation 
Efl_Text_Annotate_Annotation;
 
 #include 
 
-#include "interfaces/efl_vpath_file.eo.h"
-#include "interfaces/efl_vpath.eo.h"
-#include "interfaces/efl_vpath_core.eo.h"
-#include "interfaces/efl_vpath_manager.eo.h"
-#include "interfaces/efl_vpath_file_core.eo.h"
-
 /* Data types */
 #include "interfaces/efl_gfx_types.eot.h"
 #include "interfaces/efl_ui_types.eot.h"
diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c 
b/src/lib/efl/interfaces/efl_interfaces_main.c
index d9b87634a6..cb1738e52b 100644
--- a/src/lib/efl/interfaces/efl_interfaces_main.c
+++ b/src/lib/efl/interfaces/efl_interfaces_main.c
@@ -46,8 +46,6 @@
 #include "interfaces/efl_canvas.eo.c"
 #include "interfaces/efl_canvas_pointer.eo.c"
 
-#include "interfaces/efl_vpath.eo.c"
-
 #include "interfaces/efl_screen.eo.c"
 
 /* Packing & containers */
diff --git a/src/lib/efl/interfaces/efl_vpath.eo 
b/src/lib/efl/interfaces/efl_vpath.eo
deleted file mode 100644
index ca97f1b090..00
--- a/src/lib/efl/interfaces/efl_vpath.eo
+++ /dev/null
@@ -1,31 +0,0 @@
-interface Efl.Vpath
-{
-   [[ VPath is the EFL "Virtual Path" system that maps paths and downloads
-
- You can provide virtual paths common in unix shells like:
-   "~/file.jpg"
-   "~username/file.png"
- And also other extended paths like:
-   "(:cache:)/file.png"
-   "(:videos:)/file.mp4"
-   ...
- And in future:
-   "file:///blah.jpg"
-   "http://blah.com/file.jpg;
-   "https://blahblah.com/file.jpg;
-   "ssh://blahblah.com:~/file.jpg"
-   ...
-
- @since 1.18
-   ]]
-   eo_prefix: efl_vpath;
-   methods {
-  fetch {
- [[ Fetch a new Vpath File object from the Vpath system ]]
- params {
-path: string; [[ The input virtual file path to fetch ]]
- }
- return: Efl.Vpath.File @owned; [[ An object representing the file ]]
-  }
-   }
-}
diff --git a/src/lib/efl/interfaces/efl_vpath_core.c 
b/src/lib/efl/interfaces/efl_vpath_core.c
deleted file mode 100644
index d6b136374d..00
--- a/src/lib/efl/interfaces/efl_vpath_core.c
+++ /dev/null
@@ -1,436 +0,0 @@
-#include "config.h"
-#include "Efl.h"
-
-#ifdef HAVE_GETPWENT
-# include 
-# include 
-#endif
-
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#define MY_CLASS EFL_VPATH_CORE_CLASS
-
-typedef struct _Efl_Vpath_Core_Data Efl_Vpath_Core_Data;
-
-struct _Efl_Vpath_Core_Data
-{
-   Eina_Spinlock lock;
-   Eina_Hash *meta;
-};
-
-static Efl_Vpath_Core *vpath_core = NULL;
-
-EOLIAN static Efl_Object *