[EGIT] [core/enlightenment] enlightenment-0.17 01/01: menu: match file looked by code.

2015-08-21 Thread Thierry
cedric pushed a commit to branch enlightenment-0.17.

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

commit 70d20d82ff35751a1a851b52df028083c39000c4
Author: Thierry thie...@substantiel.fr
Date:   Fri Aug 21 17:08:15 2015 +0200

menu: match file looked by code.

Signed-off-by: Cedric BAIL ced...@osg.samsung.com
---
 configure.ac  | 2 +-
 enlightenment.spec.in | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 495deb1..1d7411d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -314,7 +314,7 @@ AM_CONDITIONAL(INSTALL_SYSACTIONS, test 
x${e_cv_enable_install_sysactions} = xye
 
 AC_MSG_CHECKING([whether to install enlightenment.menu])
 AC_ARG_ENABLE([install-enlightenment-menu],
-  AS_HELP_STRING([--disable-enlightenment-menu],[disable installing 
/etc/xdg/menus/enlightenment.menu @:@default=enabled@:@]),
+  AS_HELP_STRING([--disable-enlightenment-menu],[disable installing 
/etc/xdg/menus/e-applications.menu @:@default=enabled@:@]),
 [e_cv_enable_install_enlightenment_menu=$enableval],
 AC_CACHE_VAL([e_cv_enable_install_enlightenment_menu], 
[e_cv_enable_install_enlightenment_menu=yes]))
 AC_MSG_RESULT([$e_cv_enable_install_enlightenment_menu])
diff --git a/enlightenment.spec.in b/enlightenment.spec.in
index 6d718b8..1823c42 100644
--- a/enlightenment.spec.in
+++ b/enlightenment.spec.in
@@ -57,7 +57,7 @@ test x$RPM_BUILD_ROOT != x/  rm -rf $RPM_BUILD_ROOT
 %doc AUTHORS COPYING README
 %dir %{_sysconfdir}/enlightenment
 %config(noreplace) %{_sysconfdir}/enlightenment/*
-%config(noreplace) %{_sysconfdir}/xdg/menus/enlightenment.menu
+%config(noreplace) %{_sysconfdir}/xdg/menus/e-applications.menu
 %{_bindir}/enlightenment
 %{_bindir}/enlightenment_*
 #%{_bindir}/eap_to_desktop

-- 




[EGIT] [core/efl] master 13/21: eina: add eina_matrix4_quaternion_get and eina_quaternion_matrix4_get.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 8228145ca923ed4fbf5333f409e25a1f88bd9b38
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Wed Jun 24 19:33:44 2015 +0200

eina: add eina_matrix4_quaternion_get and eina_quaternion_matrix4_get.

Implementation taken from pseudo code at :
http://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix
---
 src/lib/eina/eina_quaternion.c | 310 +
 src/lib/eina/eina_quaternion.h |  12 ++
 2 files changed, 322 insertions(+)

diff --git a/src/lib/eina/eina_quaternion.c b/src/lib/eina/eina_quaternion.c
index 0334d57..55105be 100644
--- a/src/lib/eina/eina_quaternion.c
+++ b/src/lib/eina/eina_quaternion.c
@@ -23,6 +23,7 @@
 #include eina_private.h
 
 #include math.h
+#include float.h
 
 #include eina_fp.h
 #include eina_matrix.h
@@ -623,6 +624,213 @@ eina_quaternion_rotation_matrix3_get(Eina_Matrix3 *m,
m-zz = 1.0 - xx - yy;
 }
 
+static inline double
+_max(double a, double b)
+{
+   return a  b ? a : b;
+}
+
+static inline double
+eina_point_3d_norm(Eina_Point_3D *p)
+{
+   return sqrt(p-x * p-x + p-y * p-y + p-z * p-z);
+}
+
+static inline void
+eina_point_3d_normalize(Eina_Point_3D *p, double norm)
+{
+   double tmp = 1 / norm;
+
+   p-x *= tmp;
+   p-y *= tmp;
+   p-z *= tmp;
+}
+
+static inline double
+eina_point_3d_dot(const Eina_Point_3D *a, const Eina_Point_3D *b)
+{
+   return a-x * b-x + a-y * b-y + a-z * b-z;
+}
+
+static inline void
+eina_point_3d_combine(Eina_Point_3D *out,
+  const Eina_Point_3D *a, const Eina_Point_3D *b,
+  double scale1, double scale2)
+{
+   out-x = a-x * scale1 + b-x * scale2;
+   out-y = a-y * scale1 + b-y * scale2;
+   out-z = a-z * scale1 + b-z * scale2;
+}
+
+static inline void
+eina_point3d_cross(Eina_Point_3D *out,
+   const Eina_Point_3D *a, const Eina_Point_3D *b)
+{
+   out-x = a-y * b-z - a-z * b-y;
+   out-y = a-z * b-x - a-x * b-z;
+   out-z = a-x * b-y - a-y * b-x;
+}
+
+static inline void
+eina_point3d_neg(Eina_Point_3D *out, const Eina_Point_3D *in)
+{
+   out-x = - in-x;
+   out-y = - in-y;
+   out-z = - in-z;
+}
+
+/* http://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix */
+EAPI Eina_Bool
+eina_matrix4_quaternion_to(Eina_Quaternion *rotation,
+   Eina_Quaternion *perspective,
+   Eina_Point_3D *translation,
+   Eina_Point_3D *scale,
+   Eina_Point_3D *skew,
+   const Eina_Matrix4 *m)
+{
+   Eina_Matrix4 n, pm;
+   double det, factor;
+
+   if (m-ww == 0) return EINA_FALSE;
+
+   // Normalize the matrix.
+   factor = 1 / m-ww;
+
+   n.xx = m-xx * factor;
+   n.xy = m-xy * factor;
+   n.xz = m-xz * factor;
+   n.xw = m-xw * factor;
+   n.yx = m-yx * factor;
+   n.yy = m-yy * factor;
+   n.yz = m-yz * factor;
+   n.yw = m-yw * factor;
+   n.zx = m-zx * factor;
+   n.zy = m-zy * factor;
+   n.zz = m-zz * factor;
+   n.zw = m-zw * factor;
+   n.wx = m-wx * factor;
+   n.wy = m-wy * factor;
+   n.wz = m-wz * factor;
+   n.ww = m-ww * factor;
+
+   pm = n;
+   pm.xw = 0;
+   pm.yw = 0;
+   pm.zw = 0;
+   pm.ww = 1;
+
+   // If the perspective matrix is not invertible, we are also unable to
+   // decompose, so we'll bail early.
+   det = eina_matrix4_determinant(pm);
+   if (fabs(det)  DBL_EPSILON) return EINA_FALSE;
+
+   // First, isolate perspective.
+   if (perspective)
+ {
+if (fabs(n.xw)  DBL_EPSILON ||
+fabs(n.yw)  DBL_EPSILON ||
+fabs(n.zw)  DBL_EPSILON)
+  {
+ Eina_Quaternion tmp;
+ Eina_Matrix4 ipm, tipm;
+
+ tmp.x = n.wx;
+ tmp.y = n.wy;
+ tmp.z = n.wz;
+ tmp.w = n.ww;
+
+ if (!eina_matrix4_inverse(ipm, pm))
+   return EINA_FALSE;
+
+ eina_matrix4_transpose(tipm, ipm);
+
+ perspective-x = tipm.xx * tmp.x + tipm.yx * tmp.y + tipm.zx * 
tmp.z + tipm.wx * tmp.w;
+ perspective-y = tipm.xy * tmp.x + tipm.yy * tmp.y + tipm.zy * 
tmp.z + tipm.wy * tmp.w;
+ perspective-z = tipm.xz * tmp.x + tipm.yz * tmp.y + tipm.zz * 
tmp.z + tipm.wz * tmp.w;
+ perspective-w = tipm.xw * tmp.x + tipm.yw * tmp.y + tipm.zw * 
tmp.z + tipm.ww * tmp.w;
+  }
+else
+  {
+ perspective-x = perspective-y = perspective-z = 0;
+ perspective-w = 1;
+  }
+ }
+
+   if (translation)
+ {
+translation-x = n.xw;
+translation-y = n.yw;
+translation-z = n.zw;
+ }
+
+   if (skew || scale || rotation)
+ {
+Eina_Point_3D tsc, tsk, row0, row1, row2, cross;
+double tmp;
+
+// Make sure all pointer are defined
+if (!scale) scale = tsc;
+if (!skew) skew = tsk;
+
+row0.x = n.xx; row1.x = 

[EGIT] [core/efl] master 14/21: eina: add test for decomposition and composition of matrix.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit f2e3777a09ada7731df036f4068528354ff2a556
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Tue Jun 30 09:45:29 2015 +0200

eina: add test for decomposition and composition of matrix.
---
 src/tests/eina/eina_test_quaternion.c | 85 ++-
 1 file changed, 84 insertions(+), 1 deletion(-)

diff --git a/src/tests/eina/eina_test_quaternion.c 
b/src/tests/eina/eina_test_quaternion.c
index 1ffbc1a..45c527c 100644
--- a/src/tests/eina/eina_test_quaternion.c
+++ b/src/tests/eina/eina_test_quaternion.c
@@ -27,7 +27,7 @@
 #include eina_suite.h
 #include Eina.h
 
-#define FLOAT_CMP(a, b) (fabs(a - b) = DBL_MIN)
+#define FLOAT_CMP(a, b) (fabs((float)a - (float)b) = FLT_MIN)
 
 static inline Eina_Bool
 eina_quaternion_cmp(const Eina_Quaternion *a, const Eina_Quaternion *b)
@@ -56,6 +56,16 @@ eina_matrix3_cmp(const Eina_Matrix3 *a, const Eina_Matrix3 
*b)
return EINA_FALSE;
 }
 
+static inline Eina_Bool
+eina_point_3d_cmp(const Eina_Point_3D *a, const Eina_Point_3D *b)
+{
+   if (FLOAT_CMP(a-x, b-x) 
+   FLOAT_CMP(a-y, b-y) 
+   FLOAT_CMP(a-z, b-z))
+ return EINA_TRUE;
+   return EINA_FALSE;
+}
+
 START_TEST(eina_test_quaternion_norm)
 {
static const Eina_Quaternion q = { 1, 3, 4, 5 };
@@ -245,6 +255,30 @@ START_TEST(eina_test_quaternion_mul)
 }
 END_TEST
 
+START_TEST(eina_test_matrix_recompose)
+{
+   const Eina_Point_3D translation = { 0, 0, 0 };
+   const Eina_Point_3D scale = { 1, 1, 1 };
+   const Eina_Point_3D skew = { 0, 0, 0 };
+   const Eina_Quaternion perspective = { 0, 0, 0, 1 };
+   const Eina_Quaternion rotation = { 0, 0, 0, 1 };
+   Eina_Matrix4 m4;
+
+   eina_init();
+
+   eina_quaternion_matrix4_to(m4,
+  rotation,
+  perspective,
+  translation,
+  scale,
+  skew);
+
+   fail_if(eina_matrix4_type_get(m4) != EINA_MATRIX_TYPE_IDENTITY);
+
+   eina_shutdown();
+}
+END_TEST
+
 START_TEST(eina_test_quaternion_normalized)
 {
Eina_Quaternion p = {1, 1, 1, 1};
@@ -259,6 +293,53 @@ START_TEST(eina_test_quaternion_normalized)
 }
 END_TEST
 
+START_TEST(eina_test_matrix_quaternion)
+{
+   const Eina_Point_3D rt = { -2, -3, 0 };
+   const Eina_Point_3D rsc = { 4, 5, 1 };
+   const Eina_Quaternion rr = { 0, 0, -1, 0 };
+   const Eina_Quaternion rp = { 0, 0, 0, 1 };
+   Eina_Quaternion rotation, perspective;
+   Eina_Matrix3 m3, m3r;
+   Eina_Matrix4 m4, m4r;
+   Eina_Point_3D translation, scale, skew;
+
+   eina_init();
+
+   eina_matrix3_identity(m3);
+   eina_matrix3_rotate(m3, 3.14159265);
+   eina_matrix3_translate(m3, 2, 3);
+   eina_matrix3_scale(m3, 4, 5);
+   eina_matrix3_matrix4_to(m4, m3);
+
+   fail_if(!eina_matrix4_quaternion_to(rotation,
+   perspective,
+   translation,
+   scale,
+   skew,
+   m4));
+
+   eina_quaternion_matrix4_to(m4r,
+  rotation,
+  perspective,
+  translation,
+  scale,
+  skew);
+
+   eina_matrix4_matrix3_to(m3r, m4r);
+
+   fail_if(!eina_point_3d_cmp(scale, rsc));
+   fail_if(!eina_point_3d_cmp(translation, rt));
+   fail_if(!eina_quaternion_cmp(perspective, rp));
+   fail_if(!eina_quaternion_cmp(rotation, rr));
+
+   // Disable this test for the moment as it seems a rounding issue
+   // fail_if(!eina_matrix3_cmp(m3r, m3));
+
+   eina_shutdown();
+}
+END_TEST
+
 void
 eina_test_quaternion(TCase *tc)
 {
@@ -272,4 +353,6 @@ eina_test_quaternion(TCase *tc)
tcase_add_test(tc, eina_test_quaternion_set);
tcase_add_test(tc, eina_test_quaternion_mul);
tcase_add_test(tc, eina_test_quaternion_normalized);
+   tcase_add_test(tc, eina_test_matrix_quaternion);
+   tcase_add_test(tc, eina_test_matrix_recompose);
 }

-- 




[EGIT] [core/efl] master 12/21: eina: add eina_matrix4_multiply and eina_matrix4_identity function.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit abfe65e05d6ef483432def7a4554f401e33657ca
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Tue Jun 30 18:39:39 2015 +0200

eina: add eina_matrix4_multiply and eina_matrix4_identity function.
---
 src/lib/eina/eina_matrix.c | 113 +
 src/lib/eina/eina_matrix.h |  22 +
 2 files changed, 135 insertions(+)

diff --git a/src/lib/eina/eina_matrix.c b/src/lib/eina/eina_matrix.c
index 96a0971..4263322 100644
--- a/src/lib/eina/eina_matrix.c
+++ b/src/lib/eina/eina_matrix.c
@@ -24,6 +24,7 @@
 
 #include math.h
 #include float.h
+#include string.h
 
 #include eina_fp.h
 #include eina_rectangle.h
@@ -936,3 +937,115 @@ eina_matrix4_transpose(Eina_Matrix4 *out, const 
Eina_Matrix4 *in)
MATRIX_WZ(out) = MATRIX_ZW(in);
MATRIX_WW(out) = MATRIX_WW(in);
 }
+
+EAPI void
+eina_matrix4_multiply(Eina_Matrix4 *out,
+  const Eina_Matrix4 *a, const Eina_Matrix4 *b)
+{
+   // FIXME: start implementing SSE multiplication here
+   MATRIX_XX(out) =
+   MATRIX_XX(a) * MATRIX_XX(b)
+ + MATRIX_XY(a) * MATRIX_YX(b)
+ + MATRIX_XZ(a) * MATRIX_ZX(b)
+ + MATRIX_XW(a) * MATRIX_WX(b);
+
+   MATRIX_XY(out) =
+   MATRIX_XX(a) * MATRIX_XY(b)
+ + MATRIX_XY(a) * MATRIX_YY(b)
+ + MATRIX_XZ(a) * MATRIX_ZY(b)
+ + MATRIX_XW(a) * MATRIX_WY(b);
+
+   MATRIX_XZ(out) =
+   MATRIX_XX(a) * MATRIX_XZ(b)
+ + MATRIX_XY(a) * MATRIX_YZ(b)
+ + MATRIX_XZ(a) * MATRIX_ZZ(b)
+ + MATRIX_XW(a) * MATRIX_WZ(b);
+
+   MATRIX_XW(out) =
+   MATRIX_XX(a) * MATRIX_XW(b)
+ + MATRIX_XY(a) * MATRIX_YW(b)
+ + MATRIX_XZ(a) * MATRIX_ZW(b)
+ + MATRIX_XW(a) * MATRIX_WW(b);
+
+   MATRIX_YX(out) =
+   MATRIX_YX(a) * MATRIX_XX(b)
+ + MATRIX_YY(a) * MATRIX_YX(b)
+ + MATRIX_YZ(a) * MATRIX_ZX(b)
+ + MATRIX_YW(a) * MATRIX_WX(b);
+
+   MATRIX_YY(out) =
+   MATRIX_YX(a) * MATRIX_XY(b)
+ + MATRIX_YY(a) * MATRIX_YY(b)
+ + MATRIX_YZ(a) * MATRIX_ZY(b)
+ + MATRIX_YW(a) * MATRIX_WY(b);
+
+   MATRIX_YZ(out) =
+   MATRIX_YX(a) * MATRIX_XZ(b)
+ + MATRIX_YY(a) * MATRIX_YZ(b)
+ + MATRIX_YZ(a) * MATRIX_ZZ(b)
+ + MATRIX_YW(a) * MATRIX_WZ(b);
+
+   MATRIX_YW(out) =
+   MATRIX_YX(a) * MATRIX_XW(b)
+ + MATRIX_YY(a) * MATRIX_YW(b)
+ + MATRIX_YZ(a) * MATRIX_ZW(b)
+ + MATRIX_YW(a) * MATRIX_WW(b);
+
+   MATRIX_ZX(out) =
+   MATRIX_ZX(a) * MATRIX_XX(b)
+ + MATRIX_ZY(a) * MATRIX_YX(b)
+ + MATRIX_ZZ(a) * MATRIX_ZX(b)
+ + MATRIX_ZW(a) * MATRIX_WX(b);
+
+   MATRIX_ZY(out) =
+   MATRIX_ZX(a) * MATRIX_XY(b)
+ + MATRIX_ZY(a) * MATRIX_YY(b)
+ + MATRIX_ZZ(a) * MATRIX_ZY(b)
+ + MATRIX_ZW(a) * MATRIX_WY(b);
+
+   MATRIX_ZZ(out) =
+   MATRIX_ZX(a) * MATRIX_XZ(b)
+ + MATRIX_ZY(a) * MATRIX_YZ(b)
+ + MATRIX_ZZ(a) * MATRIX_ZZ(b)
+ + MATRIX_ZW(a) * MATRIX_WZ(b);
+
+   MATRIX_ZW(out) =
+   MATRIX_ZX(a) * MATRIX_XW(b)
+ + MATRIX_ZY(a) * MATRIX_YW(b)
+ + MATRIX_ZZ(a) * MATRIX_ZW(b)
+ + MATRIX_ZW(a) * MATRIX_WW(b);
+
+   MATRIX_WX(out) =
+   MATRIX_WX(a) * MATRIX_XX(b)
+ + MATRIX_WY(a) * MATRIX_YX(b)
+ + MATRIX_WZ(a) * MATRIX_ZX(b)
+ + MATRIX_WW(a) * MATRIX_WX(b);
+
+   MATRIX_WY(out) =
+   MATRIX_WX(a) * MATRIX_XY(b)
+ + MATRIX_WY(a) * MATRIX_YY(b)
+ + MATRIX_WZ(a) * MATRIX_ZY(b)
+ + MATRIX_WW(a) * MATRIX_WY(b);
+
+   MATRIX_WZ(out) =
+   MATRIX_WX(a) * MATRIX_XZ(b)
+ + MATRIX_WY(a) * MATRIX_YZ(b)
+ + MATRIX_WZ(a) * MATRIX_ZZ(b)
+ + MATRIX_WW(a) * MATRIX_WZ(b);
+
+   MATRIX_WW(out) =
+   MATRIX_WX(a) * MATRIX_XW(b)
+ + MATRIX_WY(a) * MATRIX_YW(b)
+ + MATRIX_WZ(a) * MATRIX_ZW(b)
+ + MATRIX_WW(a) * MATRIX_WW(b);
+}
+
+EAPI void
+eina_matrix4_identity(Eina_Matrix4 *out)
+{
+   memset(out, 0, sizeof (Eina_Matrix4));
+   MATRIX_XX(out) = 1;
+   MATRIX_YY(out) = 1;
+   MATRIX_ZZ(out) = 1;
+   MATRIX_WW(out) = 1;
+}
diff --git a/src/lib/eina/eina_matrix.h b/src/lib/eina/eina_matrix.h
index ab6be4c..17af8d3 100644
--- a/src/lib/eina/eina_matrix.h
+++ b/src/lib/eina/eina_matrix.h
@@ -582,6 +582,28 @@ EAPI void eina_matrix4_matrix3_to(Eina_Matrix3 *m3, const 
Eina_Matrix4 *m4);
 EAPI void eina_matrix3_matrix4_to(Eina_Matrix4 *m4, const Eina_Matrix3 *m3);
 
 /**
+ * @brief Set an identity matrix
+ *
+ * @param out The matrix to set
+ *
+ * @since 1.15
+ */
+EAPI void eina_matrix4_identity(Eina_Matrix4 *out);
+
+/**
+ * @brief Multiply two matrix
+ *
+ * @param out The resulting matrix
+ * @param a The first member of the multiplication
+ * @param b The second member of the multiplication
+ *
+ * @since 1.15
+ */
+EAPI void eina_matrix4_multiply(Eina_Matrix4 *out,
+const Eina_Matrix4 *a, const Eina_Matrix4 *b);
+
+
+/**
  * @}
  */
 #endif /*EINA_MATRIX3_H_*/

-- 




[EGIT] [core/efl] master 04/21: evas: add logic to duplicate recursively an Efl_VG_Node tree.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 05fdfcc76a7eb57d00ae52d3ab2b9a1eb3ee0db9
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Fri Jun 19 11:26:46 2015 +0200

evas: add logic to duplicate recursively an Efl_VG_Node tree.
---
 src/lib/evas/canvas/efl_vg_base.eo|  5 
 src/lib/evas/canvas/efl_vg_container.eo   |  1 +
 src/lib/evas/canvas/efl_vg_gradient.eo|  1 +
 src/lib/evas/canvas/efl_vg_gradient_linear.eo |  1 +
 src/lib/evas/canvas/efl_vg_gradient_radial.eo |  1 +
 src/lib/evas/canvas/efl_vg_shape.eo   |  1 +
 src/lib/evas/canvas/evas_vg_container.c   | 26 +
 src/lib/evas/canvas/evas_vg_gradient.c| 16 +++
 src/lib/evas/canvas/evas_vg_gradient_linear.c | 16 +++
 src/lib/evas/canvas/evas_vg_gradient_radial.c | 17 +++
 src/lib/evas/canvas/evas_vg_node.c| 12 +++-
 src/lib/evas/canvas/evas_vg_private.h | 18 
 src/lib/evas/canvas/evas_vg_shape.c   | 41 +++
 13 files changed, 155 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/efl_vg_base.eo 
b/src/lib/evas/canvas/efl_vg_base.eo
index 7ddfce5..15a8913 100644
--- a/src/lib/evas/canvas/efl_vg_base.eo
+++ b/src/lib/evas/canvas/efl_vg_base.eo
@@ -96,6 +96,11 @@ abstract Efl.VG.Base (Eo.Base, Efl.Gfx.Base, Efl.Gfx.Stack)
   @in pos_map: double;
 }
   }
+  dup {
+params {
+  @in from: const(Efl.VG.Base)*;
+}
+  }
}
implements {
   Eo.Base.parent.set;
diff --git a/src/lib/evas/canvas/efl_vg_container.eo 
b/src/lib/evas/canvas/efl_vg_container.eo
index b3a6ec4..21bb5e7 100644
--- a/src/lib/evas/canvas/efl_vg_container.eo
+++ b/src/lib/evas/canvas/efl_vg_container.eo
@@ -17,5 +17,6 @@ class Efl.VG.Container (Efl.VG.Base)
   Eo.Base.destructor;
   Efl.VG.Base.bounds_get;
   Efl.VG.Base.interpolate;
+  Efl.VG.Base.dup;
}
 }
diff --git a/src/lib/evas/canvas/efl_vg_gradient.eo 
b/src/lib/evas/canvas/efl_vg_gradient.eo
index 959da5b..7f794cb 100644
--- a/src/lib/evas/canvas/efl_vg_gradient.eo
+++ b/src/lib/evas/canvas/efl_vg_gradient.eo
@@ -7,5 +7,6 @@ abstract Efl.VG.Gradient (Efl.VG.Base, Efl.Gfx.Gradient.Base)
   Efl.Gfx.Gradient.Base.spread.set;
   Efl.Gfx.Gradient.Base.spread.get;
   Efl.VG.Base.interpolate;
+  Efl.VG.Base.dup;
}
 }
diff --git a/src/lib/evas/canvas/efl_vg_gradient_linear.eo 
b/src/lib/evas/canvas/efl_vg_gradient_linear.eo
index aecfe4e..381ddb6 100644
--- a/src/lib/evas/canvas/efl_vg_gradient_linear.eo
+++ b/src/lib/evas/canvas/efl_vg_gradient_linear.eo
@@ -8,6 +8,7 @@ class Efl.VG.Gradient_Linear (Efl.VG.Gradient, 
Efl.Gfx.Gradient.Linear)
   Efl.Gfx.Gradient.Linear.end.get;
   Efl.VG.Base.bounds_get;
   Efl.VG.Base.interpolate;
+  Efl.VG.Base.dup;
   Eo.Base.constructor;
   Eo.Base.destructor;
}
diff --git a/src/lib/evas/canvas/efl_vg_gradient_radial.eo 
b/src/lib/evas/canvas/efl_vg_gradient_radial.eo
index bd99848..860c4f7 100644
--- a/src/lib/evas/canvas/efl_vg_gradient_radial.eo
+++ b/src/lib/evas/canvas/efl_vg_gradient_radial.eo
@@ -10,6 +10,7 @@ class Efl.VG.Gradient_Radial (Efl.VG.Gradient, 
Efl.Gfx.Gradient.Radial)
   Efl.Gfx.Gradient.Radial.focal.get; 
   Efl.VG.Base.bounds_get;
   Efl.VG.Base.interpolate;
+  Efl.VG.Base.dup;
   Eo.Base.constructor;
   Eo.Base.destructor;
}
diff --git a/src/lib/evas/canvas/efl_vg_shape.eo 
b/src/lib/evas/canvas/efl_vg_shape.eo
index e2d5c27..053a374 100644
--- a/src/lib/evas/canvas/efl_vg_shape.eo
+++ b/src/lib/evas/canvas/efl_vg_shape.eo
@@ -42,6 +42,7 @@ class Efl.VG.Shape (Efl.VG.Base, Efl.Gfx.Shape)
   Efl.Gfx.Base.color_part.get;
   Efl.VG.Base.bounds_get;
   Efl.VG.Base.interpolate;
+  Efl.VG.Base.dup;
   Eo.Base.constructor;
   Eo.Base.destructor;
}
diff --git a/src/lib/evas/canvas/evas_vg_container.c 
b/src/lib/evas/canvas/evas_vg_container.c
index 683f5ce..32ffbfa 100644
--- a/src/lib/evas/canvas/evas_vg_container.c
+++ b/src/lib/evas/canvas/evas_vg_container.c
@@ -135,6 +135,32 @@ _efl_vg_container_efl_vg_base_interpolate(Eo *obj,
return r;
 }
 
+static void
+_efl_vg_container_efl_vg_base_dup(Eo *obj,
+  Efl_VG_Container_Data *pd,
+  const Efl_VG_Base *from)
+{
+   Efl_VG_Container_Data *fromd;
+   Eina_List *l;
+   Eo *child;
+
+   eo_do_super(obj, EFL_VG_CONTAINER_CLASS, efl_vg_dup(from));
+
+   fromd = eo_data_scope_get(from, EFL_VG_CONTAINER_CLASS);
+
+   EINA_LIST_FREE(pd-children, child)
+ eo_unref(child);
+
+   EINA_LIST_FOREACH(fromd-children, l, child)
+ {
+// By setting parent, we automatically reference
+// this new object as a child of obj. Magic at work !
+eo_add_ref(eo_class_get(child),
+   obj,
+  

[EGIT] [core/efl] master 06/21: eina: add eina_matrix4_determinant.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 4f0f81bb30f33b8e5f72008c2cf2ef438d5283e6
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Wed Jun 24 16:56:26 2015 +0200

eina: add eina_matrix4_determinant.
---
 src/lib/eina/eina_matrix.c | 30 ++
 src/lib/eina/eina_matrix.h | 13 +
 2 files changed, 43 insertions(+)

diff --git a/src/lib/eina/eina_matrix.c b/src/lib/eina/eina_matrix.c
index 6c96893..2e994df 100644
--- a/src/lib/eina/eina_matrix.c
+++ b/src/lib/eina/eina_matrix.c
@@ -693,3 +693,33 @@ eina_matrix3_matrix4_to(Eina_Matrix4 *m4, const 
Eina_Matrix3 *m3)
MATRIX_WZ(m4) = 0;
MATRIX_WW(m4) = MATRIX_ZZ(m3);
 }
+
+EAPI double
+eina_matrix4_determinant(const Eina_Matrix4 *m)
+{
+   return
+   MATRIX_XW(m) * MATRIX_YZ(m) * MATRIX_ZY(m) * MATRIX_WX(m)
+ - MATRIX_XZ(m) * MATRIX_YW(m) * MATRIX_ZY(m) * MATRIX_WX(m)
+ - MATRIX_XW(m) * MATRIX_YY(m) * MATRIX_ZZ(m) * MATRIX_WX(m)
+ + MATRIX_XY(m) * MATRIX_YW(m) * MATRIX_ZZ(m) * MATRIX_WX(m)
+ + MATRIX_XZ(m) * MATRIX_YY(m) * MATRIX_ZW(m) * MATRIX_WX(m)
+ - MATRIX_XY(m) * MATRIX_YZ(m) * MATRIX_ZW(m) * MATRIX_WX(m)
+ - MATRIX_XW(m) * MATRIX_YZ(m) * MATRIX_ZX(m) * MATRIX_WY(m)
+ + MATRIX_XZ(m) * MATRIX_YW(m) * MATRIX_ZX(m) * MATRIX_WY(m)
+ + MATRIX_XW(m) * MATRIX_YX(m) * MATRIX_ZZ(m) * MATRIX_WY(m)
+ - MATRIX_XX(m) * MATRIX_YW(m) * MATRIX_ZZ(m) * MATRIX_WY(m)
+ - MATRIX_XZ(m) * MATRIX_YX(m) * MATRIX_ZW(m) * MATRIX_WY(m)
+ + MATRIX_XX(m) * MATRIX_YZ(m) * MATRIX_ZW(m) * MATRIX_WY(m)
+ + MATRIX_XW(m) * MATRIX_YY(m) * MATRIX_ZX(m) * MATRIX_WZ(m)
+ - MATRIX_XY(m) * MATRIX_YW(m) * MATRIX_ZX(m) * MATRIX_WZ(m)
+ - MATRIX_XW(m) * MATRIX_YX(m) * MATRIX_ZY(m) * MATRIX_WZ(m)
+ + MATRIX_XX(m) * MATRIX_YW(m) * MATRIX_ZY(m) * MATRIX_WZ(m)
+ + MATRIX_XY(m) * MATRIX_YX(m) * MATRIX_ZW(m) * MATRIX_WZ(m)
+ - MATRIX_XX(m) * MATRIX_YY(m) * MATRIX_ZW(m) * MATRIX_WZ(m)
+ - MATRIX_XZ(m) * MATRIX_YY(m) * MATRIX_ZX(m) * MATRIX_WW(m)
+ + MATRIX_XY(m) * MATRIX_YZ(m) * MATRIX_ZX(m) * MATRIX_WW(m)
+ + MATRIX_XZ(m) * MATRIX_YX(m) * MATRIX_ZY(m) * MATRIX_WW(m)
+ - MATRIX_XX(m) * MATRIX_YZ(m) * MATRIX_ZY(m) * MATRIX_WW(m)
+ - MATRIX_XY(m) * MATRIX_YX(m) * MATRIX_ZZ(m) * MATRIX_WW(m)
+ + MATRIX_XX(m) * MATRIX_YY(m) * MATRIX_ZZ(m) * MATRIX_WW(m);
+}
diff --git a/src/lib/eina/eina_matrix.h b/src/lib/eina/eina_matrix.h
index 83fff16..8dc7014 100644
--- a/src/lib/eina/eina_matrix.h
+++ b/src/lib/eina/eina_matrix.h
@@ -512,6 +512,19 @@ EAPI void eina_matrix4_values_get(const Eina_Matrix4 *m,
   double *wx, double *wy, double *wz, double 
*ww);
 
 /**
+ * @brief Return the determinant of the given matrix.
+ *
+ * @param m The matrix.
+ * @return The determinant.
+ *
+ * This function returns the determinant of the matrix @p m. No check
+ * is done on @p m.
+ *
+ * @since 1.15
+ */
+EAPI double eina_matrix4_determinant(const Eina_Matrix4 *m);
+
+/**
  * @brief Convert an Eina_Matrix4 into an Eina_Matrix3.
  *
  * @param m3 The destination Eina_Matrix3.

-- 




[EGIT] [core/efl] master 18/21: ector: don't forget to reset cairo matrix to identity.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit b5d2cef660bc8e63074f1eada8fbd15392f2e3e3
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Fri Aug 21 16:07:16 2015 +0200

ector: don't forget to reset cairo matrix to identity.
---
 src/lib/ector/cairo/ector_renderer_cairo_base.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/ector/cairo/ector_renderer_cairo_base.c 
b/src/lib/ector/cairo/ector_renderer_cairo_base.c
index 5bf0f88..4f25b9e 100644
--- a/src/lib/ector/cairo/ector_renderer_cairo_base.c
+++ b/src/lib/ector/cairo/ector_renderer_cairo_base.c
@@ -184,6 +184,7 @@ 
_ector_renderer_cairo_base_ector_renderer_generic_base_draw(Eo *obj,
cairo_translate(pd-parent-cairo, cx, cy);
 
if (pd-m) cairo_transform(pd-parent-cairo, pd-m);
+   else cairo_transform(pd-parent-cairo, identity);
 
cairo_set_source_rgba(pd-parent-cairo, r/255.0, g/255.0, b/255.0, 
a/255.0);
 

-- 




[EGIT] [core/efl] master 21/21: ecore_con: fix test to properly send the right amount of data (including the '\0').

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 7aea193a971a395b3afd09a6fa6f1b8985fc431a
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Fri Aug 21 17:54:13 2015 +0200

ecore_con: fix test to properly send the right amount of data (including 
the '\0').
---
 src/tests/ecore_con/ecore_con_test_ecore_con_eet.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/tests/ecore_con/ecore_con_test_ecore_con_eet.c 
b/src/tests/ecore_con/ecore_con_test_ecore_con_eet.c
index 99926a0..e6eca4d 100644
--- a/src/tests/ecore_con/ecore_con_test_ecore_con_eet.c
+++ b/src/tests/ecore_con/ecore_con_test_ecore_con_eet.c
@@ -76,7 +76,7 @@ _eet_data_cb(void *data EINA_UNUSED, Ecore_Con_Reply *reply, 
const char *protoco
fail_if(received-id != 1);
 
ecore_con_eet_raw_send(reply, protocol_name, message, toSend,
-  strlen(toSend));
+  strlen(toSend) + 1);
 }
 
 static Eina_Bool

-- 




[EGIT] [core/efl] master 05/21: eina: our 3x3 matrix are 2D matrix, not 3D rotation matrix.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit c82015d0625448160b4e0320babdacdbbd80765d
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Wed Jun 24 15:31:32 2015 +0200

eina: our 3x3 matrix are 2D matrix, not 3D rotation matrix.
---
 src/lib/eina/eina_matrix.c| 30 +++---
 src/tests/eina/eina_test_matrix.c | 19 +--
 2 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/src/lib/eina/eina_matrix.c b/src/lib/eina/eina_matrix.c
index 8e2d0be..6c96893 100644
--- a/src/lib/eina/eina_matrix.c
+++ b/src/lib/eina/eina_matrix.c
@@ -664,13 +664,13 @@ eina_matrix4_matrix3_to(Eina_Matrix3 *m3, const 
Eina_Matrix4 *m4)
 {
MATRIX_XX(m3) = MATRIX_XX(m4);
MATRIX_XY(m3) = MATRIX_XY(m4);
-   MATRIX_XZ(m3) = MATRIX_XZ(m4);
+   MATRIX_XZ(m3) = MATRIX_XW(m4);
MATRIX_YX(m3) = MATRIX_YX(m4);
MATRIX_YY(m3) = MATRIX_YY(m4);
-   MATRIX_YZ(m3) = MATRIX_YZ(m4);
-   MATRIX_ZX(m3) = MATRIX_ZX(m4);
-   MATRIX_ZY(m3) = MATRIX_ZY(m4);
-   MATRIX_ZZ(m3) = MATRIX_ZZ(m4);
+   MATRIX_YZ(m3) = MATRIX_YW(m4);
+   MATRIX_ZX(m3) = MATRIX_WX(m4);
+   MATRIX_ZY(m3) = MATRIX_WY(m4);
+   MATRIX_ZZ(m3) = MATRIX_WW(m4);
 }
 
 EAPI void
@@ -678,18 +678,18 @@ eina_matrix3_matrix4_to(Eina_Matrix4 *m4, const 
Eina_Matrix3 *m3)
 {
MATRIX_XX(m4) = MATRIX_XX(m3);
MATRIX_XY(m4) = MATRIX_XY(m3);
-   MATRIX_XZ(m4) = MATRIX_XZ(m3);
-   MATRIX_XW(m4) = 0;
+   MATRIX_XZ(m4) = 0;
+   MATRIX_XW(m4) = MATRIX_XZ(m3);
MATRIX_YX(m4) = MATRIX_YX(m3);
MATRIX_YY(m4) = MATRIX_YY(m3);
-   MATRIX_YZ(m4) = MATRIX_YZ(m3);
-   MATRIX_YW(m4) = 0;
-   MATRIX_ZX(m4) = MATRIX_ZX(m3);
-   MATRIX_ZY(m4) = MATRIX_ZY(m3);
-   MATRIX_ZZ(m4) = MATRIX_ZZ(m3);
+   MATRIX_YZ(m4) = 0;
+   MATRIX_YW(m4) = MATRIX_YZ(m3);
+   MATRIX_ZX(m4) = 0;
+   MATRIX_ZY(m4) = 0;
+   MATRIX_ZZ(m4) = 1;
MATRIX_ZW(m4) = 0;
-   MATRIX_WX(m4) = 0;
-   MATRIX_WY(m4) = 0;
+   MATRIX_WX(m4) = MATRIX_ZX(m3);
+   MATRIX_WY(m4) = MATRIX_ZY(m3);
MATRIX_WZ(m4) = 0;
-   MATRIX_WW(m4) = 1;
+   MATRIX_WW(m4) = MATRIX_ZZ(m3);
 }
diff --git a/src/tests/eina/eina_test_matrix.c 
b/src/tests/eina/eina_test_matrix.c
index af1e005..51cf9d8 100644
--- a/src/tests/eina/eina_test_matrix.c
+++ b/src/tests/eina/eina_test_matrix.c
@@ -72,21 +72,20 @@ END_TEST
 
 START_TEST(eina_matrix4_2_3)
 {
-   Eina_Matrix4 m4, m4b;
-   Eina_Matrix3 m3;
+   Eina_Matrix4 m4;
+   Eina_Matrix3 m3, m3b;
 
eina_init();
 
-   eina_matrix4_values_set(m4,
-   1, 3, 2, 0,
-   3, 1, 4, 0,
-   2, 4, 1, 0,
-   0, 0, 0, 1);
+   eina_matrix3_values_set(m3,
+   1, 3, 2,
+   3, 1, 4,
+   2, 4, 1);
 
-   eina_matrix4_matrix3_to(m3, m4);
-   eina_matrix3_matrix4_to(m4b, m3);
+   eina_matrix3_matrix4_to(m4, m3);
+   eina_matrix4_matrix3_to(m3b, m4);
 
-   fail_if(memcmp(m4, m4b, sizeof (Eina_Matrix4)) != 0);
+   fail_if(memcmp(m3, m3b, sizeof (Eina_Matrix3)) != 0);
 
eina_shutdown();
 }

-- 




[EGIT] [core/efl] master 15/21: evas: improve simple VG example to interpolate a full VG tree.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit d194eeeba9e6a54bdd1ff7d406b2909261e34f08
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Thu Jul 2 21:51:54 2015 +0200

evas: improve simple VG example to interpolate a full VG tree.
---
 src/examples/evas/evas-vg-simple.c | 93 +-
 1 file changed, 82 insertions(+), 11 deletions(-)

diff --git a/src/examples/evas/evas-vg-simple.c 
b/src/examples/evas/evas-vg-simple.c
index 854bde8..7332ce7 100644
--- a/src/examples/evas/evas-vg-simple.c
+++ b/src/examples/evas/evas-vg-simple.c
@@ -50,6 +50,12 @@ typedef struct _Point
 int y;
 }Point;
 
+static Efl_VG *beginning = NULL;
+static Efl_VG *end = NULL;
+static Efl_VG *root = NULL;
+static double start_time = 0;
+static Ecore_Animator *anim = NULL;
+
 static
 Bezier bezierFromPoints(Point p1, Point p2,
 Point p3, Point p4)
@@ -440,18 +446,22 @@ vector_set(int x, int y, int w, int h)
eina_matrix3_identity(matrix);
eina_matrix3_rotate(matrix, radian);
 
-   Efl_VG *root = evas_object_vg_root_node_get(d.vg);
+   root = evas_object_vg_root_node_get(d.vg);
//eo_do(root, evas_vg_node_transformation_set(matrix));
 
-   Efl_VG *bg = eo_add(EFL_VG_SHAPE_CLASS, root);
+   Efl_VG *bg = eo_add(EFL_VG_SHAPE_CLASS, root,
+   efl_vg_name_set(bg));
_rect_add(bg, 0, 0 , vg_w, vg_h);
evas_vg_node_origin_set(bg, 0,0);
evas_vg_shape_stroke_width_set(bg, 1.0);
evas_vg_node_color_set(bg, 80, 80, 80, 80);
 
-   Efl_VG *shape = eo_add(EFL_VG_SHAPE_CLASS, root);
-   Efl_VG *rgradient = eo_add(EFL_VG_GRADIENT_RADIAL_CLASS, root);
-   Efl_VG *lgradient = eo_add(EFL_VG_GRADIENT_LINEAR_CLASS, root);
+   Efl_VG *shape = eo_add(EFL_VG_SHAPE_CLASS, root,
+  efl_vg_name_set(shape));
+   Efl_VG *rgradient = eo_add(EFL_VG_GRADIENT_RADIAL_CLASS, root,
+  efl_vg_name_set(rgradient));
+   Efl_VG *lgradient = eo_add(EFL_VG_GRADIENT_LINEAR_CLASS, root,
+  efl_vg_name_set(lgradient));
 
_arcto(shape, 0, 0, 100, 100, 25, 330);
 
@@ -492,7 +502,8 @@ vector_set(int x, int y, int w, int h)
evas_vg_node_color_set(shape, 0, 0, 255, 255);
evas_vg_shape_stroke_color_set(shape, 0, 0, 255, 128);
 
-   Efl_VG *rect = eo_add(EFL_VG_SHAPE_CLASS, root);
+   Efl_VG *rect = eo_add(EFL_VG_SHAPE_CLASS, root,
+ efl_vg_name_set(rect));
_rect_add(rect, 0, 0, 100, 100);
evas_vg_node_origin_set(rect, 100, 100);
evas_vg_shape_fill_set(rect, lgradient);
@@ -500,7 +511,8 @@ vector_set(int x, int y, int w, int h)
evas_vg_shape_stroke_join_set(rect, EFL_GFX_JOIN_ROUND);
evas_vg_shape_stroke_color_set(rect, 255, 255, 255, 255);
 
-   Efl_VG *rect1 = eo_add(EFL_VG_SHAPE_CLASS, root);
+   Efl_VG *rect1 = eo_add(EFL_VG_SHAPE_CLASS, root,
+  efl_vg_name_set(rect1));
_rect_add(rect1, 0, 0, 70, 70);
evas_vg_node_origin_set(rect1, 50, 70);
evas_vg_shape_stroke_scale_set(rect1, 2);
@@ -508,7 +520,8 @@ vector_set(int x, int y, int w, int h)
evas_vg_shape_stroke_join_set(rect1, EFL_GFX_JOIN_ROUND);
evas_vg_shape_stroke_color_set(rect1, 0, 100, 80, 100);
 
-   Efl_VG *circle = eo_add(EFL_VG_SHAPE_CLASS, root);
+   Efl_VG *circle = eo_add(EFL_VG_SHAPE_CLASS, root,
+   efl_vg_name_set(circle));
_arcto(circle, 0, 0, 250, 100, 30, 300);
evas_vg_shape_fill_set(circle, lgradient);
//evas_vg_node_transformation_set(matrix),
@@ -516,24 +529,80 @@ vector_set(int x, int y, int w, int h)
evas_vg_node_color_set(circle, 50, 0, 0, 50);
 
// Foreground
-   Efl_VG *fg = eo_add(EFL_VG_SHAPE_CLASS, root);
+   Efl_VG *fg = eo_add(EFL_VG_SHAPE_CLASS, root,
+   efl_vg_name_set(fg));
_rect_add(fg, 0, 0, vg_w, vg_h);
evas_vg_node_origin_set(fg, 0, 0);
evas_vg_shape_stroke_width_set(fg, 5.0);
evas_vg_shape_stroke_join_set(fg, EFL_GFX_JOIN_ROUND);
evas_vg_shape_stroke_color_set(fg, 70, 70, 0, 70);
 
-   Efl_VG *tst = eo_add(EFL_VG_SHAPE_CLASS, root);
+   Efl_VG *tst = eo_add(EFL_VG_SHAPE_CLASS, root,
+efl_vg_name_set(tst));
evas_vg_shape_shape_append_rect(tst, 50, 25, 200, 200, 3, 5);
evas_vg_node_color_set(tst, 0, 0, 200, 200);
evas_vg_shape_stroke_width_set(tst, 2);
evas_vg_shape_stroke_color_set(tst, 255, 0, 0, 255);
 
-   Efl_VG *vc = eo_add(EFL_VG_SHAPE_CLASS, root);
+   Efl_VG *vc = eo_add(EFL_VG_SHAPE_CLASS, root,
+ efl_vg_name_set(vc));
evas_vg_shape_shape_append_circle(vc, 100, 100, 23);
evas_vg_node_color_set(vc, 0, 200, 0, 255);
evas_vg_shape_stroke_width_set(vc, 4);
evas_vg_shape_stroke_color_set(vc, 255, 0, 0, 255);
+
+   beginning = eo_add(EFL_VG_CONTAINER_CLASS, NULL,
+  efl_vg_dup(root));
+   end = eo_add(EFL_VG_CONTAINER_CLASS, 

[EGIT] [core/efl] master 17/21: efl: fix Efl.Gfx.Shape.Dup to use const parameter.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 86b53cbefc3ca5d8d2e7bca4b9dff5438f1ef7b4
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Wed Jul 29 01:17:53 2015 +0200

efl: fix Efl.Gfx.Shape.Dup to use const parameter.
---
 src/lib/efl/interfaces/efl_gfx_shape.c  | 2 +-
 src/lib/efl/interfaces/efl_gfx_shape.eo | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/efl/interfaces/efl_gfx_shape.c 
b/src/lib/efl/interfaces/efl_gfx_shape.c
index a01c62d..b054ca7 100644
--- a/src/lib/efl/interfaces/efl_gfx_shape.c
+++ b/src/lib/efl/interfaces/efl_gfx_shape.c
@@ -424,7 +424,7 @@ _efl_gfx_shape_equal_commands(Eo *obj EINA_UNUSED,
 }
 
 static void
-_efl_gfx_shape_dup(Eo *obj, Efl_Gfx_Shape_Data *pd, Eo *dup_from)
+_efl_gfx_shape_dup(Eo *obj, Efl_Gfx_Shape_Data *pd, const Eo *dup_from)
 {
const Efl_Gfx_Dash *dash = NULL;
Efl_Gfx_Shape_Data *from;
diff --git a/src/lib/efl/interfaces/efl_gfx_shape.eo 
b/src/lib/efl/interfaces/efl_gfx_shape.eo
index 01cd2df..d8a926c 100644
--- a/src/lib/efl/interfaces/efl_gfx_shape.eo
+++ b/src/lib/efl/interfaces/efl_gfx_shape.eo
@@ -176,7 +176,7 @@ mixin Efl.Gfx.Shape
 @since 1.14
   ]]
 params {
-  @in dup_from: Eo.Base *; [[Shape object from where data will be 
copied.]]
+  @in dup_from: const(Eo.Base)*; [[Shape object from where data will 
be copied.]]
 }
   }
   bounds_get {

-- 




[EGIT] [core/efl] master 09/21: eina: add eina_matrix4_inverse.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit bb926e2dc72740a5c6eac9954be91f1d12bc492a
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Wed Jun 24 18:57:46 2015 +0200

eina: add eina_matrix4_inverse.
---
 src/lib/eina/eina_matrix.c | 163 +
 src/lib/eina/eina_matrix.h |  10 +++
 2 files changed, 173 insertions(+)

diff --git a/src/lib/eina/eina_matrix.c b/src/lib/eina/eina_matrix.c
index a43c5b2..6219004 100644
--- a/src/lib/eina/eina_matrix.c
+++ b/src/lib/eina/eina_matrix.c
@@ -752,3 +752,166 @@ eina_matrix4_normalized(Eina_Matrix4 *out, const 
Eina_Matrix4 *in)
 
return EINA_TRUE;
 }
+
+EAPI Eina_Bool
+eina_matrix4_inverse(Eina_Matrix4 *out, const Eina_Matrix4 *in)
+{
+   double det;
+
+   MATRIX_XX(out) =
+   MATRIX_YY(in)  * MATRIX_ZZ(in) * MATRIX_WW(in)
+ - MATRIX_YY(in)  * MATRIX_ZW(in) * MATRIX_WZ(in)
+ - MATRIX_ZY(in)  * MATRIX_YZ(in)  * MATRIX_WW(in)
+ + MATRIX_ZY(in)  * MATRIX_YW(in)  * MATRIX_WZ(in)
+ + MATRIX_WY(in) * MATRIX_YZ(in)  * MATRIX_ZW(in)
+ - MATRIX_WY(in) * MATRIX_YW(in)  * MATRIX_ZZ(in);
+
+   MATRIX_YX(out) =
+ - MATRIX_YX(in)  * MATRIX_ZZ(in) * MATRIX_WW(in)
+ + MATRIX_YX(in)  * MATRIX_ZW(in) * MATRIX_WZ(in)
+ + MATRIX_ZX(in)  * MATRIX_YZ(in)  * MATRIX_WW(in)
+ - MATRIX_ZX(in)  * MATRIX_YW(in)  * MATRIX_WZ(in)
+ - MATRIX_WX(in) * MATRIX_YZ(in)  * MATRIX_ZW(in)
+ + MATRIX_WX(in) * MATRIX_YW(in)  * MATRIX_ZZ(in);
+
+   MATRIX_ZX(out) =
+   MATRIX_YX(in)  * MATRIX_ZY(in) * MATRIX_WW(in)
+ - MATRIX_YX(in)  * MATRIX_ZW(in) * MATRIX_WY(in)
+ - MATRIX_ZX(in)  * MATRIX_YY(in) * MATRIX_WW(in)
+ + MATRIX_ZX(in)  * MATRIX_YW(in) * MATRIX_WY(in)
+ + MATRIX_WX(in) * MATRIX_YY(in) * MATRIX_ZW(in)
+ - MATRIX_WX(in) * MATRIX_YW(in) * MATRIX_ZY(in);
+
+   MATRIX_WX(out) =
+ - MATRIX_YX(in)  * MATRIX_ZY(in) * MATRIX_WZ(in)
+ + MATRIX_YX(in)  * MATRIX_ZZ(in) * MATRIX_WY(in)
+ + MATRIX_ZX(in)  * MATRIX_YY(in) * MATRIX_WZ(in)
+ - MATRIX_ZX(in)  * MATRIX_YZ(in) * MATRIX_WY(in)
+ - MATRIX_WX(in) * MATRIX_YY(in) * MATRIX_ZZ(in)
+ + MATRIX_WX(in) * MATRIX_YZ(in) * MATRIX_ZY(in);
+
+   MATRIX_XY(out) =
+ - MATRIX_XY(in)  * MATRIX_ZZ(in) * MATRIX_WW(in)
+ + MATRIX_XY(in)  * MATRIX_ZW(in) * MATRIX_WZ(in)
+ + MATRIX_ZY(in)  * MATRIX_XZ(in) * MATRIX_WW(in)
+ - MATRIX_ZY(in)  * MATRIX_XW(in) * MATRIX_WZ(in)
+ - MATRIX_WY(in) * MATRIX_XZ(in) * MATRIX_ZW(in)
+ + MATRIX_WY(in) * MATRIX_XW(in) * MATRIX_ZZ(in);
+
+   MATRIX_YY(out) =
+   MATRIX_XX(in)  * MATRIX_ZZ(in) * MATRIX_WW(in)
+ - MATRIX_XX(in)  * MATRIX_ZW(in) * MATRIX_WZ(in)
+ - MATRIX_ZX(in)  * MATRIX_XZ(in) * MATRIX_WW(in)
+ + MATRIX_ZX(in)  * MATRIX_XW(in) * MATRIX_WZ(in)
+ + MATRIX_WX(in) * MATRIX_XZ(in) * MATRIX_ZW(in)
+ - MATRIX_WX(in) * MATRIX_XW(in) * MATRIX_ZZ(in);
+
+   MATRIX_ZY(out) =
+ - MATRIX_XX(in)  * MATRIX_ZY(in) * MATRIX_WW(in)
+ + MATRIX_XX(in)  * MATRIX_ZW(in) * MATRIX_WY(in)
+ + MATRIX_ZX(in)  * MATRIX_XY(in) * MATRIX_WW(in)
+ - MATRIX_ZX(in)  * MATRIX_XW(in) * MATRIX_WY(in)
+ - MATRIX_WX(in) * MATRIX_XY(in) * MATRIX_ZW(in)
+ + MATRIX_WX(in) * MATRIX_XW(in) * MATRIX_ZY(in);
+
+   MATRIX_WY(out) =
+   MATRIX_XX(in)  * MATRIX_ZY(in) * MATRIX_WZ(in)
+ - MATRIX_XX(in)  * MATRIX_ZZ(in) * MATRIX_WY(in)
+ - MATRIX_ZX(in)  * MATRIX_XY(in) * MATRIX_WZ(in)
+ + MATRIX_ZX(in)  * MATRIX_XZ(in) * MATRIX_WY(in)
+ + MATRIX_WX(in) * MATRIX_XY(in) * MATRIX_ZZ(in)
+ - MATRIX_WX(in) * MATRIX_XZ(in) * MATRIX_ZY(in);
+
+   MATRIX_XZ(out) =
+   MATRIX_XY(in)  * MATRIX_YZ(in) * MATRIX_WW(in)
+ - MATRIX_XY(in)  * MATRIX_YW(in) * MATRIX_WZ(in)
+ - MATRIX_YY(in)  * MATRIX_XZ(in) * MATRIX_WW(in)
+ + MATRIX_YY(in)  * MATRIX_XW(in) * MATRIX_WZ(in)
+ + MATRIX_WY(in) * MATRIX_XZ(in) * MATRIX_YW(in)
+ - MATRIX_WY(in) * MATRIX_XW(in) * MATRIX_YZ(in);
+
+   MATRIX_YZ(out) =
+ - MATRIX_XX(in)  * MATRIX_YZ(in) * MATRIX_WW(in)
+ + MATRIX_XX(in)  * MATRIX_YW(in) * MATRIX_WZ(in)
+ + MATRIX_YX(in)  * MATRIX_XZ(in) * MATRIX_WW(in)
+ - MATRIX_YX(in)  * MATRIX_XW(in) * MATRIX_WZ(in)
+ - MATRIX_WX(in) * MATRIX_XZ(in) * MATRIX_YW(in)
+ + MATRIX_WX(in) * MATRIX_XW(in) * MATRIX_YZ(in);
+
+   MATRIX_ZZ(out) =
+   MATRIX_XX(in)  * MATRIX_YY(in) * MATRIX_WW(in)
+ - MATRIX_XX(in)  * MATRIX_YW(in) * MATRIX_WY(in)
+ - MATRIX_YX(in)  * MATRIX_XY(in) * MATRIX_WW(in)
+ + MATRIX_YX(in)  * MATRIX_XW(in) * MATRIX_WY(in)
+ + MATRIX_WX(in) * MATRIX_XY(in) * MATRIX_YW(in)
+ - MATRIX_WX(in) * MATRIX_XW(in) * MATRIX_YY(in);
+
+   MATRIX_WZ(out) =
+ - MATRIX_XX(in)  * MATRIX_YY(in) * MATRIX_WZ(in)
+ + MATRIX_XX(in)  * MATRIX_YZ(in) * MATRIX_WY(in)
+ + MATRIX_YX(in)  * MATRIX_XY(in) * MATRIX_WZ(in)
+ - MATRIX_YX(in)  * MATRIX_XZ(in) * MATRIX_WY(in)
+ - MATRIX_WX(in) * 

[EGIT] [core/efl] master 03/21: evas: allow parent during dup to be an Evas_Object_VG.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 126edbb48c4f065fe68cb4d60760102498d93ad2
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Sat Jul 4 02:28:33 2015 +0200

evas: allow parent during dup to be an Evas_Object_VG.
---
 src/lib/evas/canvas/evas_vg_node.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_vg_node.c 
b/src/lib/evas/canvas/evas_vg_node.c
index 0f73808..901e550 100644
--- a/src/lib/evas/canvas/evas_vg_node.c
+++ b/src/lib/evas/canvas/evas_vg_node.c
@@ -238,9 +238,13 @@ _efl_vg_base_parent_checked_get(Eo *obj,
  goto on_error;
   }
  }
+   else if (eo_isa(*parent, EVAS_VG_CLASS))
+ {
+goto on_error;
+ }
else if (*parent != NULL)
  {
-ERR(Parent of unauthorized class.);
+ERR(Parent of unauthorized class '%s'., 
eo_class_name_get(eo_class_get(*parent)));
 goto on_error;
  }
 

-- 




[EGIT] [core/efl] master 01/01: Eo base: clean up parent removal in destructor.

2015-08-21 Thread Tom Hacohen
tasn pushed a commit to branch master.

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

commit 93ade6f4ce4a336dfcdc748a09dd35003591978b
Author: Tom Hacohen t...@stosb.com
Date:   Fri Aug 21 17:19:47 2015 +0100

Eo base: clean up parent removal in destructor.

This cleans up the changes in 8689d54471aafdd7a5b5a27ce116bf2ab68c1042.
This commit reduces code duplication, and fixes broken handling of
overridden parent_set().
---
 src/lib/eo/eo_base_class.c | 13 ++---
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
index ff62cda..0c5f3ef 100644
--- a/src/lib/eo/eo_base_class.c
+++ b/src/lib/eo/eo_base_class.c
@@ -986,15 +986,14 @@ _eo_base_destructor(Eo *obj, Eo_Base_Data *pd)
 child = eina_list_data_get(pd-children);
 eo_do(child, eo_parent_set(NULL));
  }
-   // remove child from its parent on destruction - ha to be done
+
if (pd-parent)
  {
-Eo_Base_Data *parent_pd;
-
-parent_pd = eo_data_scope_get(pd-parent, EO_BASE_CLASS);
-parent_pd-children = eina_list_remove_list(parent_pd-children,
-pd-parent_list);
-pd-parent_list = NULL;
+/* If we have a parent still at the time of destruction, it means that
+ * ref was already (arguably erroneously unrefed) so we need to ref
+ * before it gets unrefed again. */
+eo_ref(obj);
+eo_do(obj, eo_parent_set(NULL));
  }
 
_eo_generic_data_del_all(pd);

-- 




[EGIT] [core/efl] master 02/21: evas: add support for interpolating Efl_VG_Node tree.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 7cb92ff35d3e49c53368b6fe4ade1d2a732018fc
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Tue Jun 16 16:28:19 2015 +0200

evas: add support for interpolating Efl_VG_Node tree.
---
 src/lib/evas/canvas/efl_vg_base.eo|   8 ++
 src/lib/evas/canvas/efl_vg_container.eo   |   1 +
 src/lib/evas/canvas/efl_vg_gradient.eo|   1 +
 src/lib/evas/canvas/efl_vg_gradient_linear.eo |   1 +
 src/lib/evas/canvas/efl_vg_gradient_radial.eo |   1 +
 src/lib/evas/canvas/efl_vg_shape.eo   |   1 +
 src/lib/evas/canvas/evas_vg_container.c   |  38 ++
 src/lib/evas/canvas/evas_vg_gradient.c|  43 ++
 src/lib/evas/canvas/evas_vg_gradient_linear.c |  31 +
 src/lib/evas/canvas/evas_vg_gradient_radial.c |  32 +
 src/lib/evas/canvas/evas_vg_node.c| 184 ++
 src/lib/evas/canvas/evas_vg_private.h |  12 ++
 src/lib/evas/canvas/evas_vg_shape.c   |  34 +
 13 files changed, 387 insertions(+)

diff --git a/src/lib/evas/canvas/efl_vg_base.eo 
b/src/lib/evas/canvas/efl_vg_base.eo
index 1567f5a..7ddfce5 100644
--- a/src/lib/evas/canvas/efl_vg_base.eo
+++ b/src/lib/evas/canvas/efl_vg_base.eo
@@ -88,6 +88,14 @@ abstract Efl.VG.Base (Eo.Base, Efl.Gfx.Base, Efl.Gfx.Stack)
 @out r: Eina.Rectangle; [[bounding box to be returned.]]
  }
   }
+  interpolate {
+return: bool;
+params {
+  @in from: const(Efl.VG.Base)*;
+  @in to: const(Efl.VG.Base)*;
+  @in pos_map: double;
+}
+  }
}
implements {
   Eo.Base.parent.set;
diff --git a/src/lib/evas/canvas/efl_vg_container.eo 
b/src/lib/evas/canvas/efl_vg_container.eo
index 19a7b30..b3a6ec4 100644
--- a/src/lib/evas/canvas/efl_vg_container.eo
+++ b/src/lib/evas/canvas/efl_vg_container.eo
@@ -16,5 +16,6 @@ class Efl.VG.Container (Efl.VG.Base)
   Eo.Base.constructor;
   Eo.Base.destructor;
   Efl.VG.Base.bounds_get;
+  Efl.VG.Base.interpolate;
}
 }
diff --git a/src/lib/evas/canvas/efl_vg_gradient.eo 
b/src/lib/evas/canvas/efl_vg_gradient.eo
index de78039..959da5b 100644
--- a/src/lib/evas/canvas/efl_vg_gradient.eo
+++ b/src/lib/evas/canvas/efl_vg_gradient.eo
@@ -6,5 +6,6 @@ abstract Efl.VG.Gradient (Efl.VG.Base, Efl.Gfx.Gradient.Base)
   Efl.Gfx.Gradient.Base.stop.get;
   Efl.Gfx.Gradient.Base.spread.set;
   Efl.Gfx.Gradient.Base.spread.get;
+  Efl.VG.Base.interpolate;
}
 }
diff --git a/src/lib/evas/canvas/efl_vg_gradient_linear.eo 
b/src/lib/evas/canvas/efl_vg_gradient_linear.eo
index 4aaddd4..aecfe4e 100644
--- a/src/lib/evas/canvas/efl_vg_gradient_linear.eo
+++ b/src/lib/evas/canvas/efl_vg_gradient_linear.eo
@@ -7,6 +7,7 @@ class Efl.VG.Gradient_Linear (Efl.VG.Gradient, 
Efl.Gfx.Gradient.Linear)
   Efl.Gfx.Gradient.Linear.end.set;
   Efl.Gfx.Gradient.Linear.end.get;
   Efl.VG.Base.bounds_get;
+  Efl.VG.Base.interpolate;
   Eo.Base.constructor;
   Eo.Base.destructor;
}
diff --git a/src/lib/evas/canvas/efl_vg_gradient_radial.eo 
b/src/lib/evas/canvas/efl_vg_gradient_radial.eo
index 62eb086..bd99848 100644
--- a/src/lib/evas/canvas/efl_vg_gradient_radial.eo
+++ b/src/lib/evas/canvas/efl_vg_gradient_radial.eo
@@ -9,6 +9,7 @@ class Efl.VG.Gradient_Radial (Efl.VG.Gradient, 
Efl.Gfx.Gradient.Radial)
   Efl.Gfx.Gradient.Radial.focal.set;
   Efl.Gfx.Gradient.Radial.focal.get; 
   Efl.VG.Base.bounds_get;
+  Efl.VG.Base.interpolate;
   Eo.Base.constructor;
   Eo.Base.destructor;
}
diff --git a/src/lib/evas/canvas/efl_vg_shape.eo 
b/src/lib/evas/canvas/efl_vg_shape.eo
index 45d0d30..e2d5c27 100644
--- a/src/lib/evas/canvas/efl_vg_shape.eo
+++ b/src/lib/evas/canvas/efl_vg_shape.eo
@@ -41,6 +41,7 @@ class Efl.VG.Shape (Efl.VG.Base, Efl.Gfx.Shape)
   Efl.Gfx.Base.color_part.set;
   Efl.Gfx.Base.color_part.get;
   Efl.VG.Base.bounds_get;
+  Efl.VG.Base.interpolate;
   Eo.Base.constructor;
   Eo.Base.destructor;
}
diff --git a/src/lib/evas/canvas/evas_vg_container.c 
b/src/lib/evas/canvas/evas_vg_container.c
index e311260..683f5ce 100644
--- a/src/lib/evas/canvas/evas_vg_container.c
+++ b/src/lib/evas/canvas/evas_vg_container.c
@@ -97,6 +97,44 @@ _efl_vg_container_children_get(Eo *obj EINA_UNUSED, 
Efl_VG_Container_Data *pd)
return eina_list_iterator_new(pd-children);
 }
 
+static Eina_Bool
+_efl_vg_container_efl_vg_base_interpolate(Eo *obj,
+  Efl_VG_Container_Data *pd,
+  const Efl_VG_Base *from, const 
Efl_VG_Base *to,
+  double pos_map)
+{
+   Efl_VG_Container_Data *fd;
+   Efl_VG_Container_Data *td;
+   Eina_Iterator *it;
+   Eina_Hash_Tuple *tuple;
+   Eina_Bool r;
+
+   eo_do_super(obj, EFL_VG_CONTAINER_CLASS, r = 

[EGIT] [core/efl] master 01/21: evas: add an unique name for each Efl.VG.Base object and make it possible to find it from parent.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit d595324a8dbccabf80d13d8f22e59c6166b4c2b6
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Fri Jun 5 10:54:13 2015 +0200

evas: add an unique name for each Efl.VG.Base object and make it possible 
to find it from parent.
---
 src/lib/evas/canvas/efl_vg_base.eo  | 45 ---
 src/lib/evas/canvas/efl_vg_container.eo | 11 +++
 src/lib/evas/canvas/evas_vg_container.c | 23 ++
 src/lib/evas/canvas/evas_vg_node.c  | 55 +++--
 src/lib/evas/canvas/evas_vg_private.h   |  4 +++
 src/lib/evas/canvas/evas_vg_root_node.c | 13 +---
 6 files changed, 133 insertions(+), 18 deletions(-)

diff --git a/src/lib/evas/canvas/efl_vg_base.eo 
b/src/lib/evas/canvas/efl_vg_base.eo
index 1946464..1567f5a 100644
--- a/src/lib/evas/canvas/efl_vg_base.eo
+++ b/src/lib/evas/canvas/efl_vg_base.eo
@@ -3,6 +3,27 @@ abstract Efl.VG.Base (Eo.Base, Efl.Gfx.Base, Efl.Gfx.Stack)
eo_prefix: efl_vg;
legacy_prefix: evas_vg_node;
methods {
+  @property name {
+ set {
+/*@
+  Set an unique name from the parent point of view. @c NULL means
+  no name.
+  @since 1.15
+ */
+ }
+ get {
+/*@
+  Get an unique name from the parent point of view . @c NULL means
+  no name. When set a parent after the name what defined, it might
+  be forced back to NULL if the parent already has a node of that
+  name.
+  @since 1.15
+ */
+ }
+ values {
+name: const(char) *;
+ }
+  }
   @property transformation {
  set {
 [[Sets the transformation matrix to be used for this node object.
@@ -40,21 +61,21 @@ abstract Efl.VG.Base (Eo.Base, Efl.Gfx.Base, Efl.Gfx.Stack)
   }
   @property mask {
  set {
-}
-get {
-}
-values {
-   m: Efl_VG *;
-}
+ }
+ get {
+ }
+ values {
+m: Efl_VG *;
+ }
   }
 /*  quality {
  set {
-}
-get {
-}
-values {
-   Evas_VG_Quality q;
-}
+ }
+ get {
+ }
+ values {
+Evas_VG_Quality q;
+ }
   } */
   bounds_get {
  [[Give the bounding box in screen coordinate as being drawn.
diff --git a/src/lib/evas/canvas/efl_vg_container.eo 
b/src/lib/evas/canvas/efl_vg_container.eo
index 0c954e2..19a7b30 100644
--- a/src/lib/evas/canvas/efl_vg_container.eo
+++ b/src/lib/evas/canvas/efl_vg_container.eo
@@ -1,6 +1,17 @@
 class Efl.VG.Container (Efl.VG.Base)
 {
legacy_prefix: evas_vg_container;
+   methods {
+  child_get {
+ params {
+@in name: const(char)*;
+ }
+ return: Efl.VG.Base *;
+  }
+  children_get {
+ return: free(own(iteratorEfl.VG.Base **), eina_iterator_free) 
@warn_unused;
+  }
+   }
implements {
   Eo.Base.constructor;
   Eo.Base.destructor;
diff --git a/src/lib/evas/canvas/evas_vg_container.c 
b/src/lib/evas/canvas/evas_vg_container.c
index f3ee7c9..e311260 100644
--- a/src/lib/evas/canvas/evas_vg_container.c
+++ b/src/lib/evas/canvas/evas_vg_container.c
@@ -31,6 +31,8 @@ _efl_vg_container_eo_base_constructor(Eo *obj,
 {
Efl_VG_Base_Data *nd;
 
+   pd-names = eina_hash_stringshared_new(NULL);
+
obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
 
nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
@@ -45,6 +47,9 @@ _efl_vg_container_eo_base_destructor(Eo *obj,
  Efl_VG_Container_Data *pd EINA_UNUSED)
 {
eo_do_super(obj, MY_CLASS, eo_destructor());
+
+   eina_hash_free(pd-names);
+   pd-names = NULL;
 }
 
 static void
@@ -74,6 +79,24 @@ _efl_vg_container_efl_vg_base_bounds_get(Eo *obj EINA_UNUSED,
  }
 }
 
+static Efl_VG_Base *
+_efl_vg_container_child_get(Eo *obj EINA_UNUSED, Efl_VG_Container_Data *pd, 
const char *name)
+{
+   const char *tmp = eina_stringshare_add(name);
+   Efl_VG_Base *r;
+
+   r = eina_hash_find(pd-names, tmp);
+   eina_stringshare_del(tmp);
+
+   return r;
+}
+
+static Eina_Iterator *
+_efl_vg_container_children_get(Eo *obj EINA_UNUSED, Efl_VG_Container_Data *pd)
+{
+   return eina_list_iterator_new(pd-children);
+}
+
 EAPI Efl_VG*
 evas_vg_container_add(Efl_VG *parent)
 {
diff --git a/src/lib/evas/canvas/evas_vg_node.c 
b/src/lib/evas/canvas/evas_vg_node.c
index b1c8cbb..b54b7ba 100644
--- a/src/lib/evas/canvas/evas_vg_node.c
+++ b/src/lib/evas/canvas/evas_vg_node.c
@@ -277,6 +277,49 @@ _efl_vg_base_eo_base_destructor(Eo *obj, Efl_VG_Base_Data 
*pd)
 }
 
 static void
+_efl_vg_base_name_insert(Eo *obj, Efl_VG_Base_Data *pd, Efl_VG_Container_Data 
*cd)
+{
+   Eo *set;
+
+   if (!pd-name) 

[EGIT] [core/efl] master 19/21: eina: add API to join pahs, as well as path separators

2015-08-21 Thread Vincent Torri
cedric pushed a commit to branch master.

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

commit 33227fc15d7fe2dcf7bdb7a69b3c46034d3c43b1
Author: Vincent Torri vincent.to...@gmail.com
Date:   Thu Aug 13 08:11:15 2015 +0200

eina: add API to join pahs, as well as path separators

eina_str_join() is used a lot to contatenate paths, but the
separator should be '\' on Windows. So add 2 API and 2 defines for
more cross platform code

@feature

Signed-off-by: Cedric BAIL ced...@osg.samsung.com
---
 src/Makefile_Eina.am|  1 +
 src/lib/eina/eina_file.h| 38 ++
 src/lib/eina/eina_inline_file.x | 85 +
 3 files changed, 124 insertions(+)

diff --git a/src/Makefile_Eina.am b/src/Makefile_Eina.am
index 7537e8a..7e65a26 100644
--- a/src/Makefile_Eina.am
+++ b/src/Makefile_Eina.am
@@ -29,6 +29,7 @@ lib/eina/eina_inlist.h \
 lib/eina/eina_inline_inlist.x \
 lib/eina/eina_list.h \
 lib/eina/eina_file.h \
+lib/eina/eina_inline_file.x \
 lib/eina/eina_mempool.h \
 lib/eina/eina_module.h \
 lib/eina/eina_rectangle.h \
diff --git a/src/lib/eina/eina_file.h b/src/lib/eina/eina_file.h
index cf245e7..952e22c 100644
--- a/src/lib/eina/eina_file.h
+++ b/src/lib/eina/eina_file.h
@@ -28,6 +28,7 @@
 #include eina_array.h
 #include eina_iterator.h
 #include eina_tmpstr.h
+#include eina_str.h
 
 /**
  * @page eina_file_example_01_page
@@ -161,6 +162,29 @@ typedef enum {
  * @brief The constant defined as the highest value for PATH_MAX.
  */
 #define EINA_PATH_MAX 8192
+
+/**
+ * @def EINA_PATH_SEP_C
+ * @brief The constant defined the path separator as the character '\'
+ * on Windows and '/' otherwise.
+ *
+ * @since 1.16
+ */
+/**
+ * @def EINA_PATH_SEP_S
+ * @brief The constant defined the path separator as the string \ on Windows
+ * and / otherwise.
+ *
+ * @since 1.16
+ */
+#ifdef _WIN32
+# define EINA_PATH_SEP_C '\\'
+# define EINA_PATH_SEP_S \\
+#else
+# define EINA_PATH_SEP_C '/'
+# define EINA_PATH_SEP_S /
+#endif
+
 /**
  * @struct _Eina_File_Direct_Info
  * @brief The structure to store information of a path.
@@ -670,6 +694,20 @@ EAPI Eina_Iterator *eina_file_map_lines(Eina_File *file);
  */
 EAPI Eina_Bool eina_file_map_faulted(Eina_File *file, void *map);
 
+static inline size_t eina_file_path_join_len(char *dst,
+ size_t size,
+ const char *a,
+ size_t a_len,
+ const char *b,
+ size_t b_len);
+
+static inline size_t eina_file_path_join(char *dst,
+ size_t size,
+ const char *a,
+ const char *b);
+
+#include eina_inline_file.x
+
 /**
  * @}
  */
diff --git a/src/lib/eina/eina_inline_file.x b/src/lib/eina/eina_inline_file.x
new file mode 100644
index 000..d9dffdd
--- /dev/null
+++ b/src/lib/eina/eina_inline_file.x
@@ -0,0 +1,85 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2015 Vincent Torri
+ *
+ * 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 http://www.gnu.org/licenses/.
+ */
+
+#ifndef EINA_FILE_INLINE_H_
+#define EINA_FILE_INLINE_H_
+
+/**
+ * @addtogroup Eina_File_Group File
+ *
+ * @{
+ */
+
+/**
+ * @brief Join two paths of known length.
+ *
+ * @param dst The buffer to store the result.
+ * @param size Size (in byte) of the buffer.
+ * @param a First path to use.
+ * @param a_len length of @p a.
+ * @param b Second path to use.
+ * @param b_len length of @p b.
+ * @return The number of characters printed.
+ *
+ * This function is similar to eina_str_join_len(), but the separator
+ * is '\' on Windows and '/' otherwise.
+ *
+ * @see eina_str_join_len()
+ * @see eina_file_path_join()
+ *
+ * @since 1.16
+ */
+static inline size_t
+eina_file_path_join_len(char *dst,
+size_t size,
+const char *a,
+size_t a_len,
+const char *b,
+size_t b_len)
+{
+   return eina_str_join_len(dst, size, EINA_PATH_SEP_C, a, a_len, b, b_len);
+}
+
+/**
+ * @brief Join two paths of known length.
+ *
+ * @param dst The buffer to 

[EGIT] [core/efl] master 08/21: eina: test eina_matrix4_normalized.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 57def1eed069a8d45929af82d0ed3eff12c371b9
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Wed Jun 24 17:23:43 2015 +0200

eina: test eina_matrix4_normalized.
---
 src/tests/eina/eina_test_matrix.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/tests/eina/eina_test_matrix.c 
b/src/tests/eina/eina_test_matrix.c
index 51cf9d8..6808aad 100644
--- a/src/tests/eina/eina_test_matrix.c
+++ b/src/tests/eina/eina_test_matrix.c
@@ -29,6 +29,7 @@
 START_TEST(eina_matrix4)
 {
Eina_Matrix4 m;
+   Eina_Matrix4 n;
double xx, xy, xz, xw,
  yx, yy, yz, yw,
  zx, zy, zz, zw,
@@ -43,6 +44,9 @@ START_TEST(eina_matrix4)
0, 0, 0, 1);
fail_if(eina_matrix4_type_get(m) != EINA_MATRIX_TYPE_IDENTITY);
 
+   fail_if(!eina_matrix4_normalized(n, m));
+   fail_if(eina_matrix4_type_get(n) != EINA_MATRIX_TYPE_IDENTITY);
+
eina_matrix4_values_get(m,
xx, xy, xz, xw,
yx, yy, yz, yw,

-- 




[EGIT] [core/efl] master 07/21: eina: add eina_matrix4_normalized.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 694149c773af18b5d5a3abb883cf7d521bb4cf56
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Wed Jun 24 17:23:23 2015 +0200

eina: add eina_matrix4_normalized.
---
 src/lib/eina/eina_matrix.c | 29 +
 src/lib/eina/eina_matrix.h | 15 +++
 2 files changed, 44 insertions(+)

diff --git a/src/lib/eina/eina_matrix.c b/src/lib/eina/eina_matrix.c
index 2e994df..a43c5b2 100644
--- a/src/lib/eina/eina_matrix.c
+++ b/src/lib/eina/eina_matrix.c
@@ -23,6 +23,7 @@
 #include eina_private.h
 
 #include math.h
+#include float.h
 
 #include eina_fp.h
 #include eina_rectangle.h
@@ -723,3 +724,31 @@ eina_matrix4_determinant(const Eina_Matrix4 *m)
  - MATRIX_XY(m) * MATRIX_YX(m) * MATRIX_ZZ(m) * MATRIX_WW(m)
  + MATRIX_XX(m) * MATRIX_YY(m) * MATRIX_ZZ(m) * MATRIX_WW(m);
 }
+
+EAPI Eina_Bool
+eina_matrix4_normalized(Eina_Matrix4 *out, const Eina_Matrix4 *in)
+{
+   double det;
+
+   det = eina_matrix4_determinant(in);
+   if (fabs(det)  DBL_EPSILON) return EINA_FALSE;
+
+   MATRIX_XX(out) = MATRIX_XX(in) / det;
+   MATRIX_XY(out) = MATRIX_XY(in) / det;
+   MATRIX_XZ(out) = MATRIX_XZ(in) / det;
+   MATRIX_XW(out) = MATRIX_XW(in) / det;
+   MATRIX_YX(out) = MATRIX_YX(in) / det;
+   MATRIX_YY(out) = MATRIX_YY(in) / det;
+   MATRIX_YZ(out) = MATRIX_YZ(in) / det;
+   MATRIX_YW(out) = MATRIX_YW(in) / det;
+   MATRIX_ZX(out) = MATRIX_ZX(in) / det;
+   MATRIX_ZY(out) = MATRIX_ZY(in) / det;
+   MATRIX_ZZ(out) = MATRIX_ZZ(in) / det;
+   MATRIX_ZW(out) = MATRIX_ZW(in) / det;
+   MATRIX_WX(out) = MATRIX_WX(in) / det;
+   MATRIX_WY(out) = MATRIX_WY(in) / det;
+   MATRIX_WZ(out) = MATRIX_WZ(in) / det;
+   MATRIX_WW(out) = MATRIX_WW(in) / det;
+
+   return EINA_TRUE;
+}
diff --git a/src/lib/eina/eina_matrix.h b/src/lib/eina/eina_matrix.h
index 8dc7014..bf02f17 100644
--- a/src/lib/eina/eina_matrix.h
+++ b/src/lib/eina/eina_matrix.h
@@ -525,6 +525,21 @@ EAPI void eina_matrix4_values_get(const Eina_Matrix4 *m,
 EAPI double eina_matrix4_determinant(const Eina_Matrix4 *m);
 
 /**
+ * @brief Return the determinant of the given matrix.
+ *
+ * @param m The matrix.
+ * @return The determinant.
+ *
+ * This function returns the determinant of the matrix @p m. No check
+ * is done on @p m.
+ *
+ * @since 1.15
+ */
+EAPI Eina_Bool eina_matrix4_normalized(Eina_Matrix4 *out,
+   const Eina_Matrix4 *in);
+
+
+/**
  * @brief Convert an Eina_Matrix4 into an Eina_Matrix3.
  *
  * @param m3 The destination Eina_Matrix3.

-- 




[EGIT] [core/efl] master 11/21: eina: add eina_matrix4_transpose.

2015-08-21 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 26f33dc6bd848160577eb9308e3bc77c09dc0aed
Author: Cedric BAIL ced...@osg.samsung.com
Date:   Thu Jun 25 14:52:55 2015 +0200

eina: add eina_matrix4_transpose.
---
 src/lib/eina/eina_matrix.c | 21 +
 src/lib/eina/eina_matrix.h | 12 
 2 files changed, 33 insertions(+)

diff --git a/src/lib/eina/eina_matrix.c b/src/lib/eina/eina_matrix.c
index 6219004..96a0971 100644
--- a/src/lib/eina/eina_matrix.c
+++ b/src/lib/eina/eina_matrix.c
@@ -915,3 +915,24 @@ eina_matrix4_inverse(Eina_Matrix4 *out, const Eina_Matrix4 
*in)
 
return EINA_TRUE;
 }
+
+EAPI void
+eina_matrix4_transpose(Eina_Matrix4 *out, const Eina_Matrix4 *in)
+{
+   MATRIX_XX(out) = MATRIX_XX(in);
+   MATRIX_XY(out) = MATRIX_YX(in);
+   MATRIX_XZ(out) = MATRIX_ZX(in);
+   MATRIX_XW(out) = MATRIX_WX(in);
+   MATRIX_YX(out) = MATRIX_XY(in);
+   MATRIX_YY(out) = MATRIX_YY(in);
+   MATRIX_YZ(out) = MATRIX_ZY(in);
+   MATRIX_YW(out) = MATRIX_WY(in);
+   MATRIX_ZX(out) = MATRIX_XZ(in);
+   MATRIX_ZY(out) = MATRIX_YZ(in);
+   MATRIX_ZZ(out) = MATRIX_ZZ(in);
+   MATRIX_ZW(out) = MATRIX_WZ(in);
+   MATRIX_WX(out) = MATRIX_XW(in);
+   MATRIX_WY(out) = MATRIX_YW(in);
+   MATRIX_WZ(out) = MATRIX_ZW(in);
+   MATRIX_WW(out) = MATRIX_WW(in);
+}
diff --git a/src/lib/eina/eina_matrix.h b/src/lib/eina/eina_matrix.h
index 1f11be3..ab6be4c 100644
--- a/src/lib/eina/eina_matrix.h
+++ b/src/lib/eina/eina_matrix.h
@@ -550,6 +550,18 @@ EAPI Eina_Bool eina_matrix4_normalized(Eina_Matrix4 *out,
 EAPI Eina_Bool eina_matrix4_inverse(Eina_Matrix4 *out, const Eina_Matrix4 *in);
 
 /**
+ * @brief Return the transpose of the given matrix.
+ *
+ * @param out The transpose matrix
+ * @param in The matrix.
+ *
+ * Just going to swap row and column.
+ *
+ * @since 1.15
+ */
+EAPI void eina_matrix4_transpose(Eina_Matrix4 *out, const Eina_Matrix4 *in);
+
+/**
  * @brief Convert an Eina_Matrix4 into an Eina_Matrix3.
  *
  * @param m3 The destination Eina_Matrix3.

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 04/05: track focus time for x11 canvas focus, unset client focus on x11 canvas focus-in

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit a8f301748cdd217a2944fc65b897cdf1a5d6a525
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 15:50:10 2015 -0400

track focus time for x11 canvas focus, unset client focus on x11 canvas 
focus-in

in the case that the canvas window has just had focus set on it, apply this 
focus
and ensure that no client retains focus

this resolves a race condition where focusing the compositor canvas - 
client
extremely quickly would result in a client trying to steal focus when it was
not actually focused

a notable (but trivial) side effect is that now when flipping desks at high 
speed while using
mouse-based focus policies, the user is almost guaranteed to end on a desk 
which
has open windows on it
---
 src/bin/e_comp_x.c | 20 ++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index a69390e..835bd80 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -39,6 +39,7 @@ struct _E_Comp_X_Data
 };
 
 static unsigned int focus_time = 0;
+static unsigned int focus_canvas_time = 0;
 static Ecore_Timer *focus_timer;
 static E_Client *mouse_client;
 static Eina_List *handlers = NULL;
@@ -90,7 +91,11 @@ _e_comp_x_focus_check(E_Comp *comp)
/* if there is no new focused or it is a non-X client,
 * focus comp canvas on focus-out */
if ((!focused) || (e_pixmap_type_get(focused-pixmap) != E_PIXMAP_TYPE_X))
- e_grabinput_focus(comp-ee_win, E_FOCUS_METHOD_PASSIVE);
+ {
+focus_canvas_time = ecore_x_current_time_get();
+focus_time = 0;
+e_grabinput_focus(comp-ee_win, E_FOCUS_METHOD_PASSIVE);
+ }
 }
 
 static void
@@ -2574,7 +2579,17 @@ _e_comp_x_focus_in(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Event_W
E_Client *ec, *focused;
 
ec = _e_comp_x_client_find_by_window(ev-win);
-   if (!ec) return ECORE_CALLBACK_RENEW;
+   if (!ec)
+ {
+if ((ev-win == e_comp_get(NULL)-ee_win)  (ev-time = 
focus_canvas_time)  (!focus_time))
+  {
+ focused = e_client_focused_get();
+ if (focused)
+   evas_object_focus_set(focused-frame, 0);
+ focus_canvas_time = 0;
+  }
+return ECORE_CALLBACK_RENEW;
+ }
 
/* block refocus attempts on iconic clients
 * these result from iconifying a client during a grab */
@@ -4245,6 +4260,7 @@ static void
 _e_comp_x_hook_client_focus_set(void *d EINA_UNUSED, E_Client *ec)
 {
focus_time = ecore_x_current_time_get();
+   focus_canvas_time = 0;
_e_comp_x_focus_setdown(ec);
if ((e_pixmap_type_get(ec-pixmap) != E_PIXMAP_TYPE_X))
  {

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 01/05: don't watch dirty smart cb for desmirror clients with unusable pixmaps

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit 83351e34dc43ef2c86092f8c90f027f37fd63c2d
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 13:10:06 2015 -0400

don't watch dirty smart cb for desmirror clients with unusable pixmaps

this seems to fix an extremely rare issue related to both deskmirror 
artifacts
and crashes in deskmirror during restart; I was only able to reproduce the 
crash
twice in the span of over an hour of testing and it seemed to disappear 
after
this change
---
 src/bin/e_deskmirror.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c
index 313e8f9..bf1f6e6 100644
--- a/src/bin/e_deskmirror.c
+++ b/src/bin/e_deskmirror.c
@@ -636,7 +636,7 @@ _e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object *obj)
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, 
(Evas_Object_Event_Cb)_comp_object_configure, m);
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, 
(Evas_Object_Event_Cb)_comp_object_configure, m);
evas_object_smart_callback_add(obj, frame_recalc_done, 
_e_deskmirror_mirror_frame_recalc_cb, m);
-   if ((!ec-redirected)  (!ec-new_client))
+   if ((!ec-redirected)  (!ec-new_client)  
e_pixmap_usable_get(ec-pixmap))
  evas_object_smart_callback_add(obj, dirty, _comp_object_dirty, m);
sd-mirrors = eina_inlist_append(sd-mirrors, EINA_INLIST_GET(m));
eina_hash_add(sd-mirror_hash, obj, m);

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 05/05: simplify e_desk_show visibility unsetting, reject recursive desk flips

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit 44b7790cce9ec8fdb406648424ac38ea21bab441
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 15:53:10 2015 -0400

simplify e_desk_show visibility unsetting, reject recursive desk flips

the currently visible desk for a zone is stored on the zone struct, so
iterating here is unnecessary. furthermore, at the time when a desk is 
hidden,
a client may begin receiving mouse events which could trigger a focus-set 
and
lead to another desk flip. at this time and only this time, the current 
desk
will be marked as not visible, and so this sort of desk show must be 
rejected

fix T2676
---
 src/bin/e_desk.c | 53 +++--
 1 file changed, 23 insertions(+), 30 deletions(-)

diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c
index e0c2b88..8877796 100644
--- a/src/bin/e_desk.c
+++ b/src/bin/e_desk.c
@@ -227,52 +227,45 @@ e_desk_show(E_Desk *desk)
Edje_Message_Int_Set *msg;
Eina_List *l;
E_Shelf *es;
-   int was_zone = 0, x, y, dx = 0, dy = 0;
+   E_Desk *desk2;
+   int was_zone = 0, dx = 0, dy = 0;
 
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
if (desk-visible) return;
 
+   desk2 = e_desk_at_xy_get(desk-zone, desk-zone-desk_x_current, 
desk-zone-desk_y_current);
+   if ((!starting)  (!desk2-visible)) return;
eev = E_NEW(E_Event_Desk_Before_Show, 1);
eev-desk = e_desk_current_get(desk-zone);
e_object_ref(E_OBJECT(eev-desk));
ecore_event_add(E_EVENT_DESK_BEFORE_SHOW, eev,
_e_desk_event_desk_before_show_free, NULL);
 
-   for (x = 0; x  desk-zone-desk_x_count; x++)
+   if (desk2-visible)
  {
-for (y = 0; y  desk-zone-desk_y_count; y++)
+desk2-visible = 0;
+if (e_config-desk_flip_wrap)
   {
- E_Desk *desk2;
-
- desk2 = e_desk_at_xy_get(desk-zone, x, y);
- if (desk2-visible)
+ /* current desk (desk2) is last desk, switching to first desk 
(desk) */
+ if ((!desk-x)  (!desk-y)  (desk2-x + 1 == 
desk-zone-desk_x_count)  (desk2-y + 1 == desk-zone-desk_y_count))
{
-  desk2-visible = 0;
-  if (e_config-desk_flip_wrap)
-{
-   /* current desk (desk2) is last desk, switching to 
first desk (desk) */
-   if ((!desk-x)  (!desk-y)  (desk2-x + 1 == 
desk-zone-desk_x_count)  (desk2-y + 1 == desk-zone-desk_y_count))
- {
-dx = (desk-x != desk2-x) ? 1 : 0;
-dy = (desk-y != desk2-y) ? 1 : 0;
- }
-   /* current desk (desk2) is first desk, switching to 
last desk (desk) */
-   else if ((!desk2-x)  (!desk2-y)  (desk-x + 1 == 
desk-zone-desk_x_count)  (desk-y + 1 == desk-zone-desk_y_count))
- {
-dx = (desk-x != desk2-x) ? -1 : 0;
-dy = (desk-y != desk2-y) ? -1 : 0;
- }
-}
-  if ((!dx)  (!dy))
-{
-   dx = desk-x - desk2-x;
-   dy = desk-y - desk2-y;
-}
-  _e_desk_hide_begin(desk2, dx, dy);
-  break;
+  dx = (desk-x != desk2-x) ? 1 : 0;
+  dy = (desk-y != desk2-y) ? 1 : 0;
+   }
+ /* current desk (desk2) is first desk, switching to last desk 
(desk) */
+ else if ((!desk2-x)  (!desk2-y)  (desk-x + 1 == 
desk-zone-desk_x_count)  (desk-y + 1 == desk-zone-desk_y_count))
+   {
+  dx = (desk-x != desk2-x) ? -1 : 0;
+  dy = (desk-y != desk2-y) ? -1 : 0;
}
   }
+if ((!dx)  (!dy))
+  {
+ dx = desk-x - desk2-x;
+ dy = desk-y - desk2-y;
+  }
+_e_desk_hide_begin(desk2, dx, dy);
  }
 
desk-zone-desk_x_prev = desk-zone-desk_x_current;

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 02/05: add full damage for x11 override clients on resize configure event

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit 094fc3c15c17734aeca5462d1a4280e748a85552
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 14:51:33 2015 -0400

add full damage for x11 override clients on resize configure event

it seems that the reported damage events upon resizing an override window
are not accurate, and so we must force a full damage here while avoiding a
render queue in order to ensure that the full contents of the override will
be rendered in the next frame

fix T2045
---
 src/bin/e_comp_x.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 9b42382..a69390e 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -1456,6 +1456,11 @@ _e_comp_x_configure(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Event_
  {
 e_pixmap_dirty(ec-pixmap);
 evas_object_resize(ec-frame, ev-w, ev-h);
+if (ec-override  (!ec-input_only))
+  {
+ e_comp_object_damage(ec-frame, 0, 0, ev-w, ev-h);
+ e_comp_object_render_update_del(ec-frame);
+  }
  }
return ECORE_CALLBACK_RENEW;
 }

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 03/05: reject focus-set attempt if desk flip to client's desk was rejected

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit 625088f2962bd495f87c0f5d18a65a139944d45f
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 15:46:13 2015 -0400

reject focus-set attempt if desk flip to client's desk was rejected

in the case of recursive desk flips, toggling a desk's visibility may
erroneously send queued evas events to the client's frame object, leading
to a focus-set (mouse-based focus models) which triggers a desk flip
inside the original desk flip. this inner desk flip is spurious and
should be ignored
---
 src/bin/e_comp_object.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index e823a34..1dc9b0f 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -1459,6 +1459,7 @@ _e_comp_intercept_focus(void *data, Evas_Object *obj, 
Eina_Bool focus)
   {
  if (ec-desk-animate_count) return;
  e_desk_show(ec-desk);
+ if (!ec-desk-visible) return;
   }
  }
 

-- 




[EGIT] [core/enlightenment] master 01/06: Revert deskmirror - fix dangling reference to mirror by refcounting it

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 466dd8d57db6f281e7faebc4d532d5bc77e02dd7
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 12:58:11 2015 -0400

Revert deskmirror - fix dangling reference to mirror by refcounting it

This reverts commit 5404adc54fb7f49b435e736e375bf7368321a1b0.

I'm strongly against adding refcounts/nullchecks to hide bugs which
are caused by failure to properly track object existence. let's try to avoid
this sort of thing in the future
---
 src/bin/e_deskmirror.c | 23 +--
 1 file changed, 1 insertion(+), 22 deletions(-)

diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c
index e781ab8..fee6f30 100644
--- a/src/bin/e_deskmirror.c
+++ b/src/bin/e_deskmirror.c
@@ -41,7 +41,6 @@ typedef struct Mirror
Evas_Object *comp_object;
Evas_Object *mirror;
int x, y, w, h;
-   int ref;
Eina_Bool added : 1;
 } Mirror;
 
@@ -111,20 +110,6 @@ _mirror_scale_set(Mirror *m, float sc)
 }
 
 static void
-_mirror_ref(Mirror *m)
-{
-   m-ref++;
-}
-
-static void
-_mirror_unref(Mirror *m)
-{
-   m-ref--;
-   if (m-ref  0) return;
-   free(m);
-}
-
-static void
 _e_deskmirror_smart_reconfigure(E_Smart_Data *sd)
 {
e_layout_freeze(sd-layout);
@@ -352,10 +337,7 @@ _mirror_client_smart_del(Evas_Object *obj)
 evas_object_smart_callback_del_full(mb-m-ec-frame, shadow_change, 
_mirror_client_shadow_change, mb-frame);
  }
evas_object_del(mb-frame);
-   mb-frame = NULL;
evas_object_del(mb-mirror);
-   mb-mirror = NULL;
-   _mirror_unref(mb-m);
free(mb);
 }
 
@@ -492,13 +474,12 @@ _e_deskmirror_mirror_del_hash(Mirror *m)
evas_object_smart_callback_del_full(m-comp_object, frame_recalc_done, 
_e_deskmirror_mirror_frame_recalc_cb, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_DEL, 
_e_deskmirror_mirror_del_cb, m);
evas_object_del(m-mirror);
-   m-mirror = NULL;
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_SHOW, 
(Evas_Object_Event_Cb)_comp_object_show, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_HIDE, 
(Evas_Object_Event_Cb)_comp_object_hide, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_RESTACK, 
(Evas_Object_Event_Cb)_comp_object_stack, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_RESIZE, 
(Evas_Object_Event_Cb)_comp_object_configure, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_MOVE, 
(Evas_Object_Event_Cb)_comp_object_configure, m);
-   _mirror_unref(m);
+   free(m);
 }
 
 static Evas_Object *
@@ -511,7 +492,6 @@ _mirror_client_new(Mirror *m)
o = evas_object_smart_add(m-sd-e, _mirror_client_smart);
mb = evas_object_smart_data_get(o);
mb-m = m;
-   _mirror_ref(m);
mb-frame = edje_object_add(m-sd-e);
evas_object_name_set(mb-frame, mirror_border);
_mirror_client_theme_setup(mb, mb-frame);
@@ -676,7 +656,6 @@ _e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object *obj)
m-ec = ec;
m-sd = sd;
m-mirror = o;
-   m-ref = 1;
evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, 
(Evas_Object_Event_Cb)_comp_object_show, m);
evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, 
(Evas_Object_Event_Cb)_comp_object_hide, m);
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESTACK, 
(Evas_Object_Event_Cb)_comp_object_stack, m);

-- 




[EGIT] [core/enlightenment] master 02/06: don't watch dirty smart cb for desmirror clients with unusable pixmaps

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit d70667a0678b97ea74733b15017596085dc36330
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 13:10:06 2015 -0400

don't watch dirty smart cb for desmirror clients with unusable pixmaps

this seems to fix an extremely rare issue related to both deskmirror 
artifacts
and crashes in deskmirror during restart; I was only able to reproduce the 
crash
twice in the span of over an hour of testing and it seemed to disappear 
after
this change
---
 src/bin/e_deskmirror.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c
index fee6f30..85d130f 100644
--- a/src/bin/e_deskmirror.c
+++ b/src/bin/e_deskmirror.c
@@ -662,7 +662,7 @@ _e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object *obj)
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, 
(Evas_Object_Event_Cb)_comp_object_configure, m);
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, 
(Evas_Object_Event_Cb)_comp_object_configure, m);
evas_object_smart_callback_add(obj, frame_recalc_done, 
_e_deskmirror_mirror_frame_recalc_cb, m);
-   if ((!ec-redirected)  (!ec-new_client))
+   if ((!ec-redirected)  (!ec-new_client)  
e_pixmap_usable_get(ec-pixmap))
  evas_object_smart_callback_add(obj, dirty, _comp_object_dirty, m);
sd-mirrors = eina_inlist_append(sd-mirrors, EINA_INLIST_GET(m));
eina_hash_add(sd-mirror_hash, obj, m);

-- 




[EGIT] [core/enlightenment] master 06/06: simplify e_desk_show visibility unsetting, reject recursive desk flips

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 26b1e84e6fa7cdd2110dbac8ebd77d9942d1323a
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 15:53:10 2015 -0400

simplify e_desk_show visibility unsetting, reject recursive desk flips

the currently visible desk for a zone is stored on the zone struct, so
iterating here is unnecessary. furthermore, at the time when a desk is 
hidden,
a client may begin receiving mouse events which could trigger a focus-set 
and
lead to another desk flip. at this time and only this time, the current 
desk
will be marked as not visible, and so this sort of desk show must be 
rejected

fix T2676
---
 src/bin/e_desk.c | 53 +++--
 1 file changed, 23 insertions(+), 30 deletions(-)

diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c
index 3a43b23..a86cd6b 100644
--- a/src/bin/e_desk.c
+++ b/src/bin/e_desk.c
@@ -216,52 +216,45 @@ e_desk_show(E_Desk *desk)
Edje_Message_Int_Set *msg;
Eina_List *l;
E_Shelf *es;
-   int was_zone = 0, x, y, dx = 0, dy = 0;
+   E_Desk *desk2;
+   int was_zone = 0, dx = 0, dy = 0;
 
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
if (desk-visible) return;
 
+   desk2 = e_desk_at_xy_get(desk-zone, desk-zone-desk_x_current, 
desk-zone-desk_y_current);
+   if ((!starting)  (!desk2-visible)) return;
eev = E_NEW(E_Event_Desk_Before_Show, 1);
eev-desk = e_desk_current_get(desk-zone);
e_object_ref(E_OBJECT(eev-desk));
ecore_event_add(E_EVENT_DESK_BEFORE_SHOW, eev,
_e_desk_event_desk_before_show_free, NULL);
 
-   for (x = 0; x  desk-zone-desk_x_count; x++)
+   if (desk2-visible)
  {
-for (y = 0; y  desk-zone-desk_y_count; y++)
+desk2-visible = 0;
+if (e_config-desk_flip_wrap)
   {
- E_Desk *desk2;
-
- desk2 = e_desk_at_xy_get(desk-zone, x, y);
- if (desk2-visible)
+ /* current desk (desk2) is last desk, switching to first desk 
(desk) */
+ if ((!desk-x)  (!desk-y)  (desk2-x + 1 == 
desk-zone-desk_x_count)  (desk2-y + 1 == desk-zone-desk_y_count))
{
-  desk2-visible = 0;
-  if (e_config-desk_flip_wrap)
-{
-   /* current desk (desk2) is last desk, switching to 
first desk (desk) */
-   if ((!desk-x)  (!desk-y)  (desk2-x + 1 == 
desk-zone-desk_x_count)  (desk2-y + 1 == desk-zone-desk_y_count))
- {
-dx = (desk-x != desk2-x) ? 1 : 0;
-dy = (desk-y != desk2-y) ? 1 : 0;
- }
-   /* current desk (desk2) is first desk, switching to 
last desk (desk) */
-   else if ((!desk2-x)  (!desk2-y)  (desk-x + 1 == 
desk-zone-desk_x_count)  (desk-y + 1 == desk-zone-desk_y_count))
- {
-dx = (desk-x != desk2-x) ? -1 : 0;
-dy = (desk-y != desk2-y) ? -1 : 0;
- }
-}
-  if ((!dx)  (!dy))
-{
-   dx = desk-x - desk2-x;
-   dy = desk-y - desk2-y;
-}
-  _e_desk_hide_begin(desk2, dx, dy);
-  break;
+  dx = (desk-x != desk2-x) ? 1 : 0;
+  dy = (desk-y != desk2-y) ? 1 : 0;
}
+ /* current desk (desk2) is first desk, switching to last desk 
(desk) */
+ else if ((!desk2-x)  (!desk2-y)  (desk-x + 1 == 
desk-zone-desk_x_count)  (desk-y + 1 == desk-zone-desk_y_count))
+   {
+  dx = (desk-x != desk2-x) ? -1 : 0;
+  dy = (desk-y != desk2-y) ? -1 : 0;
+   }
+  }
+if ((!dx)  (!dy))
+  {
+ dx = desk-x - desk2-x;
+ dy = desk-y - desk2-y;
   }
+_e_desk_hide_begin(desk2, dx, dy);
  }
 
desk-zone-desk_x_prev = desk-zone-desk_x_current;

-- 




[EGIT] [core/enlightenment] master 03/06: add full damage for x11 override clients on resize configure event

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 74d9792e89820c2ad8b337959b2aca45ecfd9e6b
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 14:51:33 2015 -0400

add full damage for x11 override clients on resize configure event

it seems that the reported damage events upon resizing an override window
are not accurate, and so we must force a full damage here while avoiding a
render queue in order to ensure that the full contents of the override will
be rendered in the next frame

fix T2045
---
 src/bin/e_comp_x.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 1b4ca1a..e986daf 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -1479,6 +1479,11 @@ _e_comp_x_configure(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Event_
  {
 e_pixmap_dirty(ec-pixmap);
 evas_object_resize(ec-frame, ev-w, ev-h);
+if (ec-override  (!ec-input_only))
+  {
+ e_comp_object_damage(ec-frame, 0, 0, ev-w, ev-h);
+ e_comp_object_render_update_del(ec-frame);
+  }
  }
return ECORE_CALLBACK_RENEW;
 }

-- 




[EGIT] [core/enlightenment] master 01/01: remove dirty callback for deskmirror clients upon creating visual

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 40e6f35f2ef0252e3668813ab81856b779cc9d3e
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 17:13:48 2015 -0400

remove dirty callback for deskmirror clients upon creating visual

if another callback triggered the creation of a deskmirror visual while
the dirty callback was in place, a second mirror object would be created
leading to an orphaned mirror object which retained references to the dm
client and eventually resulting in a crash
---
 src/bin/e_deskmirror.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c
index 85d130f..c9c6a3d 100644
--- a/src/bin/e_deskmirror.c
+++ b/src/bin/e_deskmirror.c
@@ -549,6 +549,7 @@ _comp_object_check(Mirror *m)
if ((w  2) || (h  2)) return EINA_FALSE;
m-mirror = e_comp_object_util_mirror_add(m-comp_object);
if (!m-mirror) return EINA_FALSE;
+   evas_object_smart_callback_del(m-comp_object, dirty, _comp_object_dirty);
evas_object_name_set(m-mirror, m-mirror);
_e_deskmirror_mirror_setup(m);
return EINA_TRUE;
@@ -606,10 +607,9 @@ _comp_object_configure(Mirror *m, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UNU
 }
 
 static void
-_comp_object_dirty(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+_comp_object_dirty(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
 {
-   if (_comp_object_check(data))
- evas_object_smart_callback_del(obj, dirty, _comp_object_dirty);
+   _comp_object_check(data);
 }
 
 static Mirror *

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 01/01: remove dirty callback for deskmirror clients upon creating visual

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit ea64775132011dd2f2cc6096e645b326c64a1885
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 17:13:48 2015 -0400

remove dirty callback for deskmirror clients upon creating visual

if another callback triggered the creation of a deskmirror visual while
the dirty callback was in place, a second mirror object would be created
leading to an orphaned mirror object which retained references to the dm
client and eventually resulting in a crash
---
 src/bin/e_deskmirror.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c
index bf1f6e6..57f39d8 100644
--- a/src/bin/e_deskmirror.c
+++ b/src/bin/e_deskmirror.c
@@ -523,6 +523,7 @@ _comp_object_check(Mirror *m)
if ((w  2) || (h  2)) return EINA_FALSE;
m-mirror = e_comp_object_util_mirror_add(m-comp_object);
if (!m-mirror) return EINA_FALSE;
+   evas_object_smart_callback_del(m-comp_object, dirty, _comp_object_dirty);
evas_object_name_set(m-mirror, m-mirror);
_e_deskmirror_mirror_setup(m);
return EINA_TRUE;
@@ -580,10 +581,9 @@ _comp_object_configure(Mirror *m, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UNU
 }
 
 static void
-_comp_object_dirty(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+_comp_object_dirty(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
 {
-   if (_comp_object_check(data))
- evas_object_smart_callback_del(obj, dirty, _comp_object_dirty);
+   _comp_object_check(data);
 }
 
 static Mirror *

-- 




[EGIT] [core/enlightenment] annotated tag v0.19.9 created (now 07a836f)

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

discomfitor pushed a change to annotated tag v0.19.9
in repository core/enlightenment.

at  07a836f   (tag)
   tagging  068497017bfbf568307013b2ef50a02b32eb2958 (commit)
  replaces  v0.19.8
 tagged by  Mike Blumenkrantz
on  Fri Aug 21 17:54:37 2015 -0400

- Log -
0.19.9 release

Carsten Haitzler (1):
  e - systray - add more sizes to icon hunt to fix missing icons

Cedric BAIL (2):
  temperature: let's finally allow the temp process to rest also when 
enlightenment die.
  battery: let's finally allow the battery process to rest also when 
enlightenment die.

Mike Blumenkrantz (27):
  add event rect for deskmirror in pager/taskbar modes
  reject x11 NotifyVirtual and NotifyInferior mouse in events more 
accurately
  use better keybind activation logic
  do not modify E_Client-visible value in show/hide callbacks
  unset E_Client-want/take_focus flags in hide callback
  only use deferred focus-setting on desk flip focus if client is not 
visible
  don't set E_Client-changes.visible on successful show/hide
  set 'stopping' during logout action
  do not relaunch relaunchable quickaccess windows during logout
  redo fileman menus to only scan the first 100 items found
  feed mouse-up event during mouse down on menus
  force render queue and check for redirection on clients with 0x0 pixmaps
  add some smart callbacks for comp objects on redirect/dirty state change
  return false when failing to create a mirror during deskmirror obj check
  watch dirty smart cb for currently unredirected clients in deskmirror
  remove pager mirror delete callback during pager win delete
  remove dirty smart callback from deskmirror clients during client delete
  only check dirty smart callbacks on non-new_client deskmirror clients
  don't watch dirty smart cb for desmirror clients with unusable pixmaps
  add full damage for x11 override clients on resize configure event
  reject focus-set attempt if desk flip to client's desk was rejected
  track focus time for x11 canvas focus, unset client focus on x11 canvas 
focus-in
  simplify e_desk_show visibility unsetting, reject recursive desk flips
  remove dirty callback for deskmirror clients upon creating visual
  remove bz2 from dist
  19.9 release
  19.9 NEWS updates

---

No new revisions were added by this update.

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 01/04: e - systray - add more sizes to icon hunt to fix missing icons

2015-08-21 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit 46eadb3c1619347558f712766f94e736f2a661a6
Author: Carsten Haitzler (Rasterman) ras...@rasterman.com
Date:   Fri Aug 21 21:37:21 2015 +0900

e - systray - add more sizes to icon hunt to fix missing icons

some systray indicator icons are not found because the sizes are not
in the list. fix this. this SHOULD actually use our existing efreet
icon theme finding to auto-switch file based on size changes.
---
 src/modules/systray/e_mod_notifier_host.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/systray/e_mod_notifier_host.c 
b/src/modules/systray/e_mod_notifier_host.c
index 89a3d54..0cd7a26 100644
--- a/src/modules/systray/e_mod_notifier_host.c
+++ b/src/modules/systray/e_mod_notifier_host.c
@@ -80,7 +80,7 @@ image_load(const char *name, const char *path, Evas_Object 
*image)
 for (theme = themes; *theme; theme++)
   {
  struct stat st;
- unsigned int *i, sizes[] = { 24, 32, 48, 64, 128, 256, 0 };
+ unsigned int *i, sizes[] = { 16, 22, 24, 32, 36, 40, 48, 64, 72, 
96, 128, 192, 256, 512, 0 };
 
  snprintf(buf, sizeof(buf), %s/%s, path, *theme);
  if (stat(buf, st)) continue;

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 04/04: 19.9 NEWS updates

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit 068497017bfbf568307013b2ef50a02b32eb2958
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 17:48:47 2015 -0400

19.9 NEWS updates
---
 NEWS | 36 
 1 file changed, 36 insertions(+)

diff --git a/NEWS b/NEWS
index 50752e7..994cd09 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,39 @@
+Release 0.19.9:
+-
+Carsten @raster Haitzler (1):
+  e - systray - add more sizes to icon hunt to fix missing icons
+
+Cedric @cedric BAIL (2):
+  temperature: let's finally allow the temp process to rest also when 
enlightenment die.
+  battery: let's finally allow the battery process to rest also when 
enlightenment die.
+
+Mike @zmike Blumenkrantz (25):
+  add event rect for deskmirror in pager/taskbar modes
+  reject x11 NotifyVirtual and NotifyInferior mouse in events more 
accurately
+  use better keybind activation logic
+  do not modify E_Client-visible value in show/hide callbacks
+  unset E_Client-want/take_focus flags in hide callback
+  only use deferred focus-setting on desk flip focus if client is not 
visible
+  don't set E_Client-changes.visible on successful show/hide
+  set 'stopping' during logout action
+  do not relaunch relaunchable quickaccess windows during logout
+  redo fileman menus to only scan the first 100 items found
+  feed mouse-up event during mouse down on menus
+  force render queue and check for redirection on clients with 0x0 pixmaps
+  add some smart callbacks for comp objects on redirect/dirty state change
+  return false when failing to create a mirror during deskmirror obj check
+  watch dirty smart cb for currently unredirected clients in deskmirror
+  remove pager mirror delete callback during pager win delete
+  remove dirty smart callback from deskmirror clients during client delete
+  only check dirty smart callbacks on non-new_client deskmirror clients
+  don't watch dirty smart cb for desmirror clients with unusable pixmaps
+  add full damage for x11 override clients on resize configure event
+  reject focus-set attempt if desk flip to client's desk was rejected
+  track focus time for x11 canvas focus, unset client focus on x11 canvas 
focus-in
+  simplify e_desk_show visibility unsetting, reject recursive desk flips
+  remove dirty callback for deskmirror clients upon creating visual
+  remove bz2 from dist
+
 Release 0.19.8:
 -
 Carsten Haitzler (3):

-- 




[EGIT] [website/www-content] master 01/01: Wiki page download-latest changed with summary [] by Mike Blumenkrantz

2015-08-21 Thread Mike Blumenkrantz
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit b6ee54705964028bd0dd02df1f47cae18a4b3576
Author: Mike Blumenkrantz zm...@enlightenment.org
Date:   Fri Aug 21 15:05:58 2015 -0700

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

diff --git a/pages/download-latest.txt b/pages/download-latest.txt
index b49fedf..77c4654 100644
--- a/pages/download-latest.txt
+++ b/pages/download-latest.txt
@@ -5,7 +5,7 @@ emotion_generic_players_v = 1.15.0
 evas_generic_loaders_v= 1.15.0
 python_efl_v  = 1.15.0
 
-enlightenment_v   = 0.19.8
+enlightenment_v   = 0.19.9
 terminology_v = 0.8.0
 rage_v= 0.1.4
 econnman_v= 1.1

-- 




[EGIT] [website/www-content] master 01/01: Wiki page start-release changed with summary [e release] by Mike Blumenkrantz

2015-08-21 Thread Mike Blumenkrantz
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit a28f14d4fee435512f0d89474c0dfa9484ce08f0
Author: Mike Blumenkrantz zm...@enlightenment.org
Date:   Fri Aug 21 15:05:44 2015 -0700

Wiki page start-release changed with summary [e release] by Mike 
Blumenkrantz
---
 pages/start-release.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/start-release.txt b/pages/start-release.txt
index 803ecef..b3631da 100644
--- a/pages/start-release.txt
+++ b/pages/start-release.txt
@@ -1,3 +1,3 @@
 note
-EFL 1.15.0 and Enlightenment 0.19.8 are out - go to our [[download]] page.
+EFL 1.15.0 and Enlightenment 0.19.9 are out - go to our [[download]] page.
 /note
\ No newline at end of file

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 03/04: 19.9 release

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit bbade3286a8e70e7c2eb29dce11fefef6b7e1f59
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Fri Aug 21 17:45:29 2015 -0400

19.9 release
---
 configure.ac | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index effb932..9245cb2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,11 +2,11 @@
 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
 m4_define([v_maj], [0])
 m4_define([v_min], [19])
-m4_define([v_mic], [8])
+m4_define([v_mic], [9])
 m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2/dev/null || echo 
0) | tr -d '\n']))dnl
 ##--   When released, remove the dnl on the below line
 m4_undefine([v_rev])
-m4_define([relname], [0.19.8])
+m4_define([relname], [0.19.9])
 ##--   When doing snapshots - change soname. remove dnl on below line
 m4_define([relname], [ver-serious-0.19])
 m4_define([v_rel], [-release relname])

-- 




[EGIT] [core/enlightenment] enlightenment-0.19 02/04: remove bz2 from dist

2015-08-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.19.

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

commit edc5ff9f7b42a9f81ba453011cfed0102fbd982b
Author: Mike Blumenkrantz zm...@osg.samsung.com
Date:   Wed Aug 19 18:19:45 2015 -0400

remove bz2 from dist

apparently people don't use this anymore or something
---
 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 6372940..effb932 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,7 +34,7 @@ AH_BOTTOM([
 #endif /* EFL_CONFIG_H__ */
 ])
 
-AM_INIT_AUTOMAKE([1.11 dist-bzip2 dist-xz -Wno-portability])
+AM_INIT_AUTOMAKE([1.11 dist-xz -Wno-portability])
 AM_SILENT_RULES([yes])
 
 AC_USE_SYSTEM_EXTENSIONS

-- 




[EGIT] [core/enlightenment] master 02/02: deskmirror - fix dangling reference to mirror by refcounting it

2015-08-21 Thread Carsten Haitzler
raster pushed a commit to branch master.

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

commit 5404adc54fb7f49b435e736e375bf7368321a1b0
Author: Carsten Haitzler (Rasterman) ras...@rasterman.com
Date:   Fri Aug 21 15:33:50 2015 +0900

deskmirror - fix dangling reference to mirror by refcounting it

add deskmirror refs to avoid segv on shutdown/restart due to mb-m
becoming a pointer to freed (now garbage) memory, so trace every
ref/unref and count them to get it right. crash gone!
---
 src/bin/e_deskmirror.c | 23 ++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c
index fee6f30..e781ab8 100644
--- a/src/bin/e_deskmirror.c
+++ b/src/bin/e_deskmirror.c
@@ -41,6 +41,7 @@ typedef struct Mirror
Evas_Object *comp_object;
Evas_Object *mirror;
int x, y, w, h;
+   int ref;
Eina_Bool added : 1;
 } Mirror;
 
@@ -110,6 +111,20 @@ _mirror_scale_set(Mirror *m, float sc)
 }
 
 static void
+_mirror_ref(Mirror *m)
+{
+   m-ref++;
+}
+
+static void
+_mirror_unref(Mirror *m)
+{
+   m-ref--;
+   if (m-ref  0) return;
+   free(m);
+}
+
+static void
 _e_deskmirror_smart_reconfigure(E_Smart_Data *sd)
 {
e_layout_freeze(sd-layout);
@@ -337,7 +352,10 @@ _mirror_client_smart_del(Evas_Object *obj)
 evas_object_smart_callback_del_full(mb-m-ec-frame, shadow_change, 
_mirror_client_shadow_change, mb-frame);
  }
evas_object_del(mb-frame);
+   mb-frame = NULL;
evas_object_del(mb-mirror);
+   mb-mirror = NULL;
+   _mirror_unref(mb-m);
free(mb);
 }
 
@@ -474,12 +492,13 @@ _e_deskmirror_mirror_del_hash(Mirror *m)
evas_object_smart_callback_del_full(m-comp_object, frame_recalc_done, 
_e_deskmirror_mirror_frame_recalc_cb, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_DEL, 
_e_deskmirror_mirror_del_cb, m);
evas_object_del(m-mirror);
+   m-mirror = NULL;
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_SHOW, 
(Evas_Object_Event_Cb)_comp_object_show, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_HIDE, 
(Evas_Object_Event_Cb)_comp_object_hide, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_RESTACK, 
(Evas_Object_Event_Cb)_comp_object_stack, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_RESIZE, 
(Evas_Object_Event_Cb)_comp_object_configure, m);
evas_object_event_callback_del_full(m-comp_object, EVAS_CALLBACK_MOVE, 
(Evas_Object_Event_Cb)_comp_object_configure, m);
-   free(m);
+   _mirror_unref(m);
 }
 
 static Evas_Object *
@@ -492,6 +511,7 @@ _mirror_client_new(Mirror *m)
o = evas_object_smart_add(m-sd-e, _mirror_client_smart);
mb = evas_object_smart_data_get(o);
mb-m = m;
+   _mirror_ref(m);
mb-frame = edje_object_add(m-sd-e);
evas_object_name_set(mb-frame, mirror_border);
_mirror_client_theme_setup(mb, mb-frame);
@@ -656,6 +676,7 @@ _e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object *obj)
m-ec = ec;
m-sd = sd;
m-mirror = o;
+   m-ref = 1;
evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, 
(Evas_Object_Event_Cb)_comp_object_show, m);
evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, 
(Evas_Object_Event_Cb)_comp_object_hide, m);
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESTACK, 
(Evas_Object_Event_Cb)_comp_object_stack, m);

-- 




[EGIT] [admin/devs] master 01/02: developers/ngc891: drop all keys and switch to EdDSA

2015-08-21 Thread Jerome Pinot
ngc891 pushed a commit to branch master.

http://git.enlightenment.org/admin/devs.git/commit/?id=0e3f95bccd9b93ccf96538b92d2aa154ae14bc24

commit 0e3f95bccd9b93ccf96538b92d2aa154ae14bc24
Author: Jerome Pinot ngc...@gmail.com
Date:   Fri Aug 21 15:28:18 2015 +0900

developers/ngc891: drop all keys and switch to EdDSA
---
 developers/ngc891/id_ed25519.pub | 1 +
 developers/ngc891/id_rsa.pub | 1 -
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/developers/ngc891/id_ed25519.pub b/developers/ngc891/id_ed25519.pub
new file mode 100644
index 000..50c3c8a
--- /dev/null
+++ b/developers/ngc891/id_ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 
C3NzaC1lZDI1NTE5IJb17vNR9Uvuf/H4p15zYHg1w3XiC7YxpFEJ5XXKyyyU ngc891@star
diff --git a/developers/ngc891/id_rsa.pub b/developers/ngc891/id_rsa.pub
deleted file mode 100644
index cd9d82e..000
--- a/developers/ngc891/id_rsa.pub
+++ /dev/null
@@ -1 +0,0 @@
-ssh-rsa 
B3NzaC1yc2EDAQABAAABAQCkdGeoTNFSzm17ZeLWzXVJBwXLN5hu1p6CIdLOze6wQ1cjnqhwrfKbdSz2DZxnT9WjwxMtuP2OVM9/i1aN0ZjDxY2BWBKhRxrxNpNQb2RR9L3Ks0df+WKD6ClBoUdbINUrnxOlbYYtP6FElkhPVnoeyJGwhmSU5jN0+k/7i8L0wayUGscgCMlW97fMSDva25/pPDiBOoxeyEIE2y9TuHZXTv/+aJbbF+9oMrx9iIqwsuW/NIOcN+2E5R/43D2yS/IrrBykdaTBicfN/nINgcv26XBrWLzWdvfsi/LUM4TWK4uEMAcb55xdtxuOzB0Lk5arwnXUIzg7cva3JpM8mEkj
 ngc891@comet

-- 




[EGIT] [admin/devs] master 02/02: developers/ngc891: update info.txt

2015-08-21 Thread Jerome Pinot
ngc891 pushed a commit to branch master.

http://git.enlightenment.org/admin/devs.git/commit/?id=c07eaa51cc769feb42e9ea37376901553b3689df

commit c07eaa51cc769feb42e9ea37376901553b3689df
Author: Jerome Pinot ngc...@gmail.com
Date:   Fri Aug 21 15:33:51 2015 +0900

developers/ngc891: update info.txt
---
 developers/ngc891/info.txt | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/developers/ngc891/info.txt b/developers/ngc891/info.txt
index 8054649..370705f 100644
--- a/developers/ngc891/info.txt
+++ b/developers/ngc891/info.txt
@@ -1,10 +1,10 @@
-Login:ngc891
-IRC Nick: ngc891
-Name: Jerome Pinot
-Location: Daejeon, South Korea
-E-Mail:   ngc...@gmail.com
-WWW:  http://ngc891.blogdns.net
-Managing: SlackE17, ePeriodique, elemines
-Contributing: documentation, cleaning
-Platform: Slackware (Linux), OpenBSD
-GeoData:  36.364 127.358
+Login:ngc891
+IRC Nick: ngc891
+Name: Jerome Pinot
+Location: Seoul, South Korea
+E-Mail:   ngc...@gmail.com
+WWW:  http://ngc891.blogdns.net
+Managing: SlackE17, ePeriodique, elemines
+Contributing: documentation, cleaning
+Platform: Slackware (Linux), OpenBSD
+GeoData:  37.606 126.960

-- 




[EGIT] [core/enlightenment] master 01/02: e shelf - small missing set of signals - tell theme when inset scrolls

2015-08-21 Thread Carsten Haitzler
raster pushed a commit to branch master.

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

commit 10cd94a953c78d4fda94c42db40798eebc743263
Author: Carsten Haitzler (Rasterman) ras...@rasterman.com
Date:   Wed Aug 19 19:56:02 2015 +0900

e shelf - small missing set of signals - tell theme when inset scrolls

the shelf theme actually can't know if there is scrollable content in
that direction when a shelf item has autoscroll on and has content in
that direction. this is kind of a missing theme capability that is
incredibly useful if you want to do certain kinds of themes. this is
fairly minor and i'd consider ok for e20 release as we aren't even
doing alphas yet...
---
 src/bin/e_gadcon.c | 58 ++
 src/bin/e_gadcon.h |  1 +
 2 files changed, 59 insertions(+)

diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c
index cf49ca8..9e8cdf0 100644
--- a/src/bin/e_gadcon.c
+++ b/src/bin/e_gadcon.c
@@ -13,6 +13,7 @@ static void 
_e_gadcon_client_free(E_Gadcon_Client *gcc);
 
 static void _e_gadcon_moveresize_handle(E_Gadcon_Client 
*gcc);
 static Eina_Bool_e_gadcon_cb_client_scroll_timer(void *data);
+static void 
_e_gadcon_client_scroll_state_update(E_Gadcon_Client *gcc);
 static Eina_Bool_e_gadcon_cb_client_scroll_animator(void 
*data);
 static void _e_gadcon_cb_client_frame_mouse_move(void 
*data, Evas *e, Evas_Object *obj, void *event_info);
 static void _e_gadcon_cb_client_frame_moveresize(void 
*data, Evas *e, Evas_Object *obj, void *event_info);
@@ -1004,6 +1005,9 @@ _e_gadcon_client_box_del(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_
 static void
 _e_gadcon_client_box_hints_changed(void *data EINA_UNUSED, Evas *e 
EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
+   E_Gadcon_Client *gcc = data;
+   if (gcc-autoscroll)
+ _e_gadcon_client_scroll_state_update(gcc);
evas_object_size_hint_min_set(obj, 0, 0);
 }
 
@@ -1455,6 +1459,8 @@ e_gadcon_client_autoscroll_set(E_Gadcon_Client *gcc, int 
autoscroll)
gcc-aspect.h);
 }
}
+   if (gcc-autoscroll)
+ _e_gadcon_client_scroll_state_update(gcc);
 }
 
 E_API void
@@ -2172,6 +2178,7 @@ _e_gadcon_moveresize_handle(E_Gadcon_Client *gcc)
  }
evas_object_size_hint_min_set(gcc-o_base, w, h);
evas_object_size_hint_max_set(gcc-o_base, mw, mh);
+   _e_gadcon_client_scroll_state_update(gcc);
 }
 
 static void
@@ -2204,6 +2211,52 @@ _e_gadcon_cb_client_scroll_timer(void *data)
return ECORE_CALLBACK_RENEW;
 }
 
+static void
+_e_gadcon_client_scroll_state_update(E_Gadcon_Client *gcc)
+{
+   Evas_Coord box_w, box_h, base_w, base_h;
+
+   if (gcc-o_frame)
+ {
+evas_object_geometry_get(gcc-o_box, NULL, NULL, box_w, box_h);
+evas_object_geometry_get(gcc-o_base, NULL, NULL, base_w, base_h);
+
+if (((elm_box_horizontal_get(gcc-o_box))  (box_w = base_w)) ||
+((!elm_box_horizontal_get(gcc-o_box))  (box_h = base_h)))
+  {
+ if (gcc-pscrollstate != 0)
+   {
+  edje_object_signal_emit(gcc-o_frame, e,state,scroll,none, 
e);
+  gcc-pscrollstate = 0;
+   }
+  }
+else if (gcc-scroll_pos = 0.01)
+  {
+ if (gcc-pscrollstate != 1)
+   {
+  edje_object_signal_emit(gcc-o_frame, 
e,state,scroll,begin, e);
+  gcc-pscrollstate = 1;
+   }
+  }
+else if (gcc-scroll_pos = 0.99)
+  {
+ if (gcc-pscrollstate != 3)
+   {
+  edje_object_signal_emit(gcc-o_frame, e,state,scroll,end, 
e);
+  gcc-pscrollstate = 3;
+   }
+  }
+else
+  {
+ if (gcc-pscrollstate != 2)
+   {
+  edje_object_signal_emit(gcc-o_frame, 
e,state,scroll,middle, e);
+  gcc-pscrollstate = 2;
+   }
+  }
+ }
+}
+
 static Eina_Bool
 _e_gadcon_cb_client_scroll_animator(void *data)
 {
@@ -2220,6 +2273,8 @@ _e_gadcon_cb_client_scroll_animator(void *data)
 return ECORE_CALLBACK_CANCEL;
  }
 
+   _e_gadcon_client_scroll_state_update(gcc);
+
if (gcc-scroll_cb.func)
  gcc-scroll_cb.func(gcc-scroll_cb.data);
 
@@ -2562,6 +2617,7 @@ _e_gadcon_cb_client_resize(void *data, Evas *evas 
EINA_UNUSED, Evas_Object *obj,
evas_object_geometry_get(obj, NULL, NULL, w, h);
if (gcc-o_control) evas_object_resize(gcc-o_control, w, h);
if (gcc-o_event) evas_object_resize(gcc-o_event, w, h);
+   _e_gadcon_client_scroll_state_update(gcc);
 }
 
 static void
@@ -3314,6 +3370,8 @@ _e_gadcon_client_cb_menu_autoscroll(void *data, E_Menu *m 
EINA_UNUSED, E_Menu_It