[EGIT] [core/efl] master 01/07: elm_box: Minor fixes

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit 26715dad0b9224128e0d77987d0a9ae684fcb4e3
Author: Jean-Philippe Andre 
Date:   Mon Apr 4 18:57:26 2016 +0900

elm_box: Minor fixes
---
 src/lib/elementary/elm_box.c | 8 +++-
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/lib/elementary/elm_box.c b/src/lib/elementary/elm_box.c
index f3fbd6f..04231e1 100644
--- a/src/lib/elementary/elm_box.c
+++ b/src/lib/elementary/elm_box.c
@@ -539,21 +539,19 @@ _elm_box_unpack(Eo *obj, Elm_Box_Data *_pd EINA_UNUSED, 
Evas_Object *subobj)
 }
 
 EOLIAN static void
-_elm_box_unpack_all(Eo *obj, Elm_Box_Data *_pd EINA_UNUSED)
+_elm_box_unpack_all(Eo *obj, Elm_Box_Data *pd)
 {
Evas_Object_Box_Data *bd;
Evas_Object_Box_Option *opt;
Eina_List *l;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
-   ELM_BOX_CHECK(obj);
-   ELM_BOX_DATA_GET(obj, sd);
/* set this to block _sizing_eval() calls */
-   sd->delete_me = EINA_TRUE;
+   pd->delete_me = EINA_TRUE;
bd = evas_object_smart_data_get(wd->resize_obj);
EINA_LIST_FOREACH (bd->children, l, opt)
  elm_widget_sub_object_del(obj, opt->obj);
-   sd->delete_me = EINA_FALSE;
+   pd->delete_me = EINA_FALSE;
 
/* EINA_FALSE means do not delete objects */
evas_object_box_remove_all(wd->resize_obj, EINA_FALSE);

-- 




[EGIT] [core/efl] master 05/07: Efl vpath: Fix usage of @class function

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit 7eaf7af1d173921f20c4903a2d656554b9ec67fc
Author: Jean-Philippe Andre 
Date:   Wed Apr 6 13:27:09 2016 +0900

Efl vpath: Fix usage of @class function

Calling an @class function with a real object is not safe.
Missing check somewhere? I believe this should have failed safely.
---
 src/lib/efl/interfaces/efl_vpath_manager.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/efl/interfaces/efl_vpath_manager.c 
b/src/lib/efl/interfaces/efl_vpath_manager.c
index fdf5e9a..59be446 100644
--- a/src/lib/efl/interfaces/efl_vpath_manager.c
+++ b/src/lib/efl/interfaces/efl_vpath_manager.c
@@ -53,7 +53,7 @@ _register_sort_cb(Efl_Vpath_Manager_Entry *e1, 
Efl_Vpath_Manager_Entry *e2)
 static Eina_Bool
 _cb_vpath_del(void *data, const Eo_Event *event)
 {
-   efl_vpath_manager_unregister(data, event->obj);
+   efl_vpath_manager_unregister(EFL_VPATH_MANAGER_CLASS, event->obj);
eo_event_callback_del(event->obj, EO_BASE_EVENT_DEL, _cb_vpath_del, data);
return EINA_TRUE;
 }

-- 




[EGIT] [core/efl] master 06/07: Eo: Fix function cache after eo reinit

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit 5284b62e930f0bef0ed3125b3a485e0599451ef8
Author: Jean-Philippe Andre 
Date:   Wed Apr 6 14:02:05 2016 +0900

Eo: Fix function cache after eo reinit

The function call resolve cache may be broken after an eo
shutdown + init cycle, leading to calls to invalid functions.
This adds an static uint for each and every single EO API
entry point, as well as an extra if() check.

Now I'm not sure if the previous commit 0862b9d08384bc1d8 is
still necessary.
---
 src/lib/eo/Eo.h | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
index fa31fb1..f890b83 100644
--- a/src/lib/eo/Eo.h
+++ b/src/lib/eo/Eo.h
@@ -488,6 +488,7 @@ typedef struct _Eo_Call_Cache
 # endif
 #endif
Eo_Op   op;
+   unsigned intgeneration;
 } Eo_Call_Cache;
 
 // to pass the internal function call to EO_FUNC_BODY (as Func parameter)
@@ -503,10 +504,12 @@ typedef struct _Eo_Call_Cache
 #define EO_FUNC_COMMON_OP(Obj, Name, DefRet) \
  static Eo_Call_Cache ___cache; /* static 0 by default */   \
  Eo_Op_Call_Data ___call;   \
- if (EINA_UNLIKELY(___cache.op == EO_NOOP)) \
+ if (EINA_UNLIKELY((___cache.op == EO_NOOP) ||  \
+   (___cache.generation != _eo_init_generation)))   \
{\
   ___cache.op = _eo_api_op_id_get(EO_FUNC_COMMON_OP_FUNC(Name)); \
   if (___cache.op == EO_NOOP) return DefRet;\
+  ___cache.generation = _eo_init_generation;\
}\
  if (!_eo_call_resolve((Eo *) Obj, #Name, &___call, &___cache, 
 \
__FILE__, __LINE__)) return DefRet;  \

-- 




[EGIT] [core/efl] master 03/07: Interface: Flip and orientation interface

2016-04-05 Thread Yeshwanth Reddivari
jpeg pushed a commit to branch master.

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

commit 98edbd23a4cad4698187d309a4a608f481b41263
Author: Yeshwanth Reddivari 
Date:   Wed Apr 6 10:46:04 2016 +0900

Interface: Flip and orientation interface

Summary:
Added flip and orientation interface and used them in evas_image.
Removed efl_image_orientation_set API and used efl_orientation_set and 
efl_flip_set API.
In implementation part, converted enums back and forth in order to keep 
current implementation as it is.

Test Plan: src/examples/evas/evas-images5.c

Reviewers: singh.amitesh, raster, tasn, herdsman, woohyun, cedric, 
felipealmeida, jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3844
---
 src/Makefile_Efl.am  |   2 +
 src/examples/evas/.gitignore |   1 +
 src/examples/evas/Makefile.am|   6 +
 src/examples/evas/Makefile.examples  |   1 +
 src/examples/evas/evas-images5.c | 200 +++
 src/lib/efl/Efl.h|   2 +
 src/lib/efl/interfaces/efl_flip.eo   |  32 +
 src/lib/efl/interfaces/efl_gfx_types.eot |  15 --
 src/lib/efl/interfaces/efl_image.eo  |  15 --
 src/lib/efl/interfaces/efl_interfaces_main.c |   2 +
 src/lib/efl/interfaces/efl_orientation.eo|  41 ++
 src/lib/elementary/elm_image.c   |  82 ++-
 src/lib/elementary/elm_image.eo  |   8 +-
 src/lib/elementary/elm_widget_image.h|   4 +-
 src/lib/evas/canvas/evas_image.eo|   9 +-
 src/lib/evas/canvas/evas_image_legacy.c  |   9 +-
 src/lib/evas/canvas/evas_image_private.h |   3 +
 src/lib/evas/canvas/evas_object_image.c  |  77 ++-
 18 files changed, 458 insertions(+), 51 deletions(-)

diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am
index 17529a5..6f82665 100644
--- a/src/Makefile_Efl.am
+++ b/src/Makefile_Efl.am
@@ -23,6 +23,8 @@ efl_eolian_files = \
   lib/efl/interfaces/efl_gfx_filter.eo \
   lib/efl/interfaces/efl_model_base.eo \
   lib/efl/interfaces/efl_animator.eo \
+  lib/efl/interfaces/efl_orientation.eo \
+  lib/efl/interfaces/efl_flip.eo \
   lib/efl/interfaces/efl_vpath.eo \
   lib/efl/interfaces/efl_vpath_manager.eo \
   lib/efl/interfaces/efl_vpath_file.eo \
diff --git a/src/examples/evas/.gitignore b/src/examples/evas/.gitignore
index c2f0585..3d07297 100644
--- a/src/examples/evas/.gitignore
+++ b/src/examples/evas/.gitignore
@@ -6,6 +6,7 @@
 /evas_images2
 /evas_images3
 /evas_images4
+/evas_images5
 /evas_init_shutdown
 /evas_object_manipulation
 /evas_object_manipulation-eo
diff --git a/src/examples/evas/Makefile.am b/src/examples/evas/Makefile.am
index 37eff33..76a3d98 100644
--- a/src/examples/evas/Makefile.am
+++ b/src/examples/evas/Makefile.am
@@ -154,6 +154,11 @@ evas_images4_SOURCES = evas-images4.c
 evas_images4_LDADD = $(ECORE_EVAS_COMMON_LDADD)
 evas_images4_CPPFLAGS = $(ECORE_EVAS_COMMON_CPPFLAGS)
 
+EXTRA_PROGRAMS += evas_images5
+evas_images5_SOURCES = evas-images5.c
+evas_images5_LDADD = $(ECORE_EVAS_COMMON_LDADD)
+evas_images5_CPPFLAGS = $(ECORE_EVAS_COMMON_CPPFLAGS)
+
 EXTRA_PROGRAMS += evas_text
 evas_text_SOURCES = evas-text.c
 evas_text_LDADD = $(ECORE_EVAS_COMMON_LDADD)
@@ -347,6 +352,7 @@ evas-images.c \
 evas-images2.c \
 evas-images3.c \
 evas-images4.c \
+evas-images5.c \
 evas-init-shutdown.c \
 evas-map-utils.c \
 evas-map-aa.c \
diff --git a/src/examples/evas/Makefile.examples 
b/src/examples/evas/Makefile.examples
index 0d2b33a..66197f3 100644
--- a/src/examples/evas/Makefile.examples
+++ b/src/examples/evas/Makefile.examples
@@ -15,6 +15,7 @@ EXAMPLES= evas-aspect-hints \
   evas-images2 \
   evas-images3 \
   evas-images4 \
+  evas-images5 \
   evas-init-shutdown \
   evas-map-utils \
   evas-object-manipulation \
diff --git a/src/examples/evas/evas-images5.c b/src/examples/evas/evas-images5.c
new file mode 100644
index 000..3dcd88d
--- /dev/null
+++ b/src/examples/evas/evas-images5.c
@@ -0,0 +1,200 @@
+/**
+ * Simple Evas example illustrating some image objects functions
+ *
+ * You'll need at least one engine built for it (excluding the buffer
+ * one) and the png image loader/saver also built. See stdout/stderr
+ * for output.
+ *
+ * @verbatim
+ * gcc -o evas-images5 evas-images5.c `pkg-config --libs --cflags evas ecore 
ecore-evas efl`
+ * @endverbatim
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#define PACKAGE_EXAMPLES_DIR "."
+#endif
+
+#define EFL_BETA_API_SUPPORT
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "evas-common.h"
+
+#define WIDTH  (320)
+#define HEIGHT (240)
+
+static const char *img_path = PACKAGE_EXAMPLES_DIR EVAS_IMAGE_FOLDER 
"/im1.png";
+static const char 

[EGIT] [core/efl] master 04/07: Eo: Fix rare crash after call_resolve

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit 0862b9d08384bc1d862b90952130ec988f56b33b
Author: Jean-Philippe Andre 
Date:   Wed Apr 6 11:25:29 2016 +0900

Eo: Fix rare crash after call_resolve

It seems that calling a @class function with an EO object
(that was not the required Eo_Class) lead to a situation
where func->func was NULL. And that meant a crash after
call_resolve.

The proper fix is to properly call a @class function with a
class object.
---
 src/lib/eo/eo.c | 11 +++
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 434ab3e..d1dd8e8 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -347,12 +347,15 @@ _eo_call_resolve(Eo *eo_id, const char *func_name, 
Eo_Op_Call_Data *call, Eo_Cal
  if ((const void *)inputklass == cache->index[i].klass)
{
   func = (const op_type_funcs *)cache->entry[i].func;
-  call->func = func->func;
-  if (is_obj)
+  if (EINA_LIKELY(func->func && func->src))
 {
-   call->data = (char *) obj + cache->off[i].off;
+   call->func = func->func;
+   if (is_obj)
+ {
+call->data = (char *) obj + cache->off[i].off;
+ }
+   return EINA_TRUE;
 }
-  return EINA_TRUE;
}
   }
 #endif

-- 




[EGIT] [core/efl] master 02/07: elm_layout: Attach object to iterator

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit a142f0bd394877b3b62c97f30a63876777b18aa9
Author: Jean-Philippe Andre 
Date:   Mon Apr 4 21:39:29 2016 +0900

elm_layout: Attach object to iterator

This is part of a new API, not a fix

This was missing in 3c40ebb99887ba4c74c40e4509c49cc675877886
---
 src/lib/elementary/elm_layout.c | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/lib/elementary/elm_layout.c b/src/lib/elementary/elm_layout.c
index ab40c98..860269b 100644
--- a/src/lib/elementary/elm_layout.c
+++ b/src/lib/elementary/elm_layout.c
@@ -1180,7 +1180,7 @@ _sub_iterator_free(Elm_Layout_Sub_Iterator *it)
 }
 
 static Eina_Iterator *
-_sub_iterator_create(Elm_Layout_Smart_Data *sd, Eina_Bool objects)
+_sub_iterator_create(Eo *eo_obj, Elm_Layout_Smart_Data *sd, Eina_Bool objects)
 {
Elm_Layout_Sub_Iterator *it;
 
@@ -1198,20 +1198,21 @@ _sub_iterator_create(Elm_Layout_Smart_Data *sd, 
Eina_Bool objects)
  it->iterator.next = FUNC_ITERATOR_NEXT(_objects_iterator_next);
else
  it->iterator.next = FUNC_ITERATOR_NEXT(_names_iterator_next);
+   it->object = eo_obj;
 
return >iterator;
 }
 
 EOLIAN static Eina_Iterator *
-_elm_layout_elm_container_content_names_iterate(Eo *eo_obj EINA_UNUSED, 
Elm_Layout_Smart_Data *sd)
+_elm_layout_elm_container_content_names_iterate(Eo *eo_obj, 
Elm_Layout_Smart_Data *sd)
 {
-   return _sub_iterator_create(sd, EINA_FALSE);
+   return _sub_iterator_create(eo_obj, sd, EINA_FALSE);
 }
 
 EOLIAN static Eina_Iterator *
-_elm_layout_elm_container_content_objects_iterate(Eo *eo_obj EINA_UNUSED, 
Elm_Layout_Smart_Data *sd)
+_elm_layout_elm_container_content_objects_iterate(Eo *eo_obj, 
Elm_Layout_Smart_Data *sd)
 {
-   return _sub_iterator_create(sd, EINA_TRUE);
+   return _sub_iterator_create(eo_obj, sd, EINA_TRUE);
 }
 
 EOLIAN static Eina_Bool

-- 




[EGIT] [core/efl] master 01/01: elm_win: update wayland opaque region during pre-flush...always

2016-04-05 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 01156d3469e13bc74901065a3a2edcdffb2eccf5
Author: Mike Blumenkrantz 
Date:   Tue Apr 5 15:10:57 2016 -0400

elm_win: update wayland opaque region during pre-flush...always

@fix
---
 src/lib/elementary/elm_win.c | 12 +---
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/lib/elementary/elm_win.c b/src/lib/elementary/elm_win.c
index 6526909..9890401 100644
--- a/src/lib/elementary/elm_win.c
+++ b/src/lib/elementary/elm_win.c
@@ -1266,7 +1266,7 @@ _elm_win_opaque_update(Elm_Win_Data *sd)
alpha = ecore_evas_alpha_get(sd->ee);
if (alpha)
  ecore_wl2_window_opaque_region_set(sd->wl.win, 0, 0, 0, 0);
-   if (sd->fullscreen)
+   if (sd->fullscreen || (!sd->frame_obj))
  {
 ecore_evas_geometry_get(sd->ee, NULL, NULL, , );
 if (!alpha)
@@ -3101,9 +3101,6 @@ _elm_win_frame_add(Elm_Win_Data *sd,
  (sd->frame_obj, EVAS_CALLBACK_MOVE, _elm_win_frame_obj_move, sd);
evas_object_event_callback_add
  (sd->frame_obj, EVAS_CALLBACK_RESIZE, _elm_win_frame_obj_resize, sd);
-#ifdef HAVE_ELEMENTARY_WL2
-   evas_event_callback_add(sd->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE, 
_elm_win_frame_pre_render, sd);
-#endif
 
/* NB: Do NOT remove these calls !! Needed to calculate proper
 * framespace on initial show of the window */
@@ -3163,9 +3160,6 @@ _elm_win_frame_del(Elm_Win_Data *sd)
   (sd->frame_obj, EVAS_CALLBACK_MOVE, _elm_win_frame_obj_move, sd);
 evas_object_event_callback_del_full
   (sd->frame_obj, EVAS_CALLBACK_RESIZE, _elm_win_frame_obj_resize, sd);
-#ifdef HAVE_ELEMENTARY_WL2
-evas_event_callback_del_full(sd->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE, 
_elm_win_frame_pre_render, sd);
-#endif
 
 edje_object_signal_callback_del
   (sd->frame_obj, "elm,action,move,start", "elm",
@@ -3889,6 +3883,10 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, 
const char *name, Elm_Win_
 #ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(sd);
 #endif
+#ifdef HAVE_ELEMENTARY_WL2
+   if (eina_streq(engine, ELM_WAYLAND_SHM) || eina_streq(engine, 
ELM_WAYLAND_EGL))
+ evas_event_callback_add(sd->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE, 
_elm_win_frame_pre_render, sd);
+#endif
 
/* do not append to list; all windows render as black rects */
if (type != ELM_WIN_FAKE)

-- 




[EGIT] [core/enlightenment] master 04/04: redo xdg shell to enforce double buffering of client-side configure serials

2016-04-05 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit da74e690f0139aa85272314f1d688a717c52668c
Author: Mike Blumenkrantz 
Date:   Tue Apr 5 15:05:10 2016 -0400

redo xdg shell to enforce double buffering of client-side configure serials

xdg shell configure states (maximize, fullscreen) return a client ack when 
the
client has applied the state. the ack, followed by the next surface commit,
indicates that the surface is ready to be transitioned into the configured 
state
---
 src/bin/e_comp_wl.c   |  26 +
 src/bin/e_comp_wl.h   |   8 ++
 src/modules/wl_desktop_shell/e_mod_main.c | 169 +++---
 3 files changed, 168 insertions(+), 35 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 5370d2f..0617a3a 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1058,6 +1058,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, 
E_Comp_Wl_Surface_State *state)
Eina_Rectangle *dmg;
Eina_Bool placed = EINA_TRUE;
int x = 0, y = 0, w, h;
+   Eina_Rectangle saved;
 
first = !e_pixmap_usable_get(ec->pixmap);
 #ifndef HAVE_WAYLAND_ONLY
@@ -1073,6 +1074,11 @@ _e_comp_wl_surface_state_commit(E_Client *ec, 
E_Comp_Wl_Surface_State *state)
 e_client_unignore(ec);
  }
 
+   /* store to override in case of buffered fullscreen */
+   memcpy(, >client, sizeof(Eina_Rectangle));
+   saved.x -= ec->zone->x;
+   saved.y -= ec->zone->y;
+
if (state->new_attach)
  _e_comp_wl_surface_state_attach(ec, state);
 
@@ -1195,6 +1201,26 @@ _e_comp_wl_surface_state_commit(E_Client *ec, 
E_Comp_Wl_Surface_State *state)
state->sy = 0;
state->new_attach = EINA_FALSE;
 
+
+   if (ec->comp_data->shell.surface)
+ {
+if (ec->comp_data->shell.set.fullscreen)
+  {
+ e_client_fullscreen(ec, E_FULLSCREEN_RESIZE);
+ memcpy(>saved, , sizeof(Eina_Rectangle));
+  }
+if (ec->comp_data->shell.set.unfullscreen)
+   e_client_unfullscreen(ec);
+if (ec->comp_data->shell.set.maximize)
+  e_client_maximize(ec,
+   (e_config->maximize_policy & E_MAXIMIZE_TYPE) | 
E_MAXIMIZE_BOTH);
+if (ec->comp_data->shell.set.unmaximize)
+  e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
+if (ec->comp_data->shell.set.minimize)
+  e_client_iconify(ec);
+memset(>comp_data->shell.set, 0, sizeof(ec->comp_data->shell.set));
+ }
+
/* insert state frame callbacks into comp_data->frames
 * NB: This clears state->frames list */
ec->comp_data->frames = eina_list_merge(ec->comp_data->frames,
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index 84fbd48..98044e9 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -286,6 +286,14 @@ struct _E_Comp_Wl_Client_Data
 void (*unmap)(struct wl_resource *resource);
 Eina_Rectangle window;
 E_Shell_Data *data;
+struct
+{
+   Eina_Bool fullscreen : 1;
+   Eina_Bool unfullscreen : 1;
+   Eina_Bool maximize : 1;
+   Eina_Bool unmaximize : 1;
+   Eina_Bool minimize : 1;
+} set;
  } shell;
struct
{
diff --git a/src/modules/wl_desktop_shell/e_mod_main.c 
b/src/modules/wl_desktop_shell/e_mod_main.c
index d30ccca..57ca1bc 100644
--- a/src/modules/wl_desktop_shell/e_mod_main.c
+++ b/src/modules/wl_desktop_shell/e_mod_main.c
@@ -5,11 +5,26 @@
 
 #define XDG_SERVER_VERSION 5
 
+typedef enum
+{
+   STATE_MAXIMIZED = (1 << 0),
+   STATE_UNMAXIMIZED = (1 << 1),
+   STATE_FULLSCREEN = (1 << 2),
+   STATE_UNFULLSCREEN = (1 << 3),
+} State;
+
+typedef struct Pending_State
+{
+   State state;
+   uint32_t serial;
+} Pending_State;
+
 struct E_Shell_Data
 {
uint32_t edges;
int32_t width;
int32_t height;
+   Eina_List *pending;
Eina_Bool fullscreen : 1;
Eina_Bool maximized : 1;
Eina_Bool activated : 1;
@@ -115,6 +130,9 @@ _e_shell_surface_destroy(struct wl_resource *resource)
 
 if (ec->comp_data)
   {
+ E_Shell_Data *shd = ec->comp_data->shell.data;
+
+ E_FREE_LIST(shd->pending, free);
  E_FREE(ec->comp_data->shell.data);
  if (ec->comp_data->mapped)
{
@@ -603,17 +621,14 @@ _e_xdg_surface_state_add(struct wl_resource *resource, 
struct wl_array *states,
 }
 
 static void
-_e_xdg_shell_surface_configure_send(struct wl_resource *resource, uint32_t 
edges, int32_t width, int32_t height)
+_xdg_shell_surface_send_configure(struct wl_resource *resource, Eina_Bool 
fullscreen, Eina_Bool maximized, uint32_t edges, Eina_Bool focused, int32_t 
width, int32_t height)
 {
-   E_Client *ec;
-   E_Shell_Data *shd;
struct wl_array states;
uint32_t serial;
+   E_Client *ec;
+   E_Shell_Data *shd;
+   State pending = 0;
 
-   /* 

[EGIT] [core/enlightenment] master 01/04: reject client maximize attempts using identical maximize params

2016-04-05 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit f8bca98f3535d6e0898d1cbd19471c30d6cc8655
Author: Mike Blumenkrantz 
Date:   Tue Apr 5 15:00:54 2016 -0400

reject client maximize attempts using identical maximize params
---
 src/bin/e_client.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 45af12e..2ef6a2f 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -3762,6 +3762,7 @@ e_client_maximize(E_Client *ec, E_Maximize max)
E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
 
if (!ec->zone) return;
+   if (ec->maximized == max) return;
if (!(max & E_MAXIMIZE_DIRECTION)) max |= E_MAXIMIZE_BOTH;
 
if ((ec->shaded) || (ec->shading)) return;

-- 




[EGIT] [core/efl] master 03/04: ecore: add promise for Ecore_Thread

2016-04-05 Thread Felipe Magno de Almeida
cedric pushed a commit to branch master.

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

commit 887608e146b8e3952974182b2cc5a7009a711db5
Author: Felipe Magno de Almeida 
Date:   Fri Apr 1 15:37:42 2016 -0300

ecore: add promise for Ecore_Thread

Add ecore_thread_promise_run function that returns a Promise
and runs function in another thread which you can set the
value on a Eina_Promise_Owner.

Eina_Promise* promise;
Ecore_Thread* thread = ecore_thread_promise_run
( _heavy, _function, private_data,
sizeof(ValueType), );

This calls function_heavy on another thread and returns
the Ecore_Thread and a Eina_Promise as an out-parameter.

Signed-off-by: Cedric Bail 
---
 src/Makefile_Ecore.am|   1 +
 src/lib/ecore/Ecore_Common.h |  20 +
 src/lib/ecore/ecore_thread_promise.c | 137 +++
 3 files changed, 158 insertions(+)

diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am
index e5d5efc..084256e 100644
--- a/src/Makefile_Ecore.am
+++ b/src/Makefile_Ecore.am
@@ -66,6 +66,7 @@ lib/ecore/ecore_poller.c \
 lib/ecore/ecore_time.c \
 lib/ecore/ecore_timer.c \
 lib/ecore/ecore_thread.c \
+lib/ecore/ecore_thread_promise.c \
 lib/ecore/ecore_throttle.c \
 lib/ecore/ecore_exe.c \
 lib/ecore/ecore_exe_private.h \
diff --git a/src/lib/ecore/Ecore_Common.h b/src/lib/ecore/Ecore_Common.h
index fe2c5c9..711ea7a 100644
--- a/src/lib/ecore/Ecore_Common.h
+++ b/src/lib/ecore/Ecore_Common.h
@@ -3089,6 +3089,26 @@ typedef Eo Ecore_Job;/**< A job handle */
  * @}
  */
 
+
+#ifdef EFL_BETA_API_SUPPORT
+
+/*
+ * @brief Function callback type for when creating Ecore_Thread that
+ * uses Ecore_Promise for communication
+ */
+typedef void(*Ecore_Thread_Promise_Cb)(const void* data, Eina_Promise_Owner* 
promise, Ecore_Thread* thread);
+
+/*
+ * @brief Function that instantiates a Ecore_Promise and automatically
+ * executes func_blocking callback function in another thread
+ */
+EAPI Ecore_Thread* ecore_thread_promise_run(Ecore_Thread_Promise_Cb func_heavy,
+Ecore_Thread_Promise_Cb 
func_cancel,
+const void* data, size_t 
value_size,
+Eina_Promise** promise);
+
+#endif
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/ecore/ecore_thread_promise.c 
b/src/lib/ecore/ecore_thread_promise.c
new file mode 100644
index 000..dbc3ce9
--- /dev/null
+++ b/src/lib/ecore/ecore_thread_promise.c
@@ -0,0 +1,137 @@
+#ifdef HAVE_CONFIG_H
+#include 
+#endif
+
+#include 
+#include 
+
+#include 
+
+struct _Ecore_Thread_Data
+{
+   Ecore_Thread_Promise_Cb func_blocking;
+   Ecore_Thread_Promise_Cb func_cancel;
+   void const* data;
+   Ecore_Thread* thread;
+};
+typedef struct _Ecore_Thread_Data _Ecore_Thread_Data;
+
+struct _Ecore_Thread_Promise_Owner
+{
+   Eina_Promise_Owner owner_vtable;
+   Eina_Promise_Owner* eina_owner;
+   _Ecore_Thread_Data thread_callback_data;
+};
+typedef struct  _Ecore_Thread_Promise_Owner _Ecore_Thread_Promise_Owner;
+
+static void _ecore_promise_thread_end(void* data, Ecore_Thread* thread 
EINA_UNUSED)
+{
+   _Ecore_Thread_Promise_Owner* p = data;
+   if(!eina_promise_owner_pending_is(p->eina_owner))
+ {
+eina_promise_owner_default_manual_then_set(p->eina_owner, EINA_FALSE);
+eina_promise_owner_default_call_then(p->eina_owner);
+ }
+   else
+ {
+eina_promise_owner_default_manual_then_set(p->eina_owner, EINA_FALSE);
+ }
+}
+
+static void
+_ecore_promise_thread_blocking(void* data, Ecore_Thread* thread EINA_UNUSED)
+{
+   _Ecore_Thread_Promise_Owner* promise = data;
+   
(promise->thread_callback_data.func_blocking)(promise->thread_callback_data.data,
 >owner_vtable, thread);
+}
+
+static void _ecore_promise_thread_notify(void* data, Ecore_Thread* thread 
EINA_UNUSED, void* msg_data)
+{
+   _Ecore_Thread_Promise_Owner* promise = data;
+   eina_promise_owner_progress(promise->eina_owner, msg_data);
+}
+
+static void _ecore_promise_cancel(void* data, Eina_Promise_Owner* promise 
EINA_UNUSED)
+{
+   _Ecore_Thread_Promise_Owner* priv = data;
+   (priv->thread_callback_data.func_cancel)(priv->thread_callback_data.data, 
>owner_vtable,
+priv->thread_callback_data.thread);
+}
+
+static void _ecore_promise_thread_cancel(void* data, Ecore_Thread* thread 
EINA_UNUSED)
+{
+   _Ecore_Thread_Promise_Owner* owner = data;
+   Eina_Promise* promise;
+
+   promise = eina_promise_owner_promise_get(owner->eina_owner);
+   eina_promise_cancel(promise);
+}
+
+static void* _ecore_promise_owner_buffer_get(_Ecore_Thread_Promise_Owner* 
promise)
+{
+   return promise->eina_owner->buffer_get(promise->eina_owner);
+}
+static size_t _ecore_promise_owner_value_size_get(_Ecore_Thread_Promise_Owner 
const* 

[EGIT] [core/efl] master 02/04: eina: add tests for promises

2016-04-05 Thread Felipe Magno de Almeida
cedric pushed a commit to branch master.

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

commit 1d314828f7bfdcbe220e39ae8b2cc5487e002afb
Author: Felipe Magno de Almeida 
Date:   Fri Apr 1 15:30:37 2016 -0300

eina: add tests for promises
---
 src/Makefile_Eina.am   |   1 +
 src/tests/eina/eina_suite.c|   1 +
 src/tests/eina/eina_suite.h|   1 +
 src/tests/eina/eina_test_promise.c | 197 +
 4 files changed, 200 insertions(+)

diff --git a/src/Makefile_Eina.am b/src/Makefile_Eina.am
index da76e0a..fe48662 100644
--- a/src/Makefile_Eina.am
+++ b/src/Makefile_Eina.am
@@ -325,6 +325,7 @@ tests/eina/eina_test_quad.c \
 tests/eina/eina_test_matrix.c \
 tests/eina/eina_test_quaternion.c \
 tests/eina/eina_test_vector.c \
+tests/eina/eina_test_promise.c \
 tests/eina/eina_test_bezier.c
 
 tests_eina_eina_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
diff --git a/src/tests/eina/eina_suite.c b/src/tests/eina/eina_suite.c
index dc193ee..994d66d 100644
--- a/src/tests/eina/eina_suite.c
+++ b/src/tests/eina/eina_suite.c
@@ -77,6 +77,7 @@ static const Efl_Test_Case etc[] = {
{ "Matrix", eina_test_matrix },
{ "Quaternion", eina_test_quaternion },
{ "Vector", eina_test_vector },
+   { "Promise", eina_test_promise },
{ "Bezier", eina_test_bezier },
{ NULL, NULL }
 };
diff --git a/src/tests/eina/eina_suite.h b/src/tests/eina/eina_suite.h
index 7b05058..5e0a9e8 100644
--- a/src/tests/eina/eina_suite.h
+++ b/src/tests/eina/eina_suite.h
@@ -69,6 +69,7 @@ void eina_test_quad(TCase *tc);
 void eina_test_matrix(TCase *tc);
 void eina_test_quaternion(TCase *tc);
 void eina_test_vector(TCase *tc);
+void eina_test_promise(TCase *tc);
 void eina_test_bezier(TCase *tc);
 
 #endif /* EINA_SUITE_H_ */
diff --git a/src/tests/eina/eina_test_promise.c 
b/src/tests/eina/eina_test_promise.c
new file mode 100644
index 000..898a4ba
--- /dev/null
+++ b/src/tests/eina/eina_test_promise.c
@@ -0,0 +1,197 @@
+/* EINA - EFL data type library
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see .
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include 
+#include 
+#include 
+
+#ifdef HAVE_EVIL
+# include 
+#endif
+
+#include 
+
+#include "eina_suite.h"
+
+static void
+_eina_test_promise_cb(void* data, void* value EINA_UNUSED)
+{
+   *(Eina_Bool*)data = EINA_TRUE;
+}
+
+START_TEST(eina_test_promise_normal_lifetime)
+{
+   Eina_Promise_Owner* promise_owner;
+   Eina_Promise* promise;
+   Eina_Bool ran = EINA_FALSE;
+
+   eina_init();
+
+   promise_owner = eina_promise_default_add(0);
+
+   promise = eina_promise_owner_promise_get(promise_owner);
+
+   eina_promise_then(promise, &_eina_test_promise_cb, NULL, );
+   eina_promise_owner_value_set(promise_owner, NULL, NULL);
+
+   ck_assert(ran == EINA_TRUE);
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_test_promise_normal_lifetime_all)
+{
+   Eina_Promise_Owner* promise_owner;
+   Eina_Promise* first[2] = {NULL, NULL};
+   Eina_Promise* promise;
+   Eina_Bool ran = EINA_FALSE;
+
+   eina_init();
+
+   promise_owner = eina_promise_default_add(0);
+   first[0] = eina_promise_owner_promise_get(promise_owner);
+   promise = eina_promise_all(eina_carray_iterator_new((void**)[0]));
+
+   eina_promise_then(promise, &_eina_test_promise_cb, NULL, );
+   eina_promise_owner_value_set(promise_owner, NULL, NULL);
+
+   ck_assert(ran == EINA_TRUE);
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_test_promise_immediate_set_lifetime)
+{
+   Eina_Promise_Owner* owner;
+   Eina_Promise* promise;
+   Eina_Bool ran = EINA_FALSE;
+
+   eina_init();
+
+   owner = eina_promise_default_add(0);
+   promise = eina_promise_owner_promise_get(owner);
+
+   eina_promise_owner_value_set(owner, NULL, NULL);
+   eina_promise_then(promise, &_eina_test_promise_cb, NULL, );
+
+   ck_assert(ran == EINA_TRUE);
+
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(eina_test_promise_immediate_set_lifetime_all)
+{
+   Eina_Promise_Owner* owner;
+   Eina_Promise* first[2] = {NULL, NULL};
+   Eina_Promise* promise;
+   Eina_Bool ran = EINA_FALSE;
+
+   eina_init();
+
+   owner = eina_promise_default_add(0);
+   first[0] = eina_promise_owner_promise_get(owner);
+   promise = 

[EGIT] [core/efl] master 04/04: ecore: add tests for promises with ecore_thread_promise_run

2016-04-05 Thread Felipe Magno de Almeida
cedric pushed a commit to branch master.

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

commit f534fb8943de67a259234a066a7555e9dd131dc6
Author: Felipe Magno de Almeida 
Date:   Fri Apr 1 22:24:19 2016 -0300

ecore: add tests for promises with ecore_thread_promise_run

Signed-off-by: Cedric Bail 
---
 src/Makefile_Ecore.am|   1 +
 src/tests/ecore/ecore_suite.c|   1 +
 src/tests/ecore/ecore_suite.h|   1 +
 src/tests/ecore/ecore_test_promise.c | 403 +++
 4 files changed, 406 insertions(+)

diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am
index 084256e..6fad329 100644
--- a/src/Makefile_Ecore.am
+++ b/src/Makefile_Ecore.am
@@ -196,6 +196,7 @@ tests/ecore/ecore_test_animator.c \
 tests/ecore/ecore_test_ecore_thread_eina_thread_queue.c \
 tests/ecore/ecore_test_ecore_input.c \
 tests/ecore/ecore_test_ecore_file.c \
+tests/ecore/ecore_test_promise.c \
 tests/ecore/ecore_suite.h
 
 tests_ecore_ecore_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
diff --git a/src/tests/ecore/ecore_suite.c b/src/tests/ecore/ecore_suite.c
index 787a455..04ad191 100644
--- a/src/tests/ecore/ecore_suite.c
+++ b/src/tests/ecore/ecore_suite.c
@@ -26,6 +26,7 @@ static const Efl_Test_Case etc[] = {
 #endif
   { "Ecore_Input", ecore_test_ecore_input },
   { "Ecore_File", ecore_test_ecore_file },
+  { "Ecore_Promise", ecore_test_ecore_promise },
   { NULL, NULL }
 };
 
diff --git a/src/tests/ecore/ecore_suite.h b/src/tests/ecore/ecore_suite.h
index f0e4c2a..558e610 100644
--- a/src/tests/ecore/ecore_suite.h
+++ b/src/tests/ecore/ecore_suite.h
@@ -15,5 +15,6 @@ void ecore_test_ecore_drm(TCase *tc);
 void ecore_test_ecore_fb(TCase *tc);
 void ecore_test_ecore_input(TCase *tc);
 void ecore_test_ecore_file(TCase *tc);
+void ecore_test_ecore_promise(TCase *tc);
 
 #endif /* _ECORE_SUITE_H */
diff --git a/src/tests/ecore/ecore_test_promise.c 
b/src/tests/ecore/ecore_test_promise.c
new file mode 100644
index 000..7db219c
--- /dev/null
+++ b/src/tests/ecore/ecore_test_promise.c
@@ -0,0 +1,403 @@
+#ifdef HAVE_CONFIG_H
+# include 
+#endif
+
+#include 
+#include "ecore_suite.h"
+#include 
+
+void promised_thread(const void* data EINA_UNUSED, Eina_Promise_Owner* 
promise, Ecore_Thread* thread EINA_UNUSED)
+{
+  eina_promise_owner_value_set(promise, NULL, NULL);
+}
+
+void promise_callback(void* data EINA_UNUSED, void* value EINA_UNUSED)
+{
+  ecore_main_loop_quit();
+}
+
+START_TEST(ecore_test_promise)
+{
+   Eina_Promise* promise;
+
+   ecore_init();
+
+   ecore_thread_promise_run(_thread, NULL, NULL, 0, );
+   eina_promise_then(promise, _callback, NULL, NULL);
+
+   ecore_main_loop_begin();
+
+   ecore_shutdown();
+}
+END_TEST
+
+void promise_error_thread(const void* data EINA_UNUSED, Eina_Promise_Owner* 
promise, Ecore_Thread* thread EINA_UNUSED)
+{
+  eina_promise_owner_error_set(promise, EINA_ERROR_OUT_OF_MEMORY);
+}
+
+void promise_error_callback(void* data EINA_UNUSED, Eina_Error const* error)
+{
+  ck_assert(*error == EINA_ERROR_OUT_OF_MEMORY);
+  ecore_main_loop_quit();
+}
+
+START_TEST(ecore_test_promise_error)
+{
+   Eina_Promise* promise;
+
+   ecore_init();
+
+   ecore_thread_promise_run(_error_thread, NULL, NULL, 0, );
+   eina_promise_then(promise, NULL, _error_callback, NULL);
+
+   ecore_main_loop_begin();
+
+   ecore_shutdown();
+}
+END_TEST
+
+START_TEST(ecore_test_promise_all)
+{
+   Eina_Promise* promise;
+   Eina_Promise* first[2] = { NULL, NULL };
+
+   ecore_init();
+
+   ecore_thread_promise_run(_thread, NULL, NULL, 0, [0]);
+   promise = eina_promise_all(eina_carray_iterator_new((void**)[0]));
+   eina_promise_then(promise, _callback, NULL, NULL);
+
+   ecore_main_loop_begin();
+
+   ecore_shutdown();
+}
+END_TEST
+
+void promise_callback2(void* data, void* value EINA_UNUSED)
+{
+  if(++(*(int*)data) == 2)
+ecore_main_loop_quit();
+}
+
+START_TEST(ecore_test_promise_all_then_then)
+{
+   Eina_Promise* promise;
+   Eina_Promise* first[2] = { NULL, NULL };
+
+   ecore_init();
+
+   int i = 0;
+
+   ecore_thread_promise_run(_thread, NULL, NULL, 0, [0]);
+   eina_promise_then(first[0], _callback2, NULL, );
+   promise = eina_promise_all(eina_carray_iterator_new((void**)[0]));
+   eina_promise_then(promise, _callback2, NULL, );
+
+   ecore_main_loop_begin();
+
+   ecore_shutdown();
+}
+END_TEST
+
+struct sync_data
+{
+  Eina_Lock lock;
+  Eina_Condition cond;
+  Eina_Bool var;
+};
+
+void promised_exit_thread(struct sync_data* data EINA_UNUSED, 
Eina_Promise_Owner* promise, Ecore_Thread* thread EINA_UNUSED)
+{
+  eina_promise_owner_value_set(promise, NULL, NULL);
+  eina_lock_take(>lock);
+  data->var = EINA_TRUE;
+  eina_condition_broadcast(>cond);
+  eina_lock_release(>lock);
+}
+
+static void _ecore_test_promise_then_after_thread_finished_main_cb()
+{
+   Eina_Promise* promise;
+   Ecore_Thread* thread;
+   struct sync_data data;

[EGIT] [core/efl] master 01/04: eina: add promise

2016-04-05 Thread Felipe Magno de Almeida
cedric pushed a commit to branch master.

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

commit 09eea7bc01dd1381589eeab35e705cbd45820f1e
Author: Felipe Magno de Almeida 
Date:   Fri Apr 1 14:49:58 2016 -0300

eina: add promise

Add a promise object that will allows Eolian interface to include promises
as a way to have asynchronous value return and composibility.

To understand better, let see the coming usage in a .eo file:

class Foo {
   methods {
  bar {
 params {
@inout promise: Promise;
 }
  }
   }
}

Which will create the following API interface:

void foo_bar(Eo* obj, Eina_Promise** promise);

and the equivalent declaration for implementation.

However, the API function will instantiate the Promise for the user
and the implementer of the class automatically. So the user of this
function will treat it as a @out parameter, while the developer of the
function will treat it like a @inout parameter.

So, the user will use this function like this:

Eina_Promise* promise; // No need to instantiate
foo_bar(obj, );
eina_promise_then(promise, callback);

Signed-off-by: Cedric Bail 
---
 src/Makefile_Eina.am|   2 +
 src/lib/eina/Eina.h |   1 +
 src/lib/eina/eina_promise.c | 640 
 src/lib/eina/eina_promise.h | 441 ++
 4 files changed, 1084 insertions(+)

diff --git a/src/Makefile_Eina.am b/src/Makefile_Eina.am
index 71d0330..da76e0a 100644
--- a/src/Makefile_Eina.am
+++ b/src/Makefile_Eina.am
@@ -96,6 +96,7 @@ lib/eina/eina_util.h \
 lib/eina/eina_quaternion.h \
 lib/eina/eina_vector.h \
 lib/eina/eina_inline_vector.x \
+lib/eina/eina_promise.h \
 lib/eina/eina_bezier.h
 
 lib_eina_libeina_la_SOURCES = \
@@ -166,6 +167,7 @@ lib/eina/eina_private.h \
 lib/eina/eina_share_common.h \
 lib/eina/eina_strbuf_common.h \
 lib/eina/eina_quaternion.c \
+lib/eina/eina_promise.c \
 lib/eina/eina_bezier.c
 
 if HAVE_WIN32
diff --git a/src/lib/eina/Eina.h b/src/lib/eina/Eina.h
index db9260e..fe0a4ec 100644
--- a/src/lib/eina/Eina.h
+++ b/src/lib/eina/Eina.h
@@ -268,6 +268,7 @@ extern "C" {
 #include 
 #include 
 #include 
+#include 
 #include 
 
 #undef EAPI
diff --git a/src/lib/eina/eina_promise.c b/src/lib/eina/eina_promise.c
new file mode 100644
index 000..9a7c259
--- /dev/null
+++ b/src/lib/eina/eina_promise.c
@@ -0,0 +1,640 @@
+#ifdef HAVE_CONFIG_H
+#include 
+#endif
+
+#include 
+
+#include 
+
+typedef struct _Eina_Promise_Then_Cb _Eina_Promise_Then_Cb;
+typedef struct _Eina_Promise_Progress_Cb _Eina_Promise_Progress_Cb;
+typedef struct _Eina_Promise_Cancel_Cb _Eina_Promise_Cancel_Cb;
+typedef struct _Eina_Promise_Default _Eina_Promise_Default;
+typedef struct _Eina_Promise_Default_Owner _Eina_Promise_Default_Owner;
+typedef struct _Eina_Promise_Iterator _Eina_Promise_Iterator;
+typedef struct _Eina_Promise_Success_Iterator _Eina_Promise_Success_Iterator;
+
+struct _Eina_Promise_Then_Cb
+{
+   EINA_INLIST;
+
+   Eina_Promise_Cb callback;
+   Eina_Promise_Error_Cb error_cb;
+   void* data;
+};
+
+struct _Eina_Promise_Progress_Cb
+{
+   EINA_INLIST;
+
+   Eina_Promise_Progress_Cb callback;
+   void* data;
+};
+
+struct _Eina_Promise_Cancel_Cb
+{
+   EINA_INLIST;
+
+   Eina_Promise_Default_Cancel_Cb callback;
+   Eina_Promise_Free_Cb free;
+   void* data;
+};
+
+struct _Eina_Promise_Default
+{
+   Eina_Promise vtable;
+   Eina_Error error;
+   size_t value_size;
+
+   Eina_Inlist *then_callbacks;
+   Eina_Inlist *progress_callbacks;
+   Eina_Inlist *cancel_callbacks;
+   Eina_Promise_Free_Cb value_free_cb;
+
+   int ref;
+
+   Eina_Bool has_finished : 1;
+   Eina_Bool has_errored : 1;
+   Eina_Bool is_cancelled : 1;
+   Eina_Bool is_manual_then : 1;
+   Eina_Bool is_first_then : 1;
+};
+
+struct _Eina_Promise_Default_Owner
+{
+   Eina_Promise_Owner owner_vtable;
+   _Eina_Promise_Default promise;
+
+   char value[];
+};
+
+#define EINA_PROMISE_GET_OWNER(p) (_Eina_Promise_Default_Owner*)((unsigned 
char*)p - offsetof(struct _Eina_Promise_Default_Owner, promise))
+
+struct _Eina_Promise_Iterator
+{
+   Eina_Iterator* success_iterator;
+   struct _Eina_Promise_Success_Iterator
+   {
+  Eina_Iterator success_iterator_impl;
+  unsigned int promise_index;
+  unsigned int num_promises;
+  unsigned int promises_finished;
+  Eina_Promise* promises[];
+   } data;
+};
+
+static void _eina_promise_finish(_Eina_Promise_Default_Owner* promise);
+static void _eina_promise_ref(_Eina_Promise_Default* promise);
+static void _eina_promise_unref(_Eina_Promise_Default* promise);
+
+static void _eina_promise_iterator_setup(_Eina_Promise_Iterator* iterator, 
Eina_Array* promises);
+
+static void
+_eina_promise_then_calls(_Eina_Promise_Default_Owner* 

[EGIT] [core/efl] master 07/15: ecore-xcb: Add implementation for missing API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit 4d048e5725e40e9f379a70cfbcd7435559bf7539
Author: Chris Michael 
Date:   Tue Apr 5 09:23:22 2016 -0400

ecore-xcb: Add implementation for missing API function

This patch adds an xcb implementation for missing function
ecore_x_randr_edid_dpms_available_get

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 22 --
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index 2081e31..58f1b88 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -2,8 +2,6 @@
  *
  * ecore_x_randr_edid_display_ascii_get
  * ecore_x_randr_edid_display_serial_get
- * ecore_x_randr_edid_manufacturer_serial_number_get
- * ecore_x_randr_edid_dpms_available_get
  * ecore_x_randr_edid_dpms_standby_available_get
  * ecore_x_randr_edid_dpms_suspend_available_get
  * ecore_x_randr_edid_dpms_off_available_get
@@ -3085,6 +3083,26 @@ 
ecore_x_randr_edid_manufacturer_serial_number_get(unsigned char *edid, unsigned
return ECORE_X_RANDR_EDID_UNKNOWN_VALUE;
 }
 
+EAPI Eina_Bool 
+ecore_x_randr_edid_dpms_available_get(unsigned char *edid, unsigned long 
edid_length)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   CHECK_XCB_CONN;
+
+#ifdef ECORE_XCB_RANDR
+   int version = 0;
+
+   version = ecore_x_randr_edid_version_get(edid, edid_length);
+   if (version < RANDR_EDID_VERSION_13) return EINA_FALSE;
+
+   return !!(edid[0x18] & 0xE0);
+#else
+   return EINA_FALSE;
+#endif
+}
+
+
+
 /* local functions */
 static Eina_Bool
 _ecore_xcb_randr_output_validate(Ecore_X_Window   root,

-- 




[EGIT] [core/efl] master 01/15: ecore-xcb: Add missing ecore_x_randr_output_crtc_set API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit b89d2190930cdf0b7d4585c0ee8a56fcccf2a3da
Author: Chris Michael 
Date:   Tue Apr 5 08:59:24 2016 -0400

ecore-xcb: Add missing ecore_x_randr_output_crtc_set API function

This patch adds definition of missing API function
ecore_x_randr_output_crtc_set.

NB: This function also has no code in the xlib implementation

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index 6bc7de9..1967b9c 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -1,7 +1,5 @@
 /* TODO: List of missing functions
  *
- * ecore_x_randr_crtc_clone_set
- * ecore_x_randr_output_crtc_set
  * ecore_x_randr_edid_version_get
  * ecore_x_randr_edid_info_has_valid_checksum
  * ecore_x_randr_edid_manufacturer_name_get
@@ -1188,6 +1186,13 @@ ecore_x_randr_output_crtc_get(Ecore_X_Window   root,
return Ecore_X_Randr_None;
 }
 
+EAPI Eina_Bool
+ecore_x_randr_output_crtc_set(Ecore_X_Window root EINA_UNUSED, 
Ecore_X_Randr_Output output EINA_UNUSED, const Ecore_X_Randr_Crtc crtc 
EINA_UNUSED)
+{
+   /* TODO */
+   return EINA_FALSE;
+}
+
 EAPI void 
 ecore_x_randr_output_size_mm_get(Ecore_X_Window root, Ecore_X_Randr_Output 
output, int *w_mm, int *h_mm)
 {

-- 




[EGIT] [core/efl] master 05/15: ecore-xcb: Add implementation for missing Ecore_X API

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit 66b8698be284a8ccabeab7ecd2c80a617a641c1a
Author: Chris Michael 
Date:   Tue Apr 5 09:18:10 2016 -0400

ecore-xcb: Add implementation for missing Ecore_X API

This patch adds an xcb implementation for ecore_x_randr_edid_model_get
function which was missing from ecore-xcb.

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index c03bfec..acc21f8 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -3066,6 +3066,12 @@ ecore_x_randr_edid_manufacturer_model_get(unsigned char 
*edid, unsigned long edi
return ECORE_X_RANDR_EDID_UKNOWN_VALUE;
 }
 
+EAPI int
+ecore_x_randr_edid_model_get(unsigned char *edid, unsigned long edid_length)
+{
+   return ecore_x_randr_edid_manufacturer_model_get(edid, edid_length);
+}
+
 /* local functions */
 static Eina_Bool
 _ecore_xcb_randr_output_validate(Ecore_X_Window   root,

-- 




[EGIT] [core/efl] master 14/15: ecore-xcb: Add implementation for missing API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit ca8e13712fdbe16c575558af86197a25249a19c1
Author: Chris Michael 
Date:   Tue Apr 5 10:14:19 2016 -0400

ecore-xcb: Add implementation for missing API function

This patch adds an xcb implementation for missing
ecore_x_randr_edid_display_interface_type_get function

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 21 +
 1 file changed, 21 insertions(+)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index 911c183..ce14933 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -3046,6 +3046,27 @@ ecore_x_randr_edid_display_serial_get(unsigned char 
*edid, unsigned long edid_le
return NULL;
 }
 
+EAPI Ecore_X_Randr_Edid_Display_Interface_Type
+ecore_x_randr_edid_display_interface_type_get(unsigned char *edid, unsigned 
long edid_length)
+{
+#ifdef ECORE_XCB_RANDR
+   Ecore_X_Randr_Edid_Display_Interface_Type type;
+   int version = 0;
+
+   type = ECORE_X_RANDR_EDID_UNKNOWN_VALUE;
+
+   version = ecore_x_randr_edid_version_get(edid, edid_length);
+   if (version < ECORE_X_RANDR_EDID_VERSION_13) return type;
+
+   type = (edid[0x14] & 0x0f);
+   if (type > ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_DISPLAY_PORT)
+ type = ECORE_X_RANDR_EDID_UNKNOWN_VALUE;
+
+   return type;
+#endif
+   return 0;
+}
+
 EAPI Eina_Bool
 ecore_x_randr_edid_has_valid_header(unsigned char *edid, unsigned long 
edid_length)
 {

-- 




[EGIT] [core/efl] master 09/15: ecore-xcb: Add implementation for missing API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit 48bfcd106f7c355e8e921b66b286562009dad858
Author: Chris Michael 
Date:   Tue Apr 5 09:39:33 2016 -0400

ecore-xcb: Add implementation for missing API function

This patch adds an xcb implementation for missing
ecore_x_randr_edid_display_ascii_get function

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 32 
 1 file changed, 32 insertions(+)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index ad50dda..e724500 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -2970,6 +2970,38 @@ ecore_x_randr_edid_display_name_get(unsigned char *edid, 
unsigned long edid_leng
return NULL;
 }
 
+EAPI char *
+ecore_x_randr_edid_display_ascii_get(unsigned char *edid, unsigned long 
edid_length) 
+{
+#ifdef ECORE_XCB_RANDR
+   unsigned char *block = NULL;
+   int version = 0;
+
+   version = ecore_x_randr_edid_version_get(edid, edid_length);
+   if (version < ECORE_X_RANDR_EDID_VERSION_13) return NULL;
+
+   _ECORE_X_RANDR_EDID_FOR_EACH_NON_PIXEL_DESCRIPTOR_BLOCK(edid, block)
+ {
+if (block[_ECORE_X_RANDR_EDID_OFFSET_DESCRIPTOR_BLOCK_TYPE] == 0xfe)
+  {
+ char *ascii = NULL, *p = NULL;
+ const char *edid_ascii;
+
+ edid_ascii = (const char *)block + 5;
+
+ if (!(ascii = malloc(14))) return NULL;
+ strncpy(ascii, edid_ascii, 13);
+ ascii[13] = 0;
+ for (p = ascii; *p; p++)
+   if ((*p < ' ') || (*p > '~')) *p = 0;
+
+ return ascii;
+  }
+ }
+#endif
+   return NULL;
+}
+
 EAPI Eina_Bool
 ecore_x_randr_edid_has_valid_header(unsigned char *edid, unsigned long 
edid_length)
 {

-- 




[EGIT] [core/efl] master 02/15: ecore-xcb: Add missing API function ecore_x_randr_edid_info_has_valid_checksum

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit debc4da8378a7e476132e153d944352e91d7ea3b
Author: Chris Michael 
Date:   Tue Apr 5 09:06:06 2016 -0400

ecore-xcb: Add missing API function 
ecore_x_randr_edid_info_has_valid_checksum

This patch adds an implementation for
ecore_x_randr_edid_info_has_valid_checksum which was missing in the
ecore-xcb codebase.

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 38 ++-
 1 file changed, 37 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index 1967b9c..499cd9f 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -1,6 +1,5 @@
 /* TODO: List of missing functions
  *
- * ecore_x_randr_edid_version_get
  * ecore_x_randr_edid_info_has_valid_checksum
  * ecore_x_randr_edid_manufacturer_name_get
  * ecore_x_randr_edid_display_ascii_get
@@ -2989,6 +2988,43 @@ ecore_x_randr_edid_has_valid_header(unsigned char *edid, 
unsigned long edid_leng
return EINA_FALSE;
 }
 
+EAPI Eina_Bool
+ecore_x_randr_edid_info_has_valid_checksum(unsigned char *edid, unsigned long 
edid_length)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   CHECK_XCB_CONN;
+
+#ifdef ECORE_XCB_RANDR
+   unsigned char *iter = NULL;
+   char sum = 0;
+   int i = 0, version = 0;
+
+   if (edid_length < 128) return EINA_FALSE;
+
+   version = ecore_x_randr_edid_version_get(edid, edid_length);
+   if (version < RANDR_EDID_VERSION_13) return EINA_FALSE;
+
+   for (i = 0; i < 128; i++)
+ sum += edid[i];
+
+   if (sum) return EINA_FALSE;
+
+   for (iter = edid; iter < (edid + edid_length); iter += 128)
+ {
+if (iter[0] == 0x02)
+  {
+ for (i = 0, sum = 0; i < 128; i++)
+   sum += iter[i];
+  }
+ }
+
+   if (sum) return EINA_FALSE;
+   return EINA_TRUE;
+#else
+   return EINA_FALSE;
+#endif
+}
+
 /* local functions */
 static Eina_Bool
 _ecore_xcb_randr_output_validate(Ecore_X_Window   root,

-- 




[EGIT] [core/efl] master 13/15: ecore-xcb: Add implementation for missing API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit ef15639e3313ef0ff66e057eedaa9957f276e27d
Author: Chris Michael 
Date:   Tue Apr 5 09:58:11 2016 -0400

ecore-xcb: Add implementation for missing API function

This patch adds an xcb implementation for missing function
ecore_x_randr_screen_backlight_level_set

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 19 ++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index 766c55e..911c183 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -5,7 +5,6 @@
  * ecore_x_randr_edid_display_colorscheme_get
  * ecore_x_randr_edid_display_type_digital_get
  * ecore_x_randr_edid_display_interface_type_get
- * ecore_x_randr_screen_backlight_level_set
  * ecore_x_randr_output_subpixel_order_get
  * ecore_x_randr_output_wired_clones_get
  * ecore_x_randr_output_compatibility_list_get
@@ -2516,6 +2515,24 @@ ecore_x_randr_screen_size_range_get(Ecore_X_Window root,
 #endif
 }
 
+EAPI void
+ecore_x_randr_screen_backlight_level_set(Ecore_X_Window root, double level)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   CHECK_XCB_CONN;
+
+#ifdef ECORE_XCB_RANDR
+   Ecore_X_Randr_Output *outputs;
+   int i = 0, ret = 0;
+
+   RANDR_CHECK_1_3_RET();
+
+   outputs = _ecore_xcb_randr_13_outputs_get(root, );
+   for (i = 0; i < ret; i++)
+ ecore_x_randr_output_backlight_level_set(root, outputs[i], level);
+#endif
+}
+
 /*
  * @param w width of screen in px
  * @param h height of screen in px

-- 




[EGIT] [core/efl] master 04/15: ecore-xcb: Add implementation for missing API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit 6ce9ab87e8a014f511ecbf3b34f4e481473a43c8
Author: Chris Michael 
Date:   Tue Apr 5 09:16:49 2016 -0400

ecore-xcb: Add implementation for missing API function

This patch adds an xcb implementation for
ecore_x_randr_edid_manufacturer_model_get function

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 14 ++
 1 file changed, 14 insertions(+)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index 0532cd2..c03bfec 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -3052,6 +3052,20 @@ ecore_x_randr_edid_manufacturer_name_get(unsigned char 
*edid, unsigned long edid
return NULL;
 }
 
+EAPI int
+ecore_x_randr_edid_manufacturer_model_get(unsigned char *edid, unsigned long 
edid_length)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   CHECK_XCB_CONN;
+
+#ifdef ECORE_XCB_RANDR
+   if ((edid_length > _ECORE_X_RANDR_EDID_MANUFACTURER + 1) &&
+   (ecore_x_randr_edid_has_valid_header(edid, edid_length)))
+ return (int)(edid[0x0a] + (edid[0x0b] << 8));
+#endif
+   return ECORE_X_RANDR_EDID_UKNOWN_VALUE;
+}
+
 /* local functions */
 static Eina_Bool
 _ecore_xcb_randr_output_validate(Ecore_X_Window   root,

-- 




[EGIT] [core/efl] master 08/15: ecore-xcb: Add implementation for missing API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit 25b0dced344133548d3e1a62766358eb9659d20f
Author: Chris Michael 
Date:   Tue Apr 5 09:24:42 2016 -0400

ecore-xcb: Add implementation for missing API function

This patch adds an xcb implementation for missing API function
ecore_x_randr_edid_dpms_standby_available_get

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 21 ++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index 58f1b88..ad50dda 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -2997,7 +2997,7 @@ ecore_x_randr_edid_info_has_valid_checksum(unsigned char 
*edid, unsigned long ed
if (edid_length < 128) return EINA_FALSE;
 
version = ecore_x_randr_edid_version_get(edid, edid_length);
-   if (version < RANDR_EDID_VERSION_13) return EINA_FALSE;
+   if (version < ECORE_X_RANDR_EDID_VERSION_13) return EINA_FALSE;
 
for (i = 0; i < 128; i++)
  sum += edid[i];
@@ -3059,7 +3059,7 @@ ecore_x_randr_edid_manufacturer_model_get(unsigned char 
*edid, unsigned long edi
(ecore_x_randr_edid_has_valid_header(edid, edid_length)))
  return (int)(edid[0x0a] + (edid[0x0b] << 8));
 #endif
-   return ECORE_X_RANDR_EDID_UKNOWN_VALUE;
+   return ECORE_X_RANDR_EDID_UNKNOWN_VALUE;
 }
 
 EAPI int
@@ -3093,7 +3093,7 @@ ecore_x_randr_edid_dpms_available_get(unsigned char 
*edid, unsigned long edid_le
int version = 0;
 
version = ecore_x_randr_edid_version_get(edid, edid_length);
-   if (version < RANDR_EDID_VERSION_13) return EINA_FALSE;
+   if (version < ECORE_X_RANDR_EDID_VERSION_13) return EINA_FALSE;
 
return !!(edid[0x18] & 0xE0);
 #else
@@ -3101,7 +3101,22 @@ ecore_x_randr_edid_dpms_available_get(unsigned char 
*edid, unsigned long edid_le
 #endif
 }
 
+EAPI Eina_Bool 
+ecore_x_randr_edid_dpms_standby_available_get(unsigned char *edid, unsigned 
long edid_length)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   CHECK_XCB_CONN;
 
+#ifdef ECORE_XCB_RANDR
+   int version = 0;
+
+   version = ecore_x_randr_edid_version_get(edid, edid_length);
+   if (version < ECORE_X_RANDR_EDID_VERSION_13) return EINA_FALSE;
+
+   if (edid[0x18] & 0xE0) return !!(edid[0x18] & 0x80);
+#endif
+   return EINA_FALSE;
+}
 
 /* local functions */
 static Eina_Bool

-- 




[EGIT] [core/efl] master 15/15: ecore-xcb: Add implementation for missing API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit aba46af602c8b45815974ed25303874e9a368c86
Author: Chris Michael 
Date:   Tue Apr 5 11:43:14 2016 -0400

ecore-xcb: Add implementation for missing API function

This patch adds an xcb implementation for missing
ecore_x_randr_crtc_panning_area_set function

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 54 +++
 1 file changed, 54 insertions(+)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index ce14933..2b44fc3 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -32,10 +32,12 @@
 #define RANDR_1_1   ((1 << 16) | 1)
 #define RANDR_1_2   ((1 << 16) | 2)
 #define RANDR_1_3   ((1 << 16) | 3)
+#define RANDR_1_4   ((1 << 16) | 4)
 
 #define RANDR_CHECK_1_1_RET(ret) if (_randr_version < RANDR_1_1) return ret
 #define RANDR_CHECK_1_2_RET(ret) if (_randr_version < RANDR_1_2) return ret
 #define RANDR_CHECK_1_3_RET(ret) if (_randr_version < RANDR_1_3) return ret
+#define RANDR_CHECK_1_4_RET(ret) if (_randr_version < RANDR_1_4) return ret
 
 #define ECORE_X_RANDR_EDID_VERSION_13 ((1 << 8) | 3)
 #define _ECORE_X_RANDR_EDID_OFFSET_VERSION_MAJOR 0x12
@@ -2005,6 +2007,58 @@ ecore_x_randr_crtc_pos_set(Ecore_X_Window root,
return ret;
 }
 
+EAPI Eina_Bool
+ecore_x_randr_crtc_panning_area_set(Ecore_X_Window root EINA_UNUSED, 
Ecore_X_Randr_Crtc crtc, const int x, const int y, const int w, const int h)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   CHECK_XCB_CONN;
+
+#ifdef ECORE_XCB_RANDR
+   RANDR_CHECK_1_4_RET(EINA_FALSE);
+
+   Eina_Bool ret = EINA_FALSE;
+   xcb_randr_get_panning_cookie_t get_cookie;
+   xcb_randr_get_panning_reply_t *get_reply;
+
+   get_cookie = xcb_randr_get_panning_unchecked(_ecore_xcb_conn, crtc);
+   get_reply = xcb_randr_get_panning_reply(_ecore_xcb_conn, get_cookie, NULL);
+   if (get_reply)
+ {
+xcb_randr_set_panning_cookie_t set_cookie;
+xcb_randr_set_panning_reply_t *set_reply;
+
+set_cookie =
+  xcb_randr_set_panning_unchecked(_ecore_xcb_conn, crtc,
+  XCB_CURRENT_TIME,
+  x, y, w, h,
+  get_reply->track_left,
+  get_reply->track_top,
+  get_reply->track_width,
+  get_reply->track_height,
+  get_reply->border_left,
+  get_reply->border_top,
+  get_reply->border_right,
+  get_reply->border_bottom);
+set_reply =
+  xcb_randr_set_panning_reply(_ecore_xcb_conn, set_cookie, NULL);
+if (!set_reply)
+  ret = EINA_FALSE;
+else
+  {
+ if (set_reply->status == XCB_RANDR_SET_CONFIG_SUCCESS)
+   ret = EINA_TRUE;
+
+ free(set_reply);
+  }
+
+free(get_reply);
+ }
+
+   return ret;
+#endif
+   return EINA_FALSE;
+}
+
 EAPI void
 ecore_x_randr_crtc_size_get(Ecore_X_Window root,
 Ecore_X_Randr_Crtc crtc,

-- 




[EGIT] [core/efl] master 10/15: ecore-xcb: Add implementation for missing API function

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit 760fb0326cece1a3bc024a0c5db7c54119316bb5
Author: Chris Michael 
Date:   Tue Apr 5 09:41:40 2016 -0400

ecore-xcb: Add implementation for missing API function

This patch adds an xcb implementation for missing
ecore_x_randr_edid_display_serial_get function

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/xcb/ecore_xcb_randr.c | 35 ---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c 
b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
index e724500..8cef0ee 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_randr.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
@@ -1,8 +1,5 @@
 /* TODO: List of missing functions
  *
- * ecore_x_randr_edid_display_ascii_get
- * ecore_x_randr_edid_display_serial_get
- * ecore_x_randr_edid_dpms_standby_available_get
  * ecore_x_randr_edid_dpms_suspend_available_get
  * ecore_x_randr_edid_dpms_off_available_get
  * ecore_x_randr_edid_display_aspect_ratio_preferred_get
@@ -3002,6 +2999,38 @@ ecore_x_randr_edid_display_ascii_get(unsigned char 
*edid, unsigned long edid_len
return NULL;
 }
 
+EAPI char *
+ecore_x_randr_edid_display_serial_get(unsigned char *edid, unsigned long 
edid_length) 
+{
+#ifdef ECORE_XCB_RANDR
+   unsigned char *block = NULL;
+   int version = 0;
+
+   version = ecore_x_randr_edid_version_get(edid, edid_length);
+   if (version < ECORE_X_RANDR_EDID_VERSION_13) return NULL;
+
+   _ECORE_X_RANDR_EDID_FOR_EACH_NON_PIXEL_DESCRIPTOR_BLOCK(edid, block)
+ {
+if (block[_ECORE_X_RANDR_EDID_OFFSET_DESCRIPTOR_BLOCK_TYPE] == 0xff)
+  {
+ char *serial = NULL, *p = NULL;
+ const char *edid_serial;
+
+ edid_serial = (const char *)block + 5;
+
+ if (!(serial = malloc(14))) return NULL;
+ strncpy(serial, edid_serial, 13);
+ serial[13] = 0;
+ for (p = serial; *p; p++)
+   if ((*p < ' ') || (*p > '~')) *p = 0;
+
+ return serial;
+  }
+ }
+#endif
+   return NULL;
+}
+
 EAPI Eina_Bool
 ecore_x_randr_edid_has_valid_header(unsigned char *edid, unsigned long 
edid_length)
 {

-- 




[EGIT] [legacy/imlib2] master 01/01: gif: fix oob reads w/bad colormaps

2016-04-05 Thread Bernhard Übelacker
vapier pushed a commit to branch master.

http://git.enlightenment.org/legacy/imlib2.git/commit/?id=16de244bd03d2f75da6508feb1ad9cb4e668e9dc

commit 16de244bd03d2f75da6508feb1ad9cb4e668e9dc
Author: Bernhard Übelacker 
Date:   Sat Apr 2 13:05:21 2016 -0400

gif: fix oob reads w/bad colormaps

Verify the color map is inbounds before indexing with it.

https://bugs.debian.org/785369
---
 src/modules/loaders/loader_gif.c | 13 ++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/modules/loaders/loader_gif.c b/src/modules/loaders/loader_gif.c
index 638df59..7bdf29c 100644
--- a/src/modules/loaders/loader_gif.c
+++ b/src/modules/loaders/loader_gif.c
@@ -170,9 +170,16 @@ load(ImlibImage * im, ImlibProgressFunction progress, char 
progress_granularity,
 }
   else
 {
-   r = cmap->Colors[rows[i][j]].Red;
-   g = cmap->Colors[rows[i][j]].Green;
-   b = cmap->Colors[rows[i][j]].Blue;
+   if (rows[i][j] < cmap->ColorCount)
+ {
+r = cmap->Colors[rows[i][j]].Red;
+g = cmap->Colors[rows[i][j]].Green;
+b = cmap->Colors[rows[i][j]].Blue;
+ }
+   else
+ {
+r = g = b = 0;
+ }
*ptr++ = (0xff << 24) | (r << 16) | (g << 8) | b;
 }
   per += per_inc;

-- 




[EGIT] [apps/ephoto] master 01/01: Ephoto: Fix cursor calculation on Red Eye removal.

2016-04-05 Thread Stephen okra Houston
okra pushed a commit to branch master.

http://git.enlightenment.org/apps/ephoto.git/commit/?id=0bf54e689e2e8ecc87a3d9841522c18bdf6a8580

commit 0bf54e689e2e8ecc87a3d9841522c18bdf6a8580
Author: Stephen okra Houston 
Date:   Tue Apr 5 09:28:09 2016 -0500

Ephoto: Fix cursor calculation on Red Eye removal.
---
 src/bin/ephoto_red_eye.c | 25 ++---
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/bin/ephoto_red_eye.c b/src/bin/ephoto_red_eye.c
index 93dfbfb..5f48f35 100644
--- a/src/bin/ephoto_red_eye.c
+++ b/src/bin/ephoto_red_eye.c
@@ -50,18 +50,29 @@ _reye_clicked(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
 {
Ephoto_Reye *er = data;
unsigned int *im_data, *im_data_new, *p1, *p2;
-   int x, y, imx, imy, xpos, ypos, xadj, yadj;
-   int a, r, g, b;
+   int x, y, imx, imy, imw, imh;
+   int xpos, ypos, xadj, yadj;
+   int a, r, g, b, nx, ny;
+   double scalex, scaley;
 
evas_pointer_canvas_xy_get(evas_object_evas_get(er->image), , );
-   evas_object_geometry_get(er->image, , , 0, 0);
+   evas_object_geometry_get(er->image, , , , );
 
-   xadj = (xpos-imx)-(er->rad/2);
-   yadj = (ypos-imy)-(er->rad/2);
+   xadj = xpos-imx;
+   yadj = ypos-imy;
 
if (xadj < 0) xadj = 0;
if (yadj < 0) yadj = 0;
 
+   scalex = (double) (xadj) / (double) imw;
+   scaley = (double) (yadj) / (double) imh;
+
+   nx = ((er->w * scalex)-(er->rad/2));
+   ny = ((er->h * scaley)-(er->rad/2));
+
+   if (nx < 0) nx = 0;
+   if (ny < 0) ny = 0;
+
im_data = malloc(sizeof(unsigned int) * er->w * er->h);
if (er->edited_im_data)
  memcpy(im_data, er->edited_im_data,
@@ -85,9 +96,9 @@ _reye_clicked(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
  b = _mul_color_alpha(b, a);
  g = _mul_color_alpha(g, a);
  r = _mul_color_alpha(r, a);
- if (y >= yadj && y <= yadj+er->rad)
+ if (y >= ny && y <= ny+er->rad)
{
-  if (x >= xadj && x <= xadj+er->rad)
+  if (x >= nx && x <= nx+er->rad)
 r = (int) ((g+b)/2);
}
  b = _normalize_color(b);

-- 




[EGIT] [core/efl] master 01/01: evas-wayland-shm: Update copyright notice

2016-04-05 Thread Chris Michael
devilhorns pushed a commit to branch master.

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

commit fb3b6ac3274ae477dbc909f8a54836bf809f3eb6
Author: Chris Michael 
Date:   Tue Apr 5 07:42:56 2016 -0400

evas-wayland-shm: Update copyright notice

As portions of this code have been derived from existing code in
Weston, we should also be including their copyright/license text to
give credit.

Fixes T3421

@fix

Signed-off-by: Chris Michael 
---
 src/modules/evas/engines/wayland_shm/evas_engine.h | 28 ++
 src/modules/evas/engines/wayland_shm/evas_shm.c| 28 ++
 2 files changed, 56 insertions(+)

diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.h 
b/src/modules/evas/engines/wayland_shm/evas_engine.h
index 6a2fe75..6bea9bc 100644
--- a/src/modules/evas/engines/wayland_shm/evas_engine.h
+++ b/src/modules/evas/engines/wayland_shm/evas_engine.h
@@ -1,3 +1,31 @@
+/* Portions of this code have been derived from Weston
+ *
+ * Copyright © 2008-2012 Kristian Høgsberg
+ * Copyright © 2010-2012 Intel Corporation
+ * Copyright © 2010-2011 Benjamin Franzke
+ * Copyright © 2011-2012 Collabora, Ltd.
+ * Copyright © 2010 Red Hat 
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
 #ifndef _EVAS_ENGINE_H
 # define _EVAS_ENGINE_H
 
diff --git a/src/modules/evas/engines/wayland_shm/evas_shm.c 
b/src/modules/evas/engines/wayland_shm/evas_shm.c
index 22924e0..22f3ec4 100644
--- a/src/modules/evas/engines/wayland_shm/evas_shm.c
+++ b/src/modules/evas/engines/wayland_shm/evas_shm.c
@@ -1,3 +1,31 @@
+/* Portions of this code have been derived from Weston
+ *
+ * Copyright © 2008-2012 Kristian Høgsberg
+ * Copyright © 2010-2012 Intel Corporation
+ * Copyright © 2010-2011 Benjamin Franzke
+ * Copyright © 2011-2012 Collabora, Ltd.
+ * Copyright © 2010 Red Hat 
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
 #include "evas_common_private.h"
 #include "evas_private.h"
 #include "evas_engine.h"

-- 




[EGIT] [core/efl] master 01/01: eolian: Fix test cases

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit 21a7bc8a3caaba729dae6aae01dd36db6fee602d
Author: Jean-Philippe Andre 
Date:   Tue Apr 5 20:44:57 2016 +0900

eolian: Fix test cases

So sorry I missed this in my weak API patch! Bad JP didn't run
make check.
---
 src/tests/eolian/data/class_simple_ref_eo.h | 2 +-
 src/tests/eolian/data/docs_ref.h| 2 +-
 src/tests/eolian/data/struct_ref.c  | 2 +-
 src/tests/eolian/data/typedef_ref.c | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/tests/eolian/data/class_simple_ref_eo.h 
b/src/tests/eolian/data/class_simple_ref_eo.h
index f5b4f78..f0957e7 100644
--- a/src/tests/eolian/data/class_simple_ref_eo.h
+++ b/src/tests/eolian/data/class_simple_ref_eo.h
@@ -19,7 +19,7 @@ typedef Eo Class_Simple;
  */
 #define CLASS_SIMPLE_CLASS class_simple_class_get()
 
-EAPI const Eo_Class *class_simple_class_get(void);
+EWAPI const Eo_Class *class_simple_class_get(void);
 
 #ifdef CLASS_SIMPLE_BETA
 /**
diff --git a/src/tests/eolian/data/docs_ref.h b/src/tests/eolian/data/docs_ref.h
index d8939e4..4be8d3c 100644
--- a/src/tests/eolian/data/docs_ref.h
+++ b/src/tests/eolian/data/docs_ref.h
@@ -77,7 +77,7 @@ typedef struct _Opaque Opaque;
  */
 #define DOCS_CLASS docs_class_get()
 
-EAPI const Eo_Class *docs_class_get(void);
+EWAPI const Eo_Class *docs_class_get(void);
 
 /**
  * @brief Property common documentation.
diff --git a/src/tests/eolian/data/struct_ref.c 
b/src/tests/eolian/data/struct_ref.c
index 567ff9fd..e00f2e1 100644
--- a/src/tests/eolian/data/struct_ref.c
+++ b/src/tests/eolian/data/struct_ref.c
@@ -28,7 +28,7 @@ typedef struct _Opaque Opaque;
 #endif
 #define STRUCT_CLASS struct_class_get()
 
-EAPI const Eo_Class *struct_class_get(void);
+EWAPI const Eo_Class *struct_class_get(void);
 
 /**
  * @brief Foo docs. This is @c monospace. This is alone-standing $.
diff --git a/src/tests/eolian/data/typedef_ref.c 
b/src/tests/eolian/data/typedef_ref.c
index bfc2b92..6f07d3a 100644
--- a/src/tests/eolian/data/typedef_ref.c
+++ b/src/tests/eolian/data/typedef_ref.c
@@ -41,7 +41,7 @@ typedef enum
 #endif
 #define TYPEDEF_CLASS typedef_class_get()
 
-EAPI const Eo_Class *typedef_class_get(void);
+EWAPI const Eo_Class *typedef_class_get(void);
 
 EOAPI char *typedef_foo(Eo *obj, int idx);
 

-- 




[EGIT] [core/efl] master 01/03: Evas: Fix GL shader selection for afill

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit f57da20b88e7118fef9621572167ca72aedd0647
Author: Jean-Philippe Andre 
Date:   Tue Apr 5 14:54:29 2016 +0900

Evas: Fix GL shader selection for afill

AFILL should be used only for certain images, which are
actually native external or dynamic content images.

All normal image don't need the AFILL flag, since they should
have proper argb and alpha flag.
---
 src/modules/evas/engines/gl_common/evas_gl_shader.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/modules/evas/engines/gl_common/evas_gl_shader.c 
b/src/modules/evas/engines/gl_common/evas_gl_shader.c
index 88944c2..5fdd0aa 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_shader.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_shader.c
@@ -801,8 +801,11 @@ evas_gl_common_shader_flags_get(Evas_GL_Shared *shared, 
Shader_Type type,
if (tex)
  {
 flags |= SHADER_FLAG_TEX;
-if (!tex->alpha)
-  flags |= SHADER_FLAG_AFILL;
+if (!tex->alpha && tex_only)
+  {
+ if ((flags & SHADER_FLAG_EXTERNAL) || tex->pt->dyn.img)
+   flags |= SHADER_FLAG_AFILL;
+  }
  }
 
if (mtex)

-- 




[EGIT] [core/efl] master 02/03: Evas smart: Mark all smart clippers as no_render

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit df03631ef63ae0848828a25cc3caec3387e0917b
Author: Jean-Philippe Andre 
Date:   Tue Apr 5 17:19:55 2016 +0900

Evas smart: Mark all smart clippers as no_render

This allows doing ugly things such as setting a clipper/mask
on any smart object, without having to worry about seeing a
white rectangle cover the whole screen.

While the above scenario is not a great idea (bypass elementary in
its handling of the clipper), having a big white rect covering the
entire UI seems even worse.

I wonder if elm objects shouldn't simply allow user clippers, and
somehow manage them along with the smart object internal clipper.
---
 src/lib/evas/canvas/evas_object_smart.c | 13 -
 src/lib/evas/canvas/evas_object_smart_clipped.c |  1 +
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_object_smart.c 
b/src/lib/evas/canvas/evas_object_smart.c
index 57c8801..461338d 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -682,9 +682,20 @@ EOLIAN static void
 _evas_object_smart_smart_no_render_set(Eo *eo_obj, Evas_Smart_Data *o 
EINA_UNUSED, Eina_Bool hide)
 {
Evas_Object_Protected_Data *obj2;
+   Evas_Object_Smart_Clipped_Data *cso;
+   Evas_Object *cso_clipper;
+
+   if (eo_isa(eo_obj, EVAS_SMART_CLIPPED_CLASS))
+ cso = eo_data_scope_get(eo_obj, EVAS_SMART_CLIPPED_CLASS);
+   else
+ cso = evas_object_smart_data_get(eo_obj);
+   cso_clipper = cso ? cso->clipper : NULL;
 
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
- evas_obj_no_render_set(obj2->object, hide);
+ {
+if (cso_clipper != obj2->object)
+  evas_obj_no_render_set(obj2->object, hide);
+ }
 }
 
 EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c 
b/src/lib/evas/canvas/evas_object_smart_clipped.c
index c066e03..8584223 100644
--- a/src/lib/evas/canvas/evas_object_smart_clipped.c
+++ b/src/lib/evas/canvas/evas_object_smart_clipped.c
@@ -63,6 +63,7 @@ evas_object_smart_clipped_smart_add(Evas_Object *eo_obj)
evas_object_resize(cso->clipper, 20, 20);
evas_object_pass_events_set(cso->clipper, 1);
evas_object_hide(cso->clipper); /* show when have something clipped to it */
+   evas_obj_no_render_set(cso->clipper, 1);
 
evas_object_smart_data_set(eo_obj, cso);
 }

-- 




[EGIT] [core/efl] master 03/03: Makefile: Add efl as internal dependency for ecore

2016-04-05 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit edcdb94a30e9f053f3ae3cd0b5bbb0a2d280acb1
Author: Jean-Philippe Andre 
Date:   Tue Apr 5 20:10:17 2016 +0900

Makefile: Add efl as internal dependency for ecore

This commit broke the build:
 - 7c8b2da2863bb734236f5758288a00eb0d8c047a

Each and every single library including ecore now must
also include efl as well (for Efl.h).
---
 configure.ac | 23 +++
 1 file changed, 23 insertions(+)

diff --git a/configure.ac b/configure.ac
index 9d305f1..3ad9273 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1206,6 +1206,7 @@ EFL_LIB_START_OPTIONAL([Ecore_Js], [test "x${have_js}" = 
"xyes"])
 
 EFL_INTERNAL_DEPEND_PKG([ECORE_JS], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_JS], [ecore_file])
+EFL_INTERNAL_DEPEND_PKG([ECORE_JS], [efl])
 EFL_ADD_CFLAGS([ECORE_JS], [${EFL_PTHREAD_CFLAGS}])
 EFL_EVAL_PKGS([ECORE_JS])
 
@@ -2833,6 +2834,7 @@ EFL_INTERNAL_DEPEND_PKG([ECORE_CXX], [Eina_Cxx])
 EFL_INTERNAL_DEPEND_PKG([ECORE_CXX], [Ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_CXX], [Eina])
 EFL_INTERNAL_DEPEND_PKG([ECORE_CXX], [Eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_CXX], [Efl])
 
 EFL_EVAL_PKGS([ECORE_CXX])
 
@@ -2877,6 +2879,7 @@ if test "$build_crypto" != "none" ; then
EFL_CRYPTO_DEPEND([ECORE_CON])
 fi
 EFL_INTERNAL_DEPEND_PKG([ECORE_CON], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_CON], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_CON], [eet])
 EFL_INTERNAL_DEPEND_PKG([ECORE_CON], [eina])
 EFL_INTERNAL_DEPEND_PKG([ECORE_CON], [ecore])
@@ -2963,6 +2966,7 @@ EFL_PLATFORM_DEPEND([ECORE_IPC], [evil])
 EFL_INTERNAL_DEPEND_PKG([ECORE_IPC], [ecore-con])
 EFL_INTERNAL_DEPEND_PKG([ECORE_IPC], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_IPC], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_IPC], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_IPC], [eina])
 
 EFL_ADD_LIBS([ECORE_IPC], [-lm])
@@ -3003,6 +3007,7 @@ EFL_PLATFORM_DEPEND([ECORE_FILE], [escape])
 EFL_INTERNAL_DEPEND_PKG([ECORE_FILE], [ecore-con])
 EFL_INTERNAL_DEPEND_PKG([ECORE_FILE], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_FILE], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_FILE], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_FILE], [eina])
 
 ### Checks for header files
@@ -3036,6 +3041,7 @@ EFL_PLATFORM_DEPEND([ECORE_INPUT], [evil])
 ### Checks for libraries
 EFL_INTERNAL_DEPEND_PKG([ECORE_INPUT], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_INPUT], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_INPUT], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_INPUT], [eina])
 
 ### Checks for header files
@@ -3104,6 +3110,7 @@ EFL_LIB_START_OPTIONAL([Ecore_Cocoa], [test 
"${want_cocoa}" = "yes"])
 EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [ecore-input])
 EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [eina])
 EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [evas])
 EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [emile])
@@ -3148,6 +3155,7 @@ AC_ARG_ENABLE([tslib],
 EFL_INTERNAL_DEPEND_PKG([ECORE_FB], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_FB], [ecore-input])
 EFL_INTERNAL_DEPEND_PKG([ECORE_FB], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_FB], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_FB], [eina])
 
 EFL_OPTIONAL_DEPEND_PKG([ECORE_FB], [${want_tslib}], [TSLIB], [tslib])
@@ -3193,6 +3201,7 @@ EFL_PLATFORM_DEPEND([ECORE_PSL1GHT], [escape])
 EFL_INTERNAL_DEPEND_PKG([ECORE_PSL1GHT], [ecore-input])
 EFL_INTERNAL_DEPEND_PKG([ECORE_PSL1GHT], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_PSL1GHT], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_PSL1GHT], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_PSL1GHT], [eina])
 
 EFL_ADD_LIBS([ECORE_PSL1GHT], [-lio -lsysutil -lgem -lcamera -lspurs])
@@ -3227,6 +3236,7 @@ EFL_PLATFORM_DEPEND([ECORE_SDL], [all])
 EFL_INTERNAL_DEPEND_PKG([ECORE_SDL], [ecore-input])
 EFL_INTERNAL_DEPEND_PKG([ECORE_SDL], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_SDL], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_SDL], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_SDL], [eina])
 
 EFL_DEPEND_PKG([ECORE_SDL], [SDL], [sdl2 >= 2.0.0])
@@ -3266,6 +3276,7 @@ fi
 EFL_INTERNAL_DEPEND_PKG([ECORE_WAYLAND], [ecore-input])
 EFL_INTERNAL_DEPEND_PKG([ECORE_WAYLAND], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_WAYLAND], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_WAYLAND], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_WAYLAND], [eina])
 
 EFL_DEPEND_PKG([ECORE_WAYLAND], [WAYLAND],
@@ -3305,6 +3316,7 @@ fi
 EFL_INTERNAL_DEPEND_PKG([ECORE_WL2], [ecore-input])
 EFL_INTERNAL_DEPEND_PKG([ECORE_WL2], [ecore])
 EFL_INTERNAL_DEPEND_PKG([ECORE_WL2], [eo])
+EFL_INTERNAL_DEPEND_PKG([ECORE_WL2], [efl])
 EFL_INTERNAL_DEPEND_PKG([ECORE_WL2], [eina])
 
 EFL_DEPEND_PKG([ECORE_WL2], [WAYLAND],
@@ -3391,6 +3403,7 @@ AC_ARG_WITH([eject],
 EFL_INTERNAL_DEPEND_PKG([EEZE], [eina])
 EFL_INTERNAL_DEPEND_PKG([EEZE], [ecore])
 EFL_INTERNAL_DEPEND_PKG([EEZE], [eo])
+EFL_INTERNAL_DEPEND_PKG([EEZE], [efl])
 

[EGIT] [core/efl] master 01/01: popup : fix create scroller bug when list item add.

2016-04-05 Thread Jinyong Park
ami pushed a commit to branch master.

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

commit c2cebb9fbc6dfd44124489bdb5044632a14a73ec
Author: Jinyong Park 
Date:   Tue Apr 5 13:59:12 2016 +0530

popup : fix create scroller bug when list item add.

Summary:
data-> scr = scroller object
data-> scroll = scrollable flag.
in _list_add function, when scroller object is not created, do 
_create_scroller.
 if (!sd->scroll) _create_scroller(obj);
must change to
 if (!sd->scr) _create_scroller(obj);

@fix

Reviewers: jaehwan, id213sin, cedric, raster, singh.amitesh

Reviewed By: singh.amitesh

Subscribers: herb, jpeg

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

diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c
index 2ac88a4..016d3c2 100644
--- a/src/lib/elementary/elc_popup.c
+++ b/src/lib/elementary/elc_popup.c
@@ -687,7 +687,7 @@ _list_add(Evas_Object *obj)
 {
ELM_POPUP_DATA_GET(obj, sd);
 
-   if (!sd->scroll)
+   if (!sd->scr)
  _create_scroller(obj);
//Box
sd->box = elm_box_add(sd->scr);

-- 




[EGIT] [core/efl] master 01/04: efl: vpath subsystem

2016-04-05 Thread Carsten Haitzler
raster pushed a commit to branch master.

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

commit 6291c61556a531da874242830689e37362db1638
Author: Carsten Haitzler (Rasterman) 
Date:   Fri Apr 1 10:45:07 2016 +0900

efl: vpath subsystem

this adds a core vpath subsystem to efl that allows paths like:

  ~/file.jpg
  ~user/file.jpg
  (:tmp/file.jpg
  (:config/file.jpg
  (:videos/file.mp4
  (:pictures/file.jpg
  (:app.config/mycfg.cfg

etc. to be translated/looked up. it is desitgned to be async and call
event callbacks when ready. the reason for this complexity is fo in
future also handle:

  file:///whatever/file.jpg
  http://blah.com/file.jpg
  https://blah.com/file.jpg
  ssh://blah.com:~/file.jpg

etc.

@feature
---
 src/Makefile_Efl.am   |  11 +-
 src/lib/efl/Efl.h |   6 +
 src/lib/efl/interfaces/efl_interfaces_main.c  |   2 +
 src/lib/efl/interfaces/efl_vpath.eo   |  29 +++
 src/lib/efl/interfaces/efl_vpath_core.c   | 351 ++
 src/lib/efl/interfaces/efl_vpath_core.eo  |  31 +++
 src/lib/efl/interfaces/efl_vpath_file.c   |  61 +
 src/lib/efl/interfaces/efl_vpath_file.eo  |  46 
 src/lib/efl/interfaces/efl_vpath_file_core.c  |  66 +
 src/lib/efl/interfaces/efl_vpath_file_core.eo |  12 +
 src/lib/efl/interfaces/efl_vpath_manager.c|  89 +++
 src/lib/efl/interfaces/efl_vpath_manager.eo   |  28 ++
 12 files changed, 731 insertions(+), 1 deletion(-)

diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am
index d8683e1..17529a5 100644
--- a/src/Makefile_Efl.am
+++ b/src/Makefile_Efl.am
@@ -23,6 +23,11 @@ efl_eolian_files = \
   lib/efl/interfaces/efl_gfx_filter.eo \
   lib/efl/interfaces/efl_model_base.eo \
   lib/efl/interfaces/efl_animator.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 \
   $(efl_eolian_legacy_files) \
   $(NULL)
 
@@ -55,7 +60,11 @@ lib_LTLIBRARIES += lib/efl/libefl.la
 lib_efl_libefl_la_SOURCES = \
 lib/efl/interfaces/efl_interfaces_main.c \
 lib/efl/interfaces/efl_model_common.c \
-lib/efl/interfaces/efl_gfx_shape.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_libefl_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl 
-I$(top_srcdir)/src/lib/efl @EFL_CFLAGS@ -DEFL_GFX_FILTER_BETA
 lib_efl_libefl_la_LIBADD = @EFL_LIBS@
diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h
index 2cb0bd7..651a5bd 100644
--- a/src/lib/efl/Efl.h
+++ b/src/lib/efl/Efl.h
@@ -50,6 +50,12 @@ typedef struct tm Efl_Time;
 
 #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"
 typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command;
diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c 
b/src/lib/efl/interfaces/efl_interfaces_main.c
index 2299022..d01e8df 100644
--- a/src/lib/efl/interfaces/efl_interfaces_main.c
+++ b/src/lib/efl/interfaces/efl_interfaces_main.c
@@ -25,6 +25,8 @@
 
 #include "interfaces/efl_gfx_filter.eo.c"
 
+#include "interfaces/efl_vpath.eo.c"
+
 EAPI const Eo_Event_Description _EFL_GFX_CHANGED =
   EO_EVENT_DESCRIPTION("Graphics changed");
 
diff --git a/src/lib/efl/interfaces/efl_vpath.eo 
b/src/lib/efl/interfaces/efl_vpath.eo
new file mode 100644
index 000..021b317
--- /dev/null
+++ b/src/lib/efl/interfaces/efl_vpath.eo
@@ -0,0 +1,29 @@
+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"
+   ...
+   ]]
+   legacy_prefix: null;
+   eo_prefix: efl_vpath;
+   methods {
+  fetch {
+ [[ Fetch a new Vpath File object from the Vpath system ]]
+ params {
+path: const(char)*; [[ The input virtual file path to fetch ]]
+ }
+ return: own(Efl.Vpath_File *); [[ 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
new file mode 100644
index 000..5e7d525

[EGIT] [core/efl] master 03/04: elm - add vpath paths for application resources

2016-04-05 Thread Carsten Haitzler
raster pushed a commit to branch master.

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

commit 0c91f39db6e7334e0a6480048825a74b52e2898d
Author: Carsten Haitzler (Rasterman) 
Date:   Mon Apr 4 17:24:29 2016 +0900

elm - add vpath paths for application resources

this now allows vpath files to be looked uop using app directory
resources like @app.data/file.jpg ... if the object uses vpath to do
its hunting.

@feature
---
 src/lib/elementary/elm_main.c | 17 +
 1 file changed, 17 insertions(+)

diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c
index 1795192..eaafac4 100644
--- a/src/lib/elementary/elm_main.c
+++ b/src/lib/elementary/elm_main.c
@@ -144,6 +144,7 @@ _prefix_check(void)
const char *dirs[4] = { NULL, NULL, NULL, NULL };
char *caps = NULL, *p1, *p2;
char buf[PATH_MAX];
+   Efl_Vpath_Core *vpath;
 
if (app_pfx) return;
if (!app_domain) return;
@@ -174,6 +175,22 @@ _prefix_check(void)
  }
app_pfx = eina_prefix_new(argv[0], app_mainfunc, caps, app_domain,
  app_checkfile, dirs[0], dirs[1], dirs[2], 
dirs[3]);
+
+   vpath = efl_vpath_core_get(EFL_VPATH_CORE_CLASS);
+   efl_vpath_core_meta_set(vpath, "app.dir", eina_prefix_get(app_pfx));
+   efl_vpath_core_meta_set(vpath, "app.bin", eina_prefix_bin_get(app_pfx));
+   efl_vpath_core_meta_set(vpath, "app.lib", eina_prefix_lib_get(app_pfx));
+   efl_vpath_core_meta_set(vpath, "app.data", eina_prefix_data_get(app_pfx));
+   efl_vpath_core_meta_set(vpath, "app.locale", 
eina_prefix_locale_get(app_pfx));
+   snprintf(buf, sizeof(buf), "%s/%s",
+efl_vpath_core_meta_get(vpath, "config"), app_domain);
+   efl_vpath_core_meta_set(vpath, "app.config", buf);
+   snprintf(buf, sizeof(buf), "%s/%s",
+efl_vpath_core_meta_get(vpath, "cache"), app_domain);
+   efl_vpath_core_meta_set(vpath, "app.cache", buf);
+   snprintf(buf, sizeof(buf), "%s/%s",
+efl_vpath_core_meta_get(vpath, "data"), app_domain);
+   efl_vpath_core_meta_set(vpath, "app.local", buf);
 }
 
 static void

-- 




[EGIT] [core/efl] master 02/04: efl ecore - init vpath on ecore init so we have a base object working

2016-04-05 Thread Carsten Haitzler
raster pushed a commit to branch master.

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

commit 7c8b2da2863bb734236f5758288a00eb0d8c047a
Author: Carsten Haitzler (Rasterman) 
Date:   Mon Apr 4 17:12:38 2016 +0900

efl ecore - init vpath on ecore init so we have a base object working

this inits a new vpath object and adds it at priority 0 to the vpath
manager so you can use the vpath manager to create vpath file objects
and look things up.

@feature
---
 src/lib/ecore/Ecore.h |  1 +
 src/lib/ecore/ecore.c | 14 ++
 2 files changed, 15 insertions(+)

diff --git a/src/lib/ecore/Ecore.h b/src/lib/ecore/Ecore.h
index e843038..477335a 100644
--- a/src/lib/ecore/Ecore.h
+++ b/src/lib/ecore/Ecore.h
@@ -296,6 +296,7 @@
 #define _ECORE_H
 
 #include 
+#include 
 
 #ifdef _MSC_VER
 # include 
diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c
index 247612b..d7eead3 100644
--- a/src/lib/ecore/ecore.c
+++ b/src/lib/ecore/ecore.c
@@ -30,6 +30,7 @@
 
 #include "Ecore.h"
 #include "ecore_private.h"
+#include "Efl.h"
 
 #if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO)
 #include 
@@ -116,6 +117,8 @@ static Ecore_Memory_State _ecore_memory_state = 
ECORE_MEMORY_STATE_NORMAL;
 static Ecore_Timer *_systemd_watchdog = NULL;
 #endif
 
+static Efl_Vpath *vpath = NULL;
+
 Eina_Lock _ecore_main_loop_lock;
 int _ecore_main_lock_count;
 
@@ -243,6 +246,10 @@ ecore_init(void)
if (_ecore_fps_debug) _ecore_fps_debug_init();
if (!ecore_mempool_init()) goto shutdown_mempool;
_ecore_main_loop_init();
+
+   vpath = eo_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();
@@ -394,6 +401,13 @@ ecore_shutdown(void)
  _ecore_event_shutdown();
  _ecore_main_shutdown();
  _ecore_signal_shutdown();
+
+   if (vpath)
+ {
+eo_del(vpath);
+vpath = NULL;
+ }
+
  _ecore_main_loop_shutdown();
 
 #if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO)

-- 




[EGIT] [core/efl] master 04/04: evas: image obj - use vath to find images (sync not async)

2016-04-05 Thread Carsten Haitzler
raster pushed a commit to branch master.

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

commit 776f4cb112449c24fa333b30afb88847fb9cbc15
Author: Carsten Haitzler (Rasterman) 
Date:   Mon Apr 4 21:50:30 2016 +0900

evas: image obj - use vath to find images (sync not async)
---
 src/lib/evas/canvas/efl_canvas_image.c   | 17 -
 src/lib/evas/canvas/evas_image_legacy.c  | 10 ++
 src/lib/evas/canvas/evas_image_private.h |  1 +
 src/lib/evas/canvas/evas_object_image.c  | 24 +++-
 4 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/src/lib/evas/canvas/efl_canvas_image.c 
b/src/lib/evas/canvas/efl_canvas_image.c
index d6fb366..e799773 100644
--- a/src/lib/evas/canvas/efl_canvas_image.c
+++ b/src/lib/evas/canvas/efl_canvas_image.c
@@ -57,6 +57,7 @@ _evas_image_file_set(Eo *eo_obj, const char *file, const char 
*key)
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, 
EVAS_OBJECT_CLASS);
Evas_Image_Data *o = eo_data_scope_get(eo_obj, EVAS_IMAGE_CLASS);
Evas_Image_Load_Opts lo;
+   const char *file2;
 
if ((o->cur->u.file) && (file) && (!strcmp(o->cur->u.file, file)))
  {
@@ -68,7 +69,16 @@ _evas_image_file_set(Eo *eo_obj, const char *file, const 
char *key)
 
evas_object_async_block(obj);
_evas_image_init_set(NULL, file, key, eo_obj, obj, o, );
-   o->engine_data = ENFN->image_load(ENDT, o->cur->u.file, o->cur->key, 
>load_error, );
+   file2 = o->cur->u.file;
+   if (file2)
+ {
+o->file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, file2);
+efl_vpath_file_do(o->file_obj);
+// XXX:FIXME: allow this to be async
+efl_vpath_file_wait(o->file_obj);
+file2 = efl_vpath_file_result_get(o->file_obj);
+ }
+   o->engine_data = ENFN->image_load(ENDT, file2, o->cur->key, >load_error, 
);
o->buffer_data_set = EINA_FALSE;
_evas_image_done_set(eo_obj, obj, o);
 
@@ -611,6 +621,11 @@ _image_pixels_set(Evas_Object_Protected_Data *obj,
 ENFN->image_free(ENDT, o->engine_data);
 o->engine_data = NULL;
  }
+   if (o->file_obj)
+ {
+eo_del(o->file_obj);
+o->file_obj = NULL;
+ }
 
switch (cspace)
  {
diff --git a/src/lib/evas/canvas/evas_image_legacy.c 
b/src/lib/evas/canvas/evas_image_legacy.c
index 6d719e9..02843de 100644
--- a/src/lib/evas/canvas/evas_image_legacy.c
+++ b/src/lib/evas/canvas/evas_image_legacy.c
@@ -577,6 +577,11 @@ evas_object_image_data_set(Eo *eo_obj, void *data)
 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
 
 o->engine_data = NULL;
+if (o->file_obj)
+  {
+ eo_del(o->file_obj);
+ o->file_obj = NULL;
+  }
  }
 /* FIXME - in engine call above
if (o->engine_data)
@@ -652,6 +657,11 @@ evas_object_image_data_copy_set(Eo *eo_obj, void *data)
(o->cur->image.h <= 0)) return;
if (o->engine_data)
  ENFN->image_free(ENDT, o->engine_data);
+   if (o->file_obj)
+ {
+eo_del(o->file_obj);
+o->file_obj = NULL;
+ }
o->engine_data = ENFN->image_new_from_copied_data(ENDT,
  o->cur->image.w,
  o->cur->image.h,
diff --git a/src/lib/evas/canvas/evas_image_private.h 
b/src/lib/evas/canvas/evas_image_private.h
index 0fee726..407537c 100644
--- a/src/lib/evas/canvas/evas_image_private.h
+++ b/src/lib/evas/canvas/evas_image_private.h
@@ -107,6 +107,7 @@ struct _Evas_Image_Data
const Evas_Object_Image_Pixels *pixels;
 
void *engine_data;
+   Efl_Vpath_File   *file_obj;
 
int   pixels_checked_out;
int   load_error;
diff --git a/src/lib/evas/canvas/evas_object_image.c 
b/src/lib/evas/canvas/evas_object_image.c
index 8678e48..04a6a79 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -260,6 +260,11 @@ _evas_image_init_set(const Eina_File *f, const char *file, 
const char *key,
   }
 ENFN->image_free(ENDT, o->engine_data);
  }
+   if (o->file_obj)
+ {
+eo_del(o->file_obj);
+o->file_obj = NULL;
+ }
o->load_error = EVAS_LOAD_ERROR_NONE;
lo->scale_down_by = o->load_opts->scale_down_by;
lo->dpi = o->load_opts->dpi;
@@ -1191,7 +1196,19 @@ _evas_image_load(Evas_Object *eo_obj, 
Evas_Object_Protected_Data *obj, Evas_Imag
if (o->cur->mmaped_source)
  o->engine_data = ENFN->image_mmap(ENDT, o->cur->u.f, o->cur->key, 
>load_error, );
else
- o->engine_data = ENFN->image_load(ENDT, o->cur->u.file, o->cur->key, 
>load_error, );
+ {
+const char *file2 = o->cur->u.file;
+
+if (file2)
+  {
+ o->file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, 
file2);
+ efl_vpath_file_do(o->file_obj);
+ // XXX:FIXME: allow this to be 

[EGIT] [website/www-content] master 01/01: Wiki page docs-efl-start changed with summary [Elementary is merged with EFL, so it does not require building separately] by Shuhrat Dehkanov

2016-04-05 Thread Shuhrat Dehkanov
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit 66a75eb185077804ff35ab4787cedb83e9b34dae
Author: Shuhrat Dehkanov 
Date:   Mon Apr 4 23:39:54 2016 -0700

Wiki page docs-efl-start changed with summary [Elementary is merged with 
EFL, so it does not require building separately] by Shuhrat Dehkanov
---
 pages/docs-efl-start.txt | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pages/docs-efl-start.txt b/pages/docs-efl-start.txt
index e20c80a..a158818 100644
--- a/pages/docs-efl-start.txt
+++ b/pages/docs-efl-start.txt
@@ -21,7 +21,6 @@ As any general anonymous user for the EFL core libraries:
 git clone http://git.enlightenment.org/core/efl.git
 git clone http://git.enlightenment.org/core/emotion_generic_players.git
 git clone http://git.enlightenment.org/core/evas_generic_loaders.git
-git clone http://git.enlightenment.org/core/elementary.git
 
 
 And for some sample well developed / maintained applications

--