[EGIT] [core/enlightenment] enlightenment-0.17 01/01: menu: match file looked by code.
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.
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.
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.
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.
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.
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.
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').
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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