Re: [E-devel] fails to compile efl 0.18.3 with wayland

2016-12-05 Thread Vasiliy Tolstov
2016-12-06 10:32 GMT+03:00 Jean-Philippe André :
> Yes, master is fixed and 1.18.4 will be released soon.


Thanks! I'm waiting

-- 
Vasiliy Tolstov,
e-mail: v.tols...@selfip.ru

--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] fails to compile efl 0.18.3 with wayland

2016-12-05 Thread Jean-Philippe André
On 6 December 2016 at 16:27, Vasiliy Tolstov  wrote:

> Hi! I'm try to build efl and enlightenment for fedora 25 with wayland
> support.
> https://copr-be.cloud.fedoraproject.org/results/
> vtolstov/yoctocloud/fedora-25-x86_64/00485185-efl/build.log.gz
>
> Does master have needed fix?
>
>
Yes, master is fixed and 1.18.4 will be released soon.

-- 
Jean-Philippe André
--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[E-devel] fails to compile efl 0.18.3 with wayland

2016-12-05 Thread Vasiliy Tolstov
Hi! I'm try to build efl and enlightenment for fedora 25 with wayland support.
https://copr-be.cloud.fedoraproject.org/results/vtolstov/yoctocloud/fedora-25-x86_64/00485185-efl/build.log.gz

Does master have needed fix?

-- 
Vasiliy Tolstov,
e-mail: v.tols...@selfip.ru

--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/01: efl_net check openssl x509 check o runtime dlsym checks

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

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

commit 96d90fa5d655fcc18bfb6fc21a17f7b0f70cd586
Author: Carsten Haitzler (Rasterman) 
Date:   Tue Dec 6 16:14:01 2016 +0900

efl_net check openssl x509 check o runtime dlsym checks

this fixes T4814
---
 src/lib/ecore_con/efl_net_ssl_conn-openssl.c | 57 +---
 1 file changed, 43 insertions(+), 14 deletions(-)

diff --git a/src/lib/ecore_con/efl_net_ssl_conn-openssl.c 
b/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
index dbc540d..9572a34 100644
--- a/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
+++ b/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
@@ -13,6 +13,22 @@
 # include 
 #endif
 
+#if defined HAVE_DLOPEN && ! defined _WIN32
+# include 
+#endif
+
+#ifdef HAVE_EVIL
+# include 
+#endif
+
+#ifdef HAVE_ESCAPE
+# include 
+#endif
+
+#ifdef HAVE_EXOTIC
+# include 
+#endif
+
 /* OpenSSL's BIO is the abstraction for I/O, provide one for Efl.Io.* */
 static int
 efl_net_socket_bio_create(BIO *b)
@@ -390,33 +406,44 @@ efl_net_ssl_conn_read(Efl_Net_Ssl_Conn *conn, 
Eina_Rw_Slice *slice)
return 0;
 }
 
-#ifndef X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT
 /* OpenSSL 1.0.2 introduced X509_check_host() and X509_check_ip_asc()
  * and with them the X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT define.
  */
 static int
-X509_check_host(X509 *x, const char *chk, size_t chklen, unsigned int flags, 
char **peername)
+_replace_X509_check_host(X509 *x EINA_UNUSED,
+ const char *chk EINA_UNUSED,
+ size_t chklen EINA_UNUSED,
+ unsigned int flags EINA_UNUSED,
+ char **peername EINA_UNUSED)
 {
ERR("your OpenSSL do not support X509_check_ip_asc() - no verification can 
be done");
return 0;
-   (void)x;
-   (void)chk;
-   (void)chklen;
-   (void)flags;
-   (void)peername;
 }
 
 static int
-X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags)
+_replace_X509_check_ip_asc(X509 *x EINA_UNUSED,
+   const char *ipasc EINA_UNUSED,
+   unsigned int flags EINA_UNUSED)
 {
ERR("your OpenSSL do not support X509_check_ip_asc() - no verification can 
be done");
return 0;
-   (void)x;
-   (void)ipasc;
-   (void)flags;
 }
-#endif
 
+static int (*_sym_X509_check_host)   (X509 *x, const char *chk, size_t chklen, 
unsigned int flags, char **peername) = NULL;
+static int (*_sym_X509_check_ip_asc) (X509 *x, const char *ipasc, unsigned int 
flags) = NULL;
+
+static inline void
+_X509_check_init(void)
+{
+   if (_sym_X509_check_host) return;
+#ifdef HAVE_DLOPEN
+   _sym_X509_check_host =  dlsym(NULL, "X509_check_host");
+   _sym_X509_check_ip_asc = dlsym(NULL, "_X509_check_ip_asc");
+   if (_sym_X509_check_host && _sym_X509_check_ip_asc) return;
+#endif
+   _sym_X509_check_host = _replace_X509_check_host;
+   _sym_X509_check_ip_asc = _replace_X509_check_ip_asc;
+}
 
 static Eina_Error
 _efl_net_ssl_conn_hostname_verify(Efl_Net_Ssl_Conn *conn)
@@ -440,16 +467,18 @@ _efl_net_ssl_conn_hostname_verify(Efl_Net_Ssl_Conn *conn)
 return EFL_NET_SOCKET_SSL_ERROR_HANDSHAKE;
  }
 
+   _X509_check_init();
+
if (strchr(conn->hostname, ':')) family = AF_INET6;
if (inet_pton(family, conn->hostname, ) == 1)
  {
 label = "IP address";
-r = X509_check_ip_asc(x509, conn->hostname, 0);
+r = _sym_X509_check_ip_asc(x509, conn->hostname, 0);
  }
else
  {
 label = "hostname";
-r = X509_check_host(x509, conn->hostname, 0, 0, NULL);
+r = _sym_X509_check_host(x509, conn->hostname, 0, 0, NULL);
  }
 
if (r != 1)

-- 




Re: [E-devel] Elm Main Menu

2016-12-05 Thread Jean-Philippe André
Hey Andy,

On 3 December 2016 at 02:18, Andrew Williams  wrote:

> Thanks, the resizing has gone away.
> The black border is sometimes present but other times the content is
> larger than the window (a negative border?).
>

Today I consistently saw a massive black border on all sides.


Appreciate all the fixing thanks.


I hope you also appreciate the breakage as well ;)

It should be "fixed" now.
I'm not happy with the window sizing algo though... seems so random.

Best regards,


On Fri, 2 Dec 2016 at 02:29, Jean-Philippe André  wrote:
>
>> Hey Andy,
>>
>> On 30 November 2016 at 22:54, Andrew Williams 
>> wrote:
>>
>> I still see I here. Just updated efl and edi. It's not on every keypress
>> but just using the cursor keys particularly around beeline characters seems
>> to trigger it :(
>>
>> No idea where to start...
>>
>>
>> Yeah it's got to do with the changes to Main Menu. Now it's in the
>> framespace (is it a good or bad idea? I can find arguments for both points
>> of view).
>> And the framespace handling in X was shaky at best, it should be a bit
>> better now.
>>
>> So the constant resizing of EDI should be fixed now.
>>
>> But you'll still see issues when first opening EDI, including a massive
>> black border on the top-left. I know. I don't know exactly how to solve it
>> but it's on my TODO list.
>>
>> Best regards,
>>
>>
>>
>>
>> Andy
>>
>> On Wed, 30 Nov 2016 at 02:20, Jean-Philippe André 
>> wrote:
>>
>> On 30 November 2016 at 13:55, Jean-Philippe André 
>> wrote:
>>
>> Hi Andy,
>>
>> On 30 November 2016 at 11:35, Andrew Williams 
>> wrote:
>>
>> Hi,
>>
>> The mainmenu seems to work fine.
>> But since updating my edi window seems to shrink vertically after certain
>> key presses - any chance it's related?
>>
>>
>> Omg indeed. For me it's every key press and even just giving focus to EDI.
>>
>>
>> Not pointing fingers as I've pushed plenty in today but I didn't see it
>> until I pulled from origin I don't think.
>>
>>
>> You know it's got to be the frenchie's fault. And probably related to the
>> main menu, too.
>> I'll have a look at what's going on.
>>
>>
>> And it's magically gone before I could dive deep into this issue.
>> Please let me know if you still experience it.
>>
>>
>>
>> :)
>>
>>
>>
>> Andy
>>
>> On Tue, 29 Nov 2016 at 02:05, Jean-Philippe André 
>> wrote:
>>
>> Hey Andy,
>>
>> I've reverted my revert and tried to fix my original patch.
>> Let me know if it works fine for you!
>>
>> Thanks,
>>
>>
>> On 29 November 2016 at 02:02, Andrew Williams 
>> wrote:
>>
>> Great thanks, I love having my tab bar back :)
>>
>> Have a great day!
>> Andy
>>
>> On Mon, 28 Nov 2016 at 00:57, Jean-Philippe André 
>> wrote:
>>
>> Hi,
>>
>> On 28 November 2016 at 11:44, Carsten Haitzler 
>> wrote:
>>
>> On Sun, 27 Nov 2016 15:58:42 + Andrew Williams 
>> said:
>>
>> > Yup - that's what I see - right in elementary_test.
>> >
>> > Not started bisecting as I've not been coding for a few days. Might get
>> a
>> > chance today.
>> > But of course the efl build time is quite an issue for this :-p
>>
>> it's very likely to do with jpeg's changes tot he elm win/efl ui win and
>> theme
>> and csd etc. 
>>
>>
>> Yes, of course it was related. After playing a bit with the menu, trying
>> to place it inside the framespace, I encountered many sizing issues
>> (elm_menu and efl_ui_win both use custom layout functions). So I reverted
>> some of my changes and the menu bar is back inside win.edc. For now.
>> Hopefully I can fix the sizing issues as all the conformant features also
>> need to move inside the window.
>>
>>
>>
>> > Andrew
>> > On Sun, 27 Nov 2016 at 02:57, Carsten Haitzler 
>> wrote:
>> >
>> > > On Sun, 27 Nov 2016 07:44:25 +0200 Daniel Zaoui <
>> daniel.za...@samsung.com>
>> > > said:
>> > >
>> > > > Hi Andrew,
>> > > >
>> > > > Do you see any issues in elementary_test? Cause seems ok there. Did
>> you
>> > > try
>> > > > to bisect?
>> > > >
>> > > > Exactness doesn't cover main_menu. It should but the scenario has
>> never
>> > > been
>> > > > recorded.
>> > > >
>> > > > JackDanielZ
>> > >
>> > > elm test does show the b0rk. resize the main menu test vertically.
>> notice
>> > > the
>> > > label will slide underneath the main menu. this is the b0rk. :)
>> > >
>> > > > On Sat, 26 Nov 2016 15:20:13 +
>> > > > Andrew Williams  wrote:
>> > > >
>> > > > > Hi all,
>> > > > >
>> > > > > In the last week (or two) the elm main menu has stopped reserving
>> its
>> > > > > own space and has started overlapping content. Does anyone know
>> why
>> > > > > this might be?
>> > > > > Have the UI tests stopped being run or did the exactness not cover
>> > > > > mainmenu layout? (Again, not sure where to look)
>> > > > >
>> > > > > 

[EGIT] [core/efl] master 01/02: elm_map: add copyright_cb for osm tile source.

2016-12-05 Thread Sungtaek Hong
jpeg pushed a commit to branch master.

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

commit 32635ad7bdc5410cfa2b57b686846fd7fedcbf43
Author: Sungtaek Hong 
Date:   Tue Dec 6 14:17:31 2016 +0900

elm_map: add copyright_cb for osm tile source.

Summary:
 - According to Copyright and license in Openstreetmap
   (https://www.openstreetmap.org/copyright/en)
   credit has to be in the corner of map.
 - Add copyright_cb which returns an object to show copyright.

Test Plan:
1. Excecute elementary_test->map
   2. Right click->source->set any tile source
   3. Observe copyright is added.

Reviewers: cedric, Hermet, jpeg

Subscribers: conr2d

Differential Revision: https://phab.enlightenment.org/D4449
---
 src/lib/elementary/elm_map.c  | 64 +++
 src/lib/elementary/elm_widget_map.h   |  3 ++
 src/modules/elementary/test_map/mod.c |  6 
 3 files changed, 67 insertions(+), 6 deletions(-)

diff --git a/src/lib/elementary/elm_map.c b/src/lib/elementary/elm_map.c
index 1f88385..647ea0e 100644
--- a/src/lib/elementary/elm_map.c
+++ b/src/lib/elementary/elm_map.c
@@ -264,14 +264,27 @@ _scale_cb(const Evas_Object *obj EINA_UNUSED,
return _osm_scale_meter[zoom] * cos(lat * ELM_PI / 180.0);
 }
 
+static Evas_Object *
+_osm_copyright_cb(Evas_Object *obj)
+{
+   Evas_Object *label;
+
+   label = elm_label_add(obj);
+   elm_object_text_set(label, 

[EGIT] [core/efl] master 02/02: win: Fix sizing issues with new windows

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

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

commit 74187ff4255b42e19617da66cb5627248c12b73e
Author: Jean-Philippe Andre 
Date:   Tue Dec 6 15:19:03 2016 +0900

win: Fix sizing issues with new windows

This fixes sizing issues in EDI when opening a new window (not
the splash screen). This patch is quite brute force in the way
it pushes recalc.
---
 src/lib/elementary/efl_ui_win.c | 34 --
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 7bbf379..4d84a63 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -99,8 +99,6 @@ struct _Efl_Ui_Win_Data
 #endif
Eina_Stringshare *teamwork_uri;
 
-   Eina_Bool deferred_resize_job;
-
Efl_Ui_Win_Type   type;
Efl_Ui_Win_Keyboard_Mode  kbdmode;
Elm_Win_Indicator_Mode indmode;
@@ -235,6 +233,8 @@ struct _Efl_Ui_Win_Data
   Eina_Boolbg_must_swallow_init : 1;
} legacy;
 
+   Eina_Boolfirst_draw : 1;
+   Eina_Booldeferred_resize_job : 1;
Eina_Boolurgent : 1;
Eina_Boolmodal : 1;
Eina_Booldemand_attention : 1;
@@ -340,6 +340,7 @@ static void _elm_win_frame_style_update(Efl_Ui_Win_Data 
*sd, Eina_Bool force_emi
 static inline void _elm_win_need_frame_adjust(Efl_Ui_Win_Data *sd, const char 
*engine);
 static void _elm_win_resize_objects_eval(Evas_Object *obj);
 static void _elm_win_opaque_update(Efl_Ui_Win_Data *sd, Eina_Bool force_alpha);
+static void _elm_win_frame_obj_update(Efl_Ui_Win_Data *sd);
 
 #ifdef HAVE_ELEMENTARY_X
 static void _elm_win_xwin_update(Efl_Ui_Win_Data *sd);
@@ -914,6 +915,11 @@ _elm_win_pre_render(Ecore_Evas *ee)
if (!sd) return;
 
_elm_win_throttle_ok = EINA_TRUE;
+   if (!sd->first_draw)
+ {
+sd->first_draw = EINA_TRUE;
+_elm_win_frame_obj_update(sd);
+ }
if (sd->deferred_resize_job)
  _elm_win_resize_job(sd->obj);
 }
@@ -1415,18 +1421,34 @@ _elm_win_frame_geometry_adjust(Efl_Ui_Win_Data *sd)
ecore_evas_shadow_geometry_set(sd->ee, l, r, t, b);
 }
 
+static inline Eina_Bool
+_elm_win_framespace_set(Efl_Ui_Win_Data *sd, int x, int y, int w, int h)
+{
+   int fx, fy, fw, fh;
+
+   evas_output_framespace_get(sd->evas, , , , );
+   evas_output_framespace_set(sd->evas, x, y, w, h);
+
+   // return true if framespace geometry changed
+   return ((fx != x) || (fy != y) || (fw != w) || (fh != h));
+}
+
 static void
 _elm_win_frame_obj_update(Efl_Ui_Win_Data *sd)
 {
-   int fx, fy, fw, fh;
int ox, oy, ow, oh;
+   int cx, cy, cw, ch;
 
if (!sd->frame_obj) return;
_elm_win_opaque_dirty(sd);
_elm_win_frame_geometry_adjust(sd);
-   evas_object_geometry_get(sd->frame_obj, , , , );
-   edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.content", , 
, , );
-   evas_output_framespace_set(sd->evas, ox, oy, fw - ow, fh - oh);
+   evas_object_geometry_get(sd->frame_obj, , , , );
+   edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.content", , 
, , );
+   if (_elm_win_framespace_set(sd, cx, cy, ow - cw, oh - ch))
+ {
+_elm_win_resize_objects_eval(sd->obj);
+sd->deferred_resize_job = EINA_TRUE;
+ }
 }
 
 static void

-- 




[EGIT] [core/efl] master 01/01: cpphash: Fix not to access freed pointer.

2016-12-05 Thread Jaehyun Cho
jaehyun pushed a commit to branch master.

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

commit 6262cbfb62b4bcc0201071e660727faf0215ddbe
Author: Jaehyun Cho 
Date:   Tue Dec 6 14:42:37 2016 +0900

cpphash: Fix not to access freed pointer.
---
 src/bin/edje/epp/cpphash.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/edje/epp/cpphash.c b/src/bin/edje/epp/cpphash.c
index 80972ea..ac643e6 100644
--- a/src/bin/edje/epp/cpphash.c
+++ b/src/bin/edje/epp/cpphash.c
@@ -192,7 +192,7 @@ cpp_hash_cleanup(cpp_reader * pfile EINA_UNUSED)
 
for (i = HASHSIZE; --i >= 0;)
  {
-   while (hashtab[i])
-  delete_macro(hashtab[i]);
+if (hashtab[i])
+  delete_macro(hashtab[i]);
  }
 }

-- 




[EGIT] [core/efl] master 01/01: Elm.Button: fix color class descriptions

2016-12-05 Thread Jee-Yong Um
jpeg pushed a commit to branch master.

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

commit 967c7c7195821d6a48f44e0b2fbd4111a73038d8
Author: Jee-Yong Um 
Date:   Tue Dec 6 12:10:01 2016 +0900

Elm.Button: fix color class descriptions

Reviewers: cedric, jpeg

Reviewed By: jpeg

Differential Revision: https://phab.enlightenment.org/D4457
---
 data/elementary/themes/colorclasses.edc | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/data/elementary/themes/colorclasses.edc 
b/data/elementary/themes/colorclasses.edc
index 5c2a572..bf294bf 100644
--- a/data/elementary/themes/colorclasses.edc
+++ b/data/elementary/themes/colorclasses.edc
@@ -92,27 +92,27 @@ color_classes {
 // widgets
color_class { name: "button_bg";
   color: 255 255 255 255;
-  desc: "Text of a button";
+  desc: "Background of a button";
}
color_class { name: "button_bg_pressed";
   color: 255 255 255 255;
-  desc: "Text of a button";
+  desc: "Background of a pressed button";
}
color_class { name: "button_bg_disabled";
   color: 255 255 255 255;
-  desc: "Text of a button";
+  desc: "Background of a disabled button";
}
color_class { name: "button_icon";
   color: 255 255 255 255;
-  desc: "Text of a button";
+  desc: "Icon of a button";
}
color_class { name: "button_icon_pressed";
   color: 255 255 255 255;
-  desc: "Text of a button";
+  desc: "Icon of a pressed button";
}
color_class { name: "button_icon_disabled";
   color: 255 255 255 64;
-  desc: "Text of a button";
+  desc: "Icon of a disabled button";
}
color_class { name: "button_text";
   color: FN_COL_DEFAULT;
@@ -120,7 +120,7 @@ color_classes {
}
color_class { name: "button_text_pressed";
   color: FN_COL_DEFAULT;
-  desc: "Text of a button";
+  desc: "Text of a pressed button";
}
color_class { name: "button_text_disabled";
   color: FN_COL_DISABLE;

-- 




[EGIT] [core/efl] master 02/02: updated AUTHORS

2016-12-05 Thread ChunEon Park
hermet pushed a commit to branch master.

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

commit 24a6f31252d4d261a439f5343ee6f3e69b20a072
Author: Hermet Park 
Date:   Tue Dec 6 13:39:23 2016 +0900

updated AUTHORS
---
 AUTHORS | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/AUTHORS b/AUTHORS
index 94db131..5ee8859 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -376,7 +376,7 @@ Davide Andreoli 
 Gustavo Sverzut Barbieri 
 Stefan Schmidt 
 Bruno Dilly 
-ChunEon Park 
+Hermet Park 
 Daniel Juyung Seo 
 Doug Newgard 
 Jerome Pinot 
@@ -677,3 +677,11 @@ rustyBSD 
 Haifeng Deng 
 Al Poole 
 Marcel Hollerbach 
+Hermet Park 
+Jee-Yong Um 
+SooHye Shin 
+Hosang Kim 
+Minkyu Kang 
+Jinyong Park 
+Woochan Lee 
+Taehyub Kim 

-- 




[EGIT] [core/efl] master 01/02: scrollable_interface: fixed last_page_get() API

2016-12-05 Thread soohye
hermet pushed a commit to branch master.

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

commit e0e0c892d269a446d5c2cfc6baa66f2903277651
Author: soohye 
Date:   Tue Dec 6 13:30:43 2016 +0900

scrollable_interface: fixed last_page_get() API

Summary: ceiling the vaule of content size divided by page size

Reviewers: cedric, jpeg, Hermet

Reviewed By: Hermet

Subscribers: minkyu, sju27, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4447
---
 src/lib/elementary/elm_interface_scrollable.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_interface_scrollable.c 
b/src/lib/elementary/elm_interface_scrollable.c
index 8465a04..931fcce 100644
--- a/src/lib/elementary/elm_interface_scrollable.c
+++ b/src/lib/elementary/elm_interface_scrollable.c
@@ -4355,14 +4355,14 @@ _elm_interface_scrollable_last_page_get(Eo *obj 
EINA_UNUSED, Elm_Scrollable_Smar
if (pagenumber_h)
  {
 if ((sid->pagesize_h > 0) && (cw > sid->pagesize_h))
-  *pagenumber_h = cw / sid->pagesize_h - 1;
+  *pagenumber_h = ceil((double)cw / (double)sid->pagesize_h) - 1;
 else
   *pagenumber_h = 0;
  }
if (pagenumber_v)
  {
 if ((sid->pagesize_v > 0) && (ch > sid->pagesize_v))
-  *pagenumber_v = ch / sid->pagesize_v - 1;
+  *pagenumber_v = ceil((double)ch / (double)sid->pagesize_v) - 1;
 else
   *pagenumber_v = 0;
  }

-- 




[E-devel] What do you think of Vala?

2016-12-05 Thread Conrad Um
Dear friends,

I'm a big fan of vala (if you don't know what vala is, please see this link
), and writing a vala binding
generator for EFL.

Vala has a syntax similar to C# and has managed feature based on reference
counting, but basically it just converts .vala files to .c files to compile
them with gcc and gobject library.

My experimental generator can create VAPI files for having vala recognize C
APIs, but only support compact class type which is not a full-featured vala
class type.
(Because complete vala class is based on gobject system. You can see the
difference of compact and complete class here

.)
If I want to use all features supported in vala, I should make a wrapper
class like in eolian_cxx.

By the way, it comes to my mind that makes vala generate c code based on eo
instead of gobject. It can be used by application developers, but I think
even EFL developers can write libraries with modern language.

Currently, we should write 2 files (.c and .eo) per class at least.
However, vala with eo backend only requires 1 vala file.

For example,

public class Elm.Button : Elm.Layout, Efl.Ui.Clickable,
Elm.Interface.Atspi_Widget_Action
{
   /* elm_widget_button.h, contents of private header */
   private double ar_initial_timeout;
   private double ar_gap_timeout;
   private Ecore.Timer? timer; // question mark means nullable
   private bool repeating;

   /* events */
   public signal void clicked();
   public signal void repeated();

   /* elm_button.c, property setter/getter body */
   public bool autorepeat {
  set {
 timer = null; // To assign null to 'timer' will unref timer.
 autorepeat = value;
 repeating = false;
  }
  get {
 return autorepeat & admits_autorepeat;
   }
   }

   /* elm_button.c, private function body */
   private void activate() {
  timer = null;
  repeating = false;
  /* if property getter is set, the next condition will be (!disabled
&& !freeze_events) */
  if (!disabled_get() && !freeze_events_get())
 clicked(); // invokes callbacks for "clicked" events
   }

   /* elm_button.c, override Efl.Canvas.Group.group_add() */
   public override group_add() {
  base.group_add(); // efl_super
  sub_object_parent_add();

  /* lambda expression */
  resize_obj.signal_callback_add("elm,action,click", "*", (emission,
source) =>
  {
 activate();
  });

  access_object_register(resize_obj);
  can_focus_set(true);

  theme_set("button", "base", style_get());
   }
   ...
}

With vala file like above, valac (vala compiler) with eo backend will be
able to generate several files we need. (public header, private header, c
file including .c and .eo.c contents)
Moreover, header and c files generated by valac are simple c source files,
so they can be compiled with existing code or c file written in c from the
beginning (not generated).
I know all EFL developers are C expert, and you may never feel need of
redundant tools except for C. However I think if you want EFL to advance
further and continuously, we should investigate how we can adapt modern
concepts, knowledge and ideas on our works.

It's just a suggestion, but if there is any one interested in this idea, we
can start new project for the future. :D

Regards,
Jee-Yong Um (conr2d)
--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/01: eldbus: change to idle_enterer from idler

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

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

commit 10eb4c9a6b62558fb0b7d61d6c0442acad672278
Author: Jean-Philippe Andre 
Date:   Tue Dec 6 11:27:37 2016 +0900

eldbus: change to idle_enterer from idler

Summary:
This patch set changes eldbus to use idle_enterer from idler.
If an application does not give idle time, then the eldbus cannot have 
chance to work.

Reviewers: raster, cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D4443
---
 src/lib/eldbus/eldbus_core.c  | 47 ---
 src/lib/eldbus/eldbus_private_types.h |  6 ++---
 src/lib/eldbus/eldbus_service.c   | 46 +-
 3 files changed, 53 insertions(+), 46 deletions(-)

diff --git a/src/lib/eldbus/eldbus_core.c b/src/lib/eldbus/eldbus_core.c
index 6ab6a03..91a4021 100644
--- a/src/lib/eldbus/eldbus_core.c
+++ b/src/lib/eldbus/eldbus_core.c
@@ -45,7 +45,7 @@ typedef struct _Eldbus_Connection_Context_NOC_Cb
Eldbus_Name_Owner_Changed_Cb cb;
const void *cb_data;
Eina_Bool   deleted : 1;
-   Ecore_Idler*idler;
+   Ecore_Idle_Enterer *idle_enterer;
Eina_Bool   allow_initial : 1;
 } Eldbus_Connection_Context_NOC_Cb;
 
@@ -760,7 +760,7 @@ cb_timeout_toggle(DBusTimeout *timeout, void *data 
EINA_UNUSED)
 }
 
 static Eina_Bool
-eldbus_idler(void *data)
+eldbus_idle_enterer(void *data)
 {
Eldbus_Connection *conn = data;
 
@@ -770,15 +770,22 @@ eldbus_idler(void *data)
if (dbus_connection_get_dispatch_status(conn->dbus_conn) ==
DBUS_DISPATCH_COMPLETE)
  {
-DBG("Connection@%p: Dispatch complete, idler@%p finishing",
-conn, conn->idler);
-conn->idler = NULL;
+DBG("Connection@%p: Dispatch complete, idle_enterer@%p finishing",
+conn, conn->idle_enterer);
+conn->idle_enterer = NULL;
 return ECORE_CALLBACK_CANCEL;
  }
DBG("Connection@%p: Dispatching", conn);
eldbus_init();
eldbus_connection_ref(conn);
-   dbus_connection_dispatch(conn->dbus_conn);
+
+   DBusDispatchStatus status;
+   do
+ {
+status = dbus_connection_dispatch(conn->dbus_conn);
+ }
+   while(status == DBUS_DISPATCH_DATA_REMAINS);
+
eldbus_connection_unref(conn);
eldbus_shutdown();
return ECORE_CALLBACK_RENEW;
@@ -797,19 +804,19 @@ cb_dispatch_status(DBusConnection *dbus_conn EINA_UNUSED, 
DBusDispatchStatus new
 
DBG("Connection@%p: Dispatch status: %d", conn, new_status);
 
-   if ((new_status == DBUS_DISPATCH_DATA_REMAINS) && (!conn->idler))
+   if ((new_status == DBUS_DISPATCH_DATA_REMAINS) && (!conn->idle_enterer))
  {
-conn->idler = ecore_idler_add(eldbus_idler, conn);
-DBG("Connection@%p: Adding idler@%p to handle remaining dispatch data",
-conn, conn->idler);
+conn->idle_enterer = ecore_idle_enterer_add(eldbus_idle_enterer, conn);
+DBG("Connection@%p: Adding idle_enterer@%p to handle remaining 
dispatch data",
+conn, conn->idle_enterer);
  }
-   else if ((new_status != DBUS_DISPATCH_DATA_REMAINS) && (conn->idler))
+   else if ((new_status != DBUS_DISPATCH_DATA_REMAINS) && (conn->idle_enterer))
  {
-DBG("Connection@%p: No remaining dispatch data, clearing idler@%p",
-conn, conn->idler);
+DBG("Connection@%p: No remaining dispatch data, clearing 
idle_enterer@%p",
+conn, conn->idle_enterer);
 
-ecore_idler_del(conn->idler);
-conn->idler = NULL;
+ecore_idle_enterer_del(conn->idle_enterer);
+conn->idle_enterer = NULL;
  }
 }
 
@@ -1245,7 +1252,7 @@ _eldbus_connection_free(Eldbus_Connection *conn)
 
eldbus_data_del_all(>data);
 
-   if (conn->idler) ecore_idler_del(conn->idler);
+   if (conn->idle_enterer) ecore_idle_enterer_del(conn->idle_enterer);
if (conn->type && conn->shared)
  {
 if (conn->type == ELDBUS_CONNECTION_TYPE_ADDRESS)
@@ -1343,7 +1350,7 @@ dispach_name_owner_cb(void *context)
dispatch_name_owner_data *data = context;
data->ctx->cb((void *)data->ctx->cb_data, data->cn->name, "",
  data->cn->unique_id);
-   data->ctx->idler = NULL;
+   data->ctx->idle_enterer = NULL;
free(data);
return ECORE_CALLBACK_CANCEL;
 }
@@ -1375,7 +1382,7 @@ eldbus_name_owner_changed_callback_add(Eldbus_Connection 
*conn, const char *bus,
 EINA_SAFETY_ON_NULL_RETURN(dispatch_data);
 dispatch_data->cn = cn;
 dispatch_data->ctx = ctx;
-ctx->idler = ecore_idler_add(dispach_name_owner_cb, dispatch_data);
+ctx->idle_enterer = ecore_idle_enterer_add(dispach_name_owner_cb, 
dispatch_data);
  }
return;
 
@@ -1418,10 +1425,10 @@ 
eldbus_name_owner_changed_callback_del(Eldbus_Connection *conn, const char *bus,
 
  

Re: [E-devel] [EGIT] [core/efl] master 01/01: eo: Make error message less nebulous

2016-12-05 Thread Jean-Philippe André
On 6 December 2016 at 10:43, Gustavo Sverzut Barbieri 
wrote:

> On Mon, Dec 5, 2016 at 9:49 PM, Carsten Haitzler 
> wrote:
> > On Mon, 5 Dec 2016 01:29:19 -0200 Gustavo Sverzut Barbieri <
> barbi...@gmail.com>
> > said:
> >
> >> improved but not ideal.
> >>
> >> what if we hint based on current x object domain, if they differ you
> >> can say that it's from a different thread... also hint on how to fix,
> >> maybe a wiki page that we show the link there.
> >
> > that isn't actually better. 99% of the time it's actually an invalid
> object
> > entirely. not just accessing from another thread. you should add that
> question
> > there too. also ask if the object has been deleted or unreferenced to 0
> yet?
> > also ask if the object is meant to be accessible but
> > ecore_thread_main_loop_begin() (and end() to end the segment) have not
> been
> > called yet?
>

Nope because we haven't started resolving the object ID yet, only its
domain.
Which is why I kept the message simpler than the generic one.

In fact I think the generic message gives too much information that has no
value for actual users, without explaining why the object id is wrong (is
it not an object? has it maybe been invalidated? etc...)

> my point is - you can ask questions all day long and make this error
> huge. the
> > object id is invalid where it is being accessed. WHY could be many
> reasons but
> > you've been given the breakdown of the components of the ID and current
> domains
> > whcih canhelp diagnose thread issues if they are there.
>
> with new EO_LIFECYCLE_DEBUG you have these information, you can know
> if the object was created, deleted and so on... then you could help
> the user, not flood him with data.
>
> See the new envvar + libeo_dbg.so (eo_debug), then you get valgrind
> like information:
>
> object was created as eoid, obj (real ptr), class... [x seconds ago]
> 
> object was deleted as eoid, obj (real ptr), class... [x seconds ago]
> 
> object is already dead
>
> or "object is still alive".
>
> in the second case, you can print "but it's in a different domain".


-- 
Jean-Philippe André
--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/01: elm_panel: change panel freeze API when swiping panel.

2016-12-05 Thread Hosang Kim
hermet pushed a commit to branch master.

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

commit 092f1919b1bb94d0879a152f5e896bb1001fab8d
Author: Hosang Kim 
Date:   Tue Dec 6 11:31:06 2016 +0900

elm_panel: change panel freeze API when swiping panel.

Summary:
The panel is freezed by elm_interface_scrollable_movement_block_set(),
but elm_interface_scrollable_freeze_set() is used to unfreeze panel.

Test Plan: elementar_test -> panel scrollable

Reviewers: woohyun, seoz, Hermet, cedric, raster

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D4458
---
 src/lib/elementary/elm_panel.c | 12 
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index a8979ae..662d44d 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -751,7 +751,8 @@ _on_mouse_move(void *data,
   case ELM_PANEL_ORIENT_TOP:
  if (sd->timer && ((cur_y - sd->down_y) > finger_size))
{
-  elm_interface_scrollable_freeze_set(obj, EINA_FALSE);
+  elm_interface_scrollable_movement_block_set
+ (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
   sd->freeze = EINA_FALSE;
   elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", 
"elm");
}
@@ -759,7 +760,8 @@ _on_mouse_move(void *data,
   case ELM_PANEL_ORIENT_BOTTOM:
  if (sd->timer && ((sd->down_y - cur_y) > finger_size))
{
-  elm_interface_scrollable_freeze_set(obj, EINA_FALSE);
+  elm_interface_scrollable_movement_block_set
+ (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
   sd->freeze = EINA_FALSE;
   elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", 
"elm");
}
@@ -768,7 +770,8 @@ _on_mouse_move(void *data,
  if ((!is_mirrored && (sd->timer) && ((cur_x - sd->down_x) > 
finger_size)) ||
   ((is_mirrored) && (sd->timer) && ((sd->down_x - cur_x) > 
finger_size)))
{
-  elm_interface_scrollable_freeze_set(obj, EINA_FALSE);
+  elm_interface_scrollable_movement_block_set
+ (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
   sd->freeze = EINA_FALSE;
   elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", 
"elm");
}
@@ -777,7 +780,8 @@ _on_mouse_move(void *data,
  if ((is_mirrored && (sd->timer) && ((cur_x - sd->down_x) > 
finger_size)) ||
   (!is_mirrored && (sd->timer) && ((sd->down_x - cur_x) > 
finger_size)))
{
-  elm_interface_scrollable_freeze_set(obj, EINA_FALSE);
+  elm_interface_scrollable_movement_block_set
+ (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
   sd->freeze = EINA_FALSE;
   elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", 
"elm");
}

-- 




[EGIT] [core/efl] master 01/01: evas - protect against outbuf alloc fail possibility

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

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

commit e25b3eedb4125740e0cb3411ce0a8fe32a19e321
Author: Carsten Haitzler (Rasterman) 
Date:   Tue Dec 6 11:19:05 2016 +0900

evas - protect against outbuf alloc fail possibility

this should fix T4967
---
 src/modules/evas/engines/software_x11/evas_engine.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/modules/evas/engines/software_x11/evas_engine.c 
b/src/modules/evas/engines/software_x11/evas_engine.c
index 4019e6d..c5ef57d 100644
--- a/src/modules/evas/engines/software_x11/evas_engine.c
+++ b/src/modules/evas/engines/software_x11/evas_engine.c
@@ -417,7 +417,8 @@ eng_setup(Evas *eo_e, void *in)
   info->info.mask,
   info->info.shape_dither,
   
info->info.destination_alpha);
-  evas_software_xlib_outbuf_debug_set(ob, info->info.debug);
+  if (ob)
+evas_software_xlib_outbuf_debug_set(ob, info->info.debug);
}
   }
 if (ob)

-- 




[EGIT] [core/efl] master 01/01: elementary calendar: it'd rather return false here.

2016-12-05 Thread ChunEon Park
hermet pushed a commit to branch master.

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

commit 7a71559eff63d36f2c7465591d31583bb5f8b287
Author: Hermet Park 
Date:   Tue Dec 6 11:07:49 2016 +0900

elementary calendar: it'd rather return false here.
---
 src/lib/elementary/elm_calendar.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_calendar.c 
b/src/lib/elementary/elm_calendar.c
index a2c2517..cc2384f 100644
--- a/src/lib/elementary/elm_calendar.c
+++ b/src/lib/elementary/elm_calendar.c
@@ -1410,7 +1410,7 @@ _key_action_move(Evas_Object *obj, const char *params)
const char *dir = params;
Eina_Bool ret, double_spinner = EINA_FALSE;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_TRUE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
_elm_widget_focus_auto_show(obj);
if (!strcmp(dir, "prior"))

-- 




Re: [E-devel] [EGIT] [core/efl] master 02/05: Eo: Add efl_replace() function.

2016-12-05 Thread Gustavo Sverzut Barbieri
the purpose is to properly order ref + unref so if the same object, or
dependent objects are used, the new object gets a ref before we drop
the old one.

which is not what people usually do, since we'd need an intermediate
variable or careful code, people often unref() -> ref(), if it was the
same object, ref could drop to zero and you get errors. I've seen lots
of them while doing stringshare, then stringshare replace was added.

of course it also handle the same ptr case by being "noop" with an early return


On Mon, Dec 5, 2016 at 11:30 PM, Carsten Haitzler  wrote:
> On Mon, 5 Dec 2016 13:50:12 + Tom Hacohen  said:
>
>> I never liked the stringshare function that does it, so it comes with no
>> surprise that I don't like this one either.
>>
>> Regardless of that, I find the name very confusing. I didn't understand
>> what it does when I saw the name nor when I read the docs. I had to read
>> the code to understand what it's for... I'd change the name and fix the
>> docs.
>
> i don't even know what the function is meant to do... the docs at least dont'
> tell me. they even speak of the "string pointed to by @c" ... ?
>
> it looks like it just unrefs what was there before in what storage points to,
> and adds a ref to the new object... should it even add a ref to the new 
> object?
>
>> --
>> Tom.
>>
>> On 02/12/16 17:35, Guilherme Iscaro wrote:
>> > bdilly pushed a commit to branch master.
>> >
>> > http://git.enlightenment.org/core/efl.git/commit/?id=81782414dfba9a8a69ea42a4dd5b01fc19170d88
>> >
>> > commit 81782414dfba9a8a69ea42a4dd5b01fc19170d88
>> > Author: Guilherme Iscaro 
>> > Date:   Fri Dec 2 11:16:33 2016 -0200
>> >
>> > Eo: Add efl_replace() function.
>> >
>> > This new function adds a new way to safely replace Eo pointer values.
>> > ---
>> >  src/lib/eo/Eo.h | 22 ++
>> >  1 file changed, 22 insertions(+)
>> >
>> > diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
>> > index 8c81544..244478b 100644
>> > --- a/src/lib/eo/Eo.h
>> > +++ b/src/lib/eo/Eo.h
>> > @@ -1334,6 +1334,28 @@ EAPI int efl_callbacks_cmp(const
>> > Efl_Callback_Array_Item *a, const Efl_Callback_
>> > EFL_CALLBACK_PRIORITY_DEFAULT, data)
>> >
>> >  /**
>> > + * @def Replace the previously Eo pointer with new content.
>> > + *
>> > + * @param storage The object to replace the old reference. It can not be
>> > @c NULL.
>> > + * @param new_obj The new object. It may be @c NULL.
>> > + *
>> > + * The string pointed by @c storage must be previously an Eo or
>> > + * @c NULL and it will be efl_unref(). The @a new_obj will be passed
>> > + * to efl_ref() and then assigned to @c *storage.
>> > + *
>> > + * @see efl_ref()
>> > + * @see efl_unref()
>> > + */
>> > +static inline void
>> > +efl_replace(Eo **storage, Eo *new_obj)
>> > +{
>> > +   if (!storage || *storage == new_obj) return;
>> > +   efl_ref(new_obj);
>> > +   efl_unref(*storage);
>> > +   *storage = new_obj;
>> > +}
>> > +
>> > +/**
>> >   * @}
>> >   */
>> >
>> >
>>
>>
>> --
>> ___
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
>
>
> --
> - Codito, ergo sum - "I code, therefore I am" --
> The Rasterman (Carsten Haitzler)ras...@rasterman.com
>
>
> --
> Developer Access Program for Intel Xeon Phi Processors
> Access to Intel Xeon Phi processor-based developer platforms.
> With one year of Intel Parallel Studio XE.
> Training and support from Colfax.
> Order your platform today.http://sdm.link/xeonphi
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel



-- 
Gustavo Sverzut Barbieri
--
Mobile: +55 (16) 99354-9890

--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/01: evas: Ensure single init of common per canvas

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

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

commit aac516f352b27684b1a1aad72cf82486a3bd81de
Author: Jean-Philippe Andre 
Date:   Tue Dec 6 10:40:11 2016 +0900

evas: Ensure single init of common per canvas

After @cedric's commit 6427c77707fb6116a98b we end up with E
not working in Xephyr, because evas_common_shutdown() is called
too many times (init_count == -1). So I'm being paranoid and
tracking whether Evas has initialized or not evas_common. That
way we end up with exactly the right number of inits. We even
reach 0 after E shuts down :)
---
 src/lib/evas/canvas/evas_main.c | 12 +---
 src/lib/evas/include/evas_private.h |  1 +
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 83f75b6..269d329 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -353,7 +353,10 @@ _evas_canvas_efl_object_destructor(Eo *eo_e, 
Evas_Public_Data *e)
  e->engine.data.context);
 e->engine.func->output_free(e->engine.data.output);
 e->engine.func->info_free(eo_e, e->engine.info);
-
+ }
+   if (e->common_init)
+ {
+e->common_init = 0;
 evas_common_shutdown();
  }
 
@@ -426,9 +429,12 @@ _evas_canvas_engine_info_set(Eo *eo_e, Evas_Public_Data 
*e, Evas_Engine_Info *in
if (info->magic != e->engine.info_magic) return EINA_FALSE;
 
evas_canvas_async_block(e);
-   evas_common_init();
+   if (!e->common_init)
+ {
+e->common_init = 1;
+evas_common_init();
+ }
res = e->engine.func->setup(eo_e, info);
-   if (!res) evas_common_shutdown();
return res;
 }
 
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index 7657655..a334ed1 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -938,6 +938,7 @@ struct _Evas_Public_Data
Eina_Bool  is_frozen : 1;
Eina_Bool  rendering : 1;
Eina_Bool  render2 : 1;
+   Eina_Bool  common_init : 1;
 };
 
 struct _Evas_Layer

-- 




Re: [E-devel] [EGIT] [core/efl] master 01/01: eo: Make error message less nebulous

2016-12-05 Thread Gustavo Sverzut Barbieri
On Mon, Dec 5, 2016 at 9:49 PM, Carsten Haitzler  wrote:
> On Mon, 5 Dec 2016 01:29:19 -0200 Gustavo Sverzut Barbieri 
> 
> said:
>
>> improved but not ideal.
>>
>> what if we hint based on current x object domain, if they differ you
>> can say that it's from a different thread... also hint on how to fix,
>> maybe a wiki page that we show the link there.
>
> that isn't actually better. 99% of the time it's actually an invalid object
> entirely. not just accessing from another thread. you should add that question
> there too. also ask if the object has been deleted or unreferenced to 0 yet?
> also ask if the object is meant to be accessible but
> ecore_thread_main_loop_begin() (and end() to end the segment) have not been
> called yet?
>
> my point is - you can ask questions all day long and make this error huge. the
> object id is invalid where it is being accessed. WHY could be many reasons but
> you've been given the breakdown of the components of the ID and current 
> domains
> whcih canhelp diagnose thread issues if they are there.

with new EO_LIFECYCLE_DEBUG you have these information, you can know
if the object was created, deleted and so on... then you could help
the user, not flood him with data.

See the new envvar + libeo_dbg.so (eo_debug), then you get valgrind
like information:

object was created as eoid, obj (real ptr), class... [x seconds ago]

object was deleted as eoid, obj (real ptr), class... [x seconds ago]

object is already dead

or "object is still alive".

in the second case, you can print "but it's in a different domain".


-- 
Gustavo Sverzut Barbieri
--
Mobile: +55 (16) 99354-9890

--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 02/05: Eo: Add efl_replace() function.

2016-12-05 Thread The Rasterman
On Mon, 5 Dec 2016 13:50:12 + Tom Hacohen  said:

> I never liked the stringshare function that does it, so it comes with no 
> surprise that I don't like this one either.
> 
> Regardless of that, I find the name very confusing. I didn't understand 
> what it does when I saw the name nor when I read the docs. I had to read 
> the code to understand what it's for... I'd change the name and fix the 
> docs.

i don't even know what the function is meant to do... the docs at least dont'
tell me. they even speak of the "string pointed to by @c" ... ?

it looks like it just unrefs what was there before in what storage points to,
and adds a ref to the new object... should it even add a ref to the new object?

> --
> Tom.
> 
> On 02/12/16 17:35, Guilherme Iscaro wrote:
> > bdilly pushed a commit to branch master.
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=81782414dfba9a8a69ea42a4dd5b01fc19170d88
> >
> > commit 81782414dfba9a8a69ea42a4dd5b01fc19170d88
> > Author: Guilherme Iscaro 
> > Date:   Fri Dec 2 11:16:33 2016 -0200
> >
> > Eo: Add efl_replace() function.
> >
> > This new function adds a new way to safely replace Eo pointer values.
> > ---
> >  src/lib/eo/Eo.h | 22 ++
> >  1 file changed, 22 insertions(+)
> >
> > diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
> > index 8c81544..244478b 100644
> > --- a/src/lib/eo/Eo.h
> > +++ b/src/lib/eo/Eo.h
> > @@ -1334,6 +1334,28 @@ EAPI int efl_callbacks_cmp(const
> > Efl_Callback_Array_Item *a, const Efl_Callback_
> > EFL_CALLBACK_PRIORITY_DEFAULT, data)
> >
> >  /**
> > + * @def Replace the previously Eo pointer with new content.
> > + *
> > + * @param storage The object to replace the old reference. It can not be
> > @c NULL.
> > + * @param new_obj The new object. It may be @c NULL.
> > + *
> > + * The string pointed by @c storage must be previously an Eo or
> > + * @c NULL and it will be efl_unref(). The @a new_obj will be passed
> > + * to efl_ref() and then assigned to @c *storage.
> > + *
> > + * @see efl_ref()
> > + * @see efl_unref()
> > + */
> > +static inline void
> > +efl_replace(Eo **storage, Eo *new_obj)
> > +{
> > +   if (!storage || *storage == new_obj) return;
> > +   efl_ref(new_obj);
> > +   efl_unref(*storage);
> > +   *storage = new_obj;
> > +}
> > +
> > +/**
> >   * @}
> >   */
> >
> >
> 
> 
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 01/01: eo: Make error message less nebulous

2016-12-05 Thread The Rasterman
On Mon, 5 Dec 2016 01:29:19 -0200 Gustavo Sverzut Barbieri 
said:

> improved but not ideal.
> 
> what if we hint based on current x object domain, if they differ you
> can say that it's from a different thread... also hint on how to fix,
> maybe a wiki page that we show the link there.

that isn't actually better. 99% of the time it's actually an invalid object
entirely. not just accessing from another thread. you should add that question
there too. also ask if the object has been deleted or unreferenced to 0 yet?
also ask if the object is meant to be accessible but
ecore_thread_main_loop_begin() (and end() to end the segment) have not been
called yet?

my point is - you can ask questions all day long and make this error huge. the
object id is invalid where it is being accessed. WHY could be many reasons but
you've been given the breakdown of the components of the ID and current domains
whcih canhelp diagnose thread issues if they are there.

> On Sun, Dec 4, 2016 at 10:55 PM, Jean-Philippe ANDRÉ 
> wrote:
> > jpeg pushed a commit to branch master.
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=c6dcf3dda448c422bd556834b336f7fdb9296097
> >
> > commit c6dcf3dda448c422bd556834b336f7fdb9296097
> > Author: Jean-Philippe Andre 
> > Date:   Mon Dec 5 09:46:55 2016 +0900
> >
> > eo: Make error message less nebulous
> >
> > When writing this ERR log I thought about "thread" (it's really
> > the keyword here) but eventually reworded to "context". Let's be
> > clearer about the possible issue here.
> > ---
> >  src/lib/eo/eo.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
> > index dd6cff6..37c2a4c 100644
> > --- a/src/lib/eo/eo.c
> > +++ b/src/lib/eo/eo.c
> > @@ -1662,7 +1662,8 @@ err_obj:
> >  err:
> > if (!data) return EINA_FALSE;
> > ERR("Object %p is not a valid object in this context: object domain: %
> > d, "
> > -   "current domain: %d, local domain: %d, available domains: [%s %s %s
> > %s]",
> > +   "current domain: %d, local domain: %d, available domains: [%s %s %s
> > %s]."
> > +   " Are you trying to access this object from another thread?",
> > eo_id, (int)domain,
> > (int)data->domain_stack[data->stack_top], (int)data->local_domain,
> > (data->tables[0]) ? "0" : " ", (data->tables[1]) ? "1" : " ",
> >
> > --
> >
> >
> 
> 
> 
> -- 
> Gustavo Sverzut Barbieri
> --
> Mobile: +55 (16) 99354-9890
> 
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Eo error message in my application

2016-12-05 Thread The Rasterman
On Mon, 5 Dec 2016 11:33:13 -0200 Felipe Magno de Almeida
 said:

> On Mon, Dec 5, 2016 at 12:04 AM, Carsten Haitzler 
> wrote:
> > On Mon, 5 Dec 2016 09:53:51 +0900 Jean-Philippe André 
> > said:
> 
> [snip]
> 
> >> Anyway as far as I remember shared objects are not a viable solution until
> >> we change the calling mechanism (function & data resolution) to be
> >> thread-safe, rather than locking the entire pool of shared objects for the
> >> entire duration of a call.
> >
> > locking the whole pool means we can do shared objects without a whole tonne
> > of extra work. as long as all things accessed inside object methods
> > (including parent classes) are entirely within the code for that object or
> > are already threadsafe then no extra locks have to be written at all.
> > everything will just work and it's a massive amount of work saved. having
> > to fine-grain lock everything manually is just insane and that's why efl is
> > not threadsafe and never will be because no one is going to go do that.
> > this is why many libs are not threadsafe. it's a massive amount of work to
> > do and easy to get wrong to miss an lock or unlock somewhere. having a
> > single locking and unlocking spot even if it is a "one big fat lock for
> > every shared object" is safer and far less work. it is unlikely to ever be
> > a real performance issue.
> 
> I don't care about the performance. This is going to be a deadlock hell.

you're going to have deadlocks with fine grained locking too. deal with it.
it's part of life with locking and threads unless you design very carefully.

-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Eo error message in my application

2016-12-05 Thread The Rasterman
On Mon, 5 Dec 2016 12:04:26 +0900 Jean-Philippe André  said:

> On 5 December 2016 at 11:04, Carsten Haitzler  wrote:
> 
> > On Mon, 5 Dec 2016 09:53:51 +0900 Jean-Philippe André 
> > said:
> >
> > > On 4 December 2016 at 11:27, Carsten Haitzler 
> > wrote:
> > >
> > > > On Sat, 3 Dec 2016 20:25:46 -0200 Gustavo Sverzut Barbieri <
> > > > barbi...@gmail.com>
> > > > said:
> > > >
> > > > > On Sat, Dec 3, 2016 at 7:13 PM, Vincent Torri <
> > vincent.to...@gmail.com>
> > > > wrote:
> > > > > > On Sat, Dec 3, 2016 at 7:44 PM, Gustavo Sverzut Barbieri
> > > > > >  wrote:
> > > > > >> On Sat, Dec 3, 2016 at 1:57 PM, Vincent Torri <
> > > > vincent.to...@gmail.com>
> > > > > >> wrote:
> > > > > >>> Hello
> > > > > >>>
> > > > > >>> I'm rewriting my multi-document viewer. I'm using EFL git,  and i
> > > > have
> > > > > >>> that Eo error message :
> > > > > >>>
> > > > > >>> ERR<59568>:eo[T:3] lib/eo/eo.c:1663 efl_isa() Object 40007f56 is
> > not
> > > > a
> > > > > >>> valid object in this context: object domain: 0, current domain:
> > 2,
> > > > > >>> local domain: 2, available domains: [  1 2  ]
> > > > > >>>
> > > > > >>> does someone have an idea of the problem ?
> > > > > >>
> > > > > >> the new efl in git provides more context to that message since
> > > > > >> yesterday, particularly if you use EO_LIFECYCLE_DEBUG=1 (envvar),
> > > > > >> since I was so pissed with such nebulous messages :-D
> > > > > >
> > > > > > all the debug stuff does not work on Windows (it needs libunwind,
> > or
> > > > > > at least DWARF parsing to get the debug symbols), but i will test
> > on
> > > > > > Linux when I have time.
> > > > > >
> > > > > > i've also seen some preload stuff you mentioned, which does not
> > work
> > > > > > on Windows (it's a different method to do similar stuff)
> > > > > >
> > > > > >> usually the object is already dead or was never created... If
> > you're
> > > > > >> using threads (seems so due "[T:3]"), be aware that objects are
> > bound
> > > > > >> to the thread they were created and you need to "import"  to use,
> > > > > >> Raster sent some email to the list and I recall som tests in the
> > > > > >> tree
> > > > > >
> > > > > > I indeed use an ecore_thread
> > > > >
> > > > > yes, reading the message again, not just the T:3 for the thread, but
> > > > > also the "object domain: 0" (main thread) while "current domain: 2"
> > > > > (secondary thread) would lead to a failure since raster added the
> > > > > protection.
> > > >
> > > > see the message is NOT nebulous. its giving you details the object
> > belongs
> > > > to
> > > > thread domain 0 but your current domain is 2. thus thread does not
> > belong
> > > > to
> > > > the same thread domain that created the object. domain 1 is the shared
> > > > domain
> > > > so should you see object domain being 1 and it still isn't found that
> > means
> > > > there is no object there at all ion the shared table.
> > > >
> > > > the message is very explicit as to the core details of the issue. it's
> > an
> > > > invalid object as far as the thread accessing it is concerned.
> > > >
> > > > > If you want to use auto-locks, then get the shared domain with:
> > > > >
> > > > > efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
> > > > > my_obj = efl_add(...);
> > > > > efl_domain_current_pop();
> > > >
> > > > this isn't really an option UNLESS you created the class entirely
> > inherited
> > > > from base class. i.e. the object class doesn't otherwise use any other
> > > > non-threadsafe data outside the object.
> > > >
> > > > > check eo_test_general.c and Eo.h, they can give you an idea of what
> > > > > can you do... basically all objects are bound to one thread (domain),
> > > > > main thread or shared. Their parent must be in the same domain. This
> > > > > allows TLS of eoid stuff, avoiding locks and possibly avoiding
> > > > > concurrency bugs. Just the shared domains have locks as it used to be
> > > > > in the whole eo.
> > > >
> > > > yup. and even creating shared objects comes with limitations. the
> > intent
> > > > is for
> > > > very specialized objects to become shared objects so multiple threads
> > can
> > > > chare
> > > > them. the general idea is you will have  very very very few shared
> > > > objects, so
> > > > then the global mutex surrounding all shared objects isn't really a big
> > > > issue,but sometimes sharing an object is far easier and simpler than
> > > > anything
> > > > else, and you are not that concerned about contention and performance.
> > most
> > > > objects will be thread-local (and most efl objects will be main-loop
> > local
> > > > of
> > > > course).
> > > >
> > > > but the error right now is very detailed and tells you exactly what it
> > > > sees is
> > > > probably going wrong in the lookup so you can figure out if its a
> > > > cross-thread
> > > > access problem OR that the object actually does not 

Re: [E-devel] Edje multiseat support

2016-12-05 Thread The Rasterman
On Mon, 5 Dec 2016 11:37:09 -0200 Guilherme Íscaro  said:

> Hi raster,
> 
> i'm seeing over 1mb of hash entries being used by
> >
> > _evas_object_pointer_data_get()
> >
> > (called from _efl_canvas_object_pointer_mode_by_device_set()).
> >
> >
> I will take a look and check if we can improve the memory usage here, if
> you want we can discuss solutions about this one. Btw, thank you for your

this definitely should be a few kb at most not 1mb+. :) i haven't sat down and
tried to figure out what this code is trying to do and why... but we shouldn't
need mountains of extra memory just for the ability to handle multiple seats :)

> commit fixing the mouse problem!

no problems. :)

-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Eo error message in my application

2016-12-05 Thread The Rasterman
On Mon, 5 Dec 2016 11:35:34 -0200 Felipe Magno de Almeida
 said:

> On Mon, Dec 5, 2016 at 12:04 AM, Carsten Haitzler 
> wrote:
> > On Sun, 4 Dec 2016 23:23:39 -0200 Felipe Magno de Almeida
> >  said:
> >
> >> On Dec 4, 2016 10:55 PM, "Jean-Philippe André"  wrote:
> >>
> >> Nah I totally agree with Vincent that the error message is cryptic.
> >>
> >> Anyway as far as I remember shared objects are not a viable solution until
> >> we change the calling mechanism (function & data resolution) to be
> >> thread-safe, rather than locking the entire pool of shared objects for the
> >> entire duration of a call.
> >>
> >>
> >> Indeed. just like we discussed in Korea. the recursive mutex must go.
> >
> > i then invite you to actually implement all the fine-grained locks for every
> > class and object now and into the future and never to get it wrong. are you
> > going to do that?
> 
> Good point. I'll see what I can do. I would like to implement the multiple
> loops and threading anyway, with the design we discussed. This seems
> to be a part of this work.

We also always have the option of sending objects from thread/loop to thread.
as long as the object has no links to other objects (references or children
etc.) then it's easy. this honestly would be the fast path. shared objects are
a slow path.

keep in mind that mutexes, spjnlocks and even atomic instructions are SLOW
PATHS in a cpu. they take a LOT longer to execute than a normal "instruction"
or even smallish function that they should be. They have to put in memory
barriers and force cache synchronization between cores etc. so shared objects
being "heavy when there is contention" is pretty normal. in fact a single lock
on entry and unlock on exit is about as efficient as can be done. remember you
can do_super() and access other objects, children and parents and so on so
having a single recursive mutex frankly was the sanest thing i could think of
that balanced simplicity, ease of maintainability into the future (having to by
hand put in locks in every method call is going to be nuts and having to have
shared vs non-shared versions of base class etc.). thinking about all the work
needed for fine-grained locking just made me do it this way. this way at least
you DON'T every have to write locking code. simply declare your object as
shared on creation. of course the class has to be sharing-friendly but this is
the same with or without fine grained locks. :)

-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Eo error message in my application

2016-12-05 Thread The Rasterman
On Mon, 5 Dec 2016 04:10:49 +0100 Vincent Torri  said:

> i still don't know how to fix the problem...

you need to know where the access is. using EINA_ERROR_ABORT=1 will at least
work on window as get you a backtrace to it... the reasons are either an
invalid object id or access an object across threads.

> On Mon, Dec 5, 2016 at 3:04 AM, Carsten Haitzler  wrote:
> > On Mon, 5 Dec 2016 09:53:51 +0900 Jean-Philippe André 
> > said:
> >
> >> On 4 December 2016 at 11:27, Carsten Haitzler  wrote:
> >>
> >> > On Sat, 3 Dec 2016 20:25:46 -0200 Gustavo Sverzut Barbieri <
> >> > barbi...@gmail.com>
> >> > said:
> >> >
> >> > > On Sat, Dec 3, 2016 at 7:13 PM, Vincent Torri 
> >> > wrote:
> >> > > > On Sat, Dec 3, 2016 at 7:44 PM, Gustavo Sverzut Barbieri
> >> > > >  wrote:
> >> > > >> On Sat, Dec 3, 2016 at 1:57 PM, Vincent Torri <
> >> > vincent.to...@gmail.com>
> >> > > >> wrote:
> >> > > >>> Hello
> >> > > >>>
> >> > > >>> I'm rewriting my multi-document viewer. I'm using EFL git,  and i
> >> > have
> >> > > >>> that Eo error message :
> >> > > >>>
> >> > > >>> ERR<59568>:eo[T:3] lib/eo/eo.c:1663 efl_isa() Object 40007f56 is
> >> > > >>> not
> >> > a
> >> > > >>> valid object in this context: object domain: 0, current domain: 2,
> >> > > >>> local domain: 2, available domains: [  1 2  ]
> >> > > >>>
> >> > > >>> does someone have an idea of the problem ?
> >> > > >>
> >> > > >> the new efl in git provides more context to that message since
> >> > > >> yesterday, particularly if you use EO_LIFECYCLE_DEBUG=1 (envvar),
> >> > > >> since I was so pissed with such nebulous messages :-D
> >> > > >
> >> > > > all the debug stuff does not work on Windows (it needs libunwind, or
> >> > > > at least DWARF parsing to get the debug symbols), but i will test on
> >> > > > Linux when I have time.
> >> > > >
> >> > > > i've also seen some preload stuff you mentioned, which does not work
> >> > > > on Windows (it's a different method to do similar stuff)
> >> > > >
> >> > > >> usually the object is already dead or was never created... If you're
> >> > > >> using threads (seems so due "[T:3]"), be aware that objects are
> >> > > >> bound to the thread they were created and you need to "import"  to
> >> > > >> use, Raster sent some email to the list and I recall som tests in
> >> > > >> the tree
> >> > > >
> >> > > > I indeed use an ecore_thread
> >> > >
> >> > > yes, reading the message again, not just the T:3 for the thread, but
> >> > > also the "object domain: 0" (main thread) while "current domain: 2"
> >> > > (secondary thread) would lead to a failure since raster added the
> >> > > protection.
> >> >
> >> > see the message is NOT nebulous. its giving you details the object
> >> > belongs to
> >> > thread domain 0 but your current domain is 2. thus thread does not belong
> >> > to
> >> > the same thread domain that created the object. domain 1 is the shared
> >> > domain
> >> > so should you see object domain being 1 and it still isn't found that
> >> > means there is no object there at all ion the shared table.
> >> >
> >> > the message is very explicit as to the core details of the issue. it's an
> >> > invalid object as far as the thread accessing it is concerned.
> >> >
> >> > > If you want to use auto-locks, then get the shared domain with:
> >> > >
> >> > > efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
> >> > > my_obj = efl_add(...);
> >> > > efl_domain_current_pop();
> >> >
> >> > this isn't really an option UNLESS you created the class entirely
> >> > inherited from base class. i.e. the object class doesn't otherwise use
> >> > any other non-threadsafe data outside the object.
> >> >
> >> > > check eo_test_general.c and Eo.h, they can give you an idea of what
> >> > > can you do... basically all objects are bound to one thread (domain),
> >> > > main thread or shared. Their parent must be in the same domain. This
> >> > > allows TLS of eoid stuff, avoiding locks and possibly avoiding
> >> > > concurrency bugs. Just the shared domains have locks as it used to be
> >> > > in the whole eo.
> >> >
> >> > yup. and even creating shared objects comes with limitations. the intent
> >> > is for
> >> > very specialized objects to become shared objects so multiple threads can
> >> > chare
> >> > them. the general idea is you will have  very very very few shared
> >> > objects, so
> >> > then the global mutex surrounding all shared objects isn't really a big
> >> > issue,but sometimes sharing an object is far easier and simpler than
> >> > anything
> >> > else, and you are not that concerned about contention and performance.
> >> > most objects will be thread-local (and most efl objects will be
> >> > main-loop local of
> >> > course).
> >> >
> >> > but the error right now is very detailed and tells you exactly what it
> >> > sees is
> >> > probably going wrong in the lookup so you can 

Re: [E-devel] Edje multiseat support

2016-12-05 Thread Jean-Philippe André
Hi,

On 6 December 2016 at 09:53, Bruno Dilly  wrote:

> On Mon, Dec 5, 2016 at 8:47 PM, Simon Lees  wrote:
>
> >
> >
> > On 12/06/2016 01:18 AM, Bruno Dilly wrote:
> > > Hi jpeg,
> > >
> > > On Mon, Dec 5, 2016 at 2:21 AM, Jean-Philippe André  >
> > > wrote:
> > >
> > >> Hi,
> > >>
> > >>
> > >> This seems to assume a finite and known in advance number of seats?
> > >> I'm not well aware of what the seats are or how that's all supposed to
> > >> work, but this sounds strange to me.
> > >>
> > >>
> > > On theme point of view, I can't see how this could be any different.
> > > If you don't know how many seats do you support or which seats would be
> > > supported,
> > > how could you be able to design it?
> > >
> > > EDC is pretty much a lot of parts with different states and programas
> > > listening to specific signals-sources and taking an action when it
> > matches.
> > > Everything is hardcoded on EDC files, right?
> > >
> > > But nothing stops you to create an UI more dynamic on code.
> > > You could listen to "seat,added,X" and create a random color
> > > to represent it. Then when you receive "mouse,over,X" for specific
> parts,
> > > you could change their colors, images, emit different sounds or
> whatever
> > > that makes sense for you.
> > >
> > >
> > >
> > >> Maybe someone can enlighten me? Why would the theme know the number of
> > >> seats?
> > >> (the approach probably makes perfect sense but i'm not sure what edje
> > >> should do wrt. seats)
> > >>
> > >
> >
> > I can't remember if you can currently do something like the % operator
> > with edje, but you could make it so that the first 4 seats get different
> > colors and then the 5th gets the same as the first. If you were only
> > trying to do colors if you can extract the X part (again don't remember
> > if this is possible) you could use a macro and substitute in a lookup
> > table for colors (saves writing every part X times)
> >
>
> Using scripts it is doable.
> Lets say, you could do something like:
>
>  program {
> name: "part,in";
> signal: "mouse,in,*";
> source: "part";
> script {
> handle_mouse_in(sig);
> }
>  }
>
> on handle_mouse_in you would be able to get the seat name
> using something like strcpy(seat_name, sig[strlen("mouse,in,")]);
>
> You could even create a list and append new random colors for each
> announced seat.
>
> But it's not only about colors, you could select images, or font size /
> families... anything
> that could matter for a theme.
>

Thanks for the response, Bruno.
This is all pretty much what I had in mind, I just wanted clarification.

And indeed beyond scripting or app code I can't see how we would design for
N users.

-- 
Jean-Philippe André
--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Edje multiseat support

2016-12-05 Thread Bruno Dilly
On Mon, Dec 5, 2016 at 10:53 PM, Bruno Dilly  wrote:

>
>
> On Mon, Dec 5, 2016 at 8:47 PM, Simon Lees  wrote:
>
>>
>>
>> On 12/06/2016 01:18 AM, Bruno Dilly wrote:
>> > Hi jpeg,
>> >
>> > On Mon, Dec 5, 2016 at 2:21 AM, Jean-Philippe André 
>> > wrote:
>> >
>> >> Hi,
>> >>
>> >>
>> >> This seems to assume a finite and known in advance number of seats?
>> >> I'm not well aware of what the seats are or how that's all supposed to
>> >> work, but this sounds strange to me.
>> >>
>> >>
>> > On theme point of view, I can't see how this could be any different.
>> > If you don't know how many seats do you support or which seats would be
>> > supported,
>> > how could you be able to design it?
>> >
>> > EDC is pretty much a lot of parts with different states and programas
>> > listening to specific signals-sources and taking an action when it
>> matches.
>> > Everything is hardcoded on EDC files, right?
>> >
>> > But nothing stops you to create an UI more dynamic on code.
>> > You could listen to "seat,added,X" and create a random color
>> > to represent it. Then when you receive "mouse,over,X" for specific
>> parts,
>> > you could change their colors, images, emit different sounds or whatever
>> > that makes sense for you.
>> >
>> >
>> >
>> >> Maybe someone can enlighten me? Why would the theme know the number of
>> >> seats?
>> >> (the approach probably makes perfect sense but i'm not sure what edje
>> >> should do wrt. seats)
>> >>
>> >
>>
>> I can't remember if you can currently do something like the % operator
>> with edje, but you could make it so that the first 4 seats get different
>> colors and then the 5th gets the same as the first. If you were only
>> trying to do colors if you can extract the X part (again don't remember
>> if this is possible) you could use a macro and substitute in a lookup
>> table for colors (saves writing every part X times)
>>
>
> Using scripts it is doable.
> Lets say, you could do something like:
>
>  program {
> name: "part,in";
> signal: "mouse,in,*";
> source: "part";
> script {
> handle_mouse_in(sig);
> }
>  }
>
> on handle_mouse_in you would be able to get the seat name
> using something like strcpy(seat_name, sig[strlen("mouse,in,")]);
>
> You could even create a list and append new random colors for each
> announced seat.
>
> But it's not only about colors, you could select images, or font size /
> families... anything
> that could matter for a theme.
>

I've pushed a commit to my branch (devs/bdilly/edje_multiseat) adding an
example
of how to make a theme with no assumptions regarding the amount of seats to
be
supported. It's edje-dynamic-multiseat.

Despite simple - it just change color classes depending on which seat is
over a part - it let's
clear that multiseat works on this scenario.

Sure, we need to use scripts for that, since we don't want to hardcode all
possible seats on theme:
EDC file looks like this:
http://pastebin.com/9YCRRZAN

Regards


>
>
>
>>
>> --
>>
>> Simon Lees (Simotek)http://simotek.net
>>
>> Emergency Update Team   keybase.io/simotek
>> SUSE LinuxAdeliade Australia, UTC+9:30
>> GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B
>>
>>
>> 
>> --
>> Developer Access Program for Intel Xeon Phi Processors
>> Access to Intel Xeon Phi processor-based developer platforms.
>> With one year of Intel Parallel Studio XE.
>> Training and support from Colfax.
>> Order your platform today.http://sdm.link/xeonphi
>> ___
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
>>
>
>
> --
> Bruno Dilly
> ProFUSION embedded systems
> http://profusion.mobi
>



-- 
Bruno Dilly
ProFUSION embedded systems
http://profusion.mobi
--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] efl-1.18 01/01: ecore_x: Early check image bpp based on depth

2016-12-05 Thread Jean-Philippe ANDRÉ
simotek pushed a commit to branch efl-1.18.

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

commit f232c130f390f72bd6691bc0635a91ff7a942d19
Author: Jean-Philippe Andre 
Date:   Wed Aug 24 14:40:20 2016 +0900

ecore_x: Early check image bpp based on depth

This fixes argb windows transparency in E software compositor.

My current problem is that I have no idea what changed, why this
is needed now, and how things could actually work before.

Fixes T4389

@fix
---
 src/lib/ecore_x/xlib/ecore_x_image.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/lib/ecore_x/xlib/ecore_x_image.c 
b/src/lib/ecore_x/xlib/ecore_x_image.c
index 6ce8919..016323c 100644
--- a/src/lib/ecore_x/xlib/ecore_x_image.c
+++ b/src/lib/ecore_x/xlib/ecore_x_image.c
@@ -194,6 +194,10 @@ ecore_x_image_new(int w,
im->h = h;
im->vis = vis;
im->depth = depth;
+   if (depth <= 8) im->bpp = 1;
+   else if (depth <= 16) im->bpp = 2;
+   else if (depth <= 24) im->bpp = 3;
+   else im->bpp = 4;
_ecore_x_image_shm_check();
im->shm = _ecore_x_image_shm_can;
return im;

-- 




Re: [E-devel] Edje multiseat support

2016-12-05 Thread Bruno Dilly
On Mon, Dec 5, 2016 at 8:47 PM, Simon Lees  wrote:

>
>
> On 12/06/2016 01:18 AM, Bruno Dilly wrote:
> > Hi jpeg,
> >
> > On Mon, Dec 5, 2016 at 2:21 AM, Jean-Philippe André 
> > wrote:
> >
> >> Hi,
> >>
> >>
> >> This seems to assume a finite and known in advance number of seats?
> >> I'm not well aware of what the seats are or how that's all supposed to
> >> work, but this sounds strange to me.
> >>
> >>
> > On theme point of view, I can't see how this could be any different.
> > If you don't know how many seats do you support or which seats would be
> > supported,
> > how could you be able to design it?
> >
> > EDC is pretty much a lot of parts with different states and programas
> > listening to specific signals-sources and taking an action when it
> matches.
> > Everything is hardcoded on EDC files, right?
> >
> > But nothing stops you to create an UI more dynamic on code.
> > You could listen to "seat,added,X" and create a random color
> > to represent it. Then when you receive "mouse,over,X" for specific parts,
> > you could change their colors, images, emit different sounds or whatever
> > that makes sense for you.
> >
> >
> >
> >> Maybe someone can enlighten me? Why would the theme know the number of
> >> seats?
> >> (the approach probably makes perfect sense but i'm not sure what edje
> >> should do wrt. seats)
> >>
> >
>
> I can't remember if you can currently do something like the % operator
> with edje, but you could make it so that the first 4 seats get different
> colors and then the 5th gets the same as the first. If you were only
> trying to do colors if you can extract the X part (again don't remember
> if this is possible) you could use a macro and substitute in a lookup
> table for colors (saves writing every part X times)
>

Using scripts it is doable.
Lets say, you could do something like:

 program {
name: "part,in";
signal: "mouse,in,*";
source: "part";
script {
handle_mouse_in(sig);
}
 }

on handle_mouse_in you would be able to get the seat name
using something like strcpy(seat_name, sig[strlen("mouse,in,")]);

You could even create a list and append new random colors for each
announced seat.

But it's not only about colors, you could select images, or font size /
families... anything
that could matter for a theme.



>
> --
>
> Simon Lees (Simotek)http://simotek.net
>
> Emergency Update Team   keybase.io/simotek
> SUSE LinuxAdeliade Australia, UTC+9:30
> GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B
>
>
> 
> --
> Developer Access Program for Intel Xeon Phi Processors
> Access to Intel Xeon Phi processor-based developer platforms.
> With one year of Intel Parallel Studio XE.
> Training and support from Colfax.
> Order your platform today.http://sdm.link/xeonphi
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
>


-- 
Bruno Dilly
ProFUSION embedded systems
http://profusion.mobi
--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [apps/ephoto] master 01/01: Update gitignore

2016-12-05 Thread Bruno Dilly
bdilly pushed a commit to branch master.

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

commit bce27ed4d42b227aacac4aa7d0e4783dbadb4f83
Author: Bruno Dilly 
Date:   Mon Dec 5 20:56:51 2016 -0200

Update gitignore
---
 .gitignore | 5 +
 1 file changed, 5 insertions(+)

diff --git a/.gitignore b/.gitignore
index 088810a..e0a7425 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+*.gmo
 *.o
 *.swp
 *.swo
@@ -29,6 +30,7 @@ data/themes/default/Makefile.in
 data/themes/default/ephoto.edj
 data/themes/default/images/Makefile
 data/themes/default/images/Makefile.in
+data/themes/ephoto.edj
 depcomp
 ephoto.spec
 install-sh
@@ -71,6 +73,8 @@ m4/xsize.m4
 m4/ulonglong.m4
 m4/inttypes.m4
 m4/isc-posix.m4
+m4/fcntl-o.m4
+m4/threadlib.m4
 missing
 mkinstalldirs
 po/Makefile
@@ -105,5 +109,6 @@ src/bin/ephoto_ql_la-ephoto_main.lo
 src/bin/ephoto_ql_la-ephoto_single_browser.lo
 src/bin/ephoto_ql_la-ephoto_slideshow.lo
 src/bin/ephoto_ql_la-ephoto_thumb_browser.lo
+src/bin/ephoto_thumbnail
 src/bin/stamp-h1
 

-- 




Re: [E-devel] Edje multiseat support

2016-12-05 Thread Simon Lees


On 12/06/2016 01:18 AM, Bruno Dilly wrote:
> Hi jpeg,
> 
> On Mon, Dec 5, 2016 at 2:21 AM, Jean-Philippe André 
> wrote:
> 
>> Hi,
>>
>>
>> This seems to assume a finite and known in advance number of seats?
>> I'm not well aware of what the seats are or how that's all supposed to
>> work, but this sounds strange to me.
>>
>>
> On theme point of view, I can't see how this could be any different.
> If you don't know how many seats do you support or which seats would be
> supported,
> how could you be able to design it?
> 
> EDC is pretty much a lot of parts with different states and programas
> listening to specific signals-sources and taking an action when it matches.
> Everything is hardcoded on EDC files, right?
> 
> But nothing stops you to create an UI more dynamic on code.
> You could listen to "seat,added,X" and create a random color
> to represent it. Then when you receive "mouse,over,X" for specific parts,
> you could change their colors, images, emit different sounds or whatever
> that makes sense for you.
> 
> 
> 
>> Maybe someone can enlighten me? Why would the theme know the number of
>> seats?
>> (the approach probably makes perfect sense but i'm not sure what edje
>> should do wrt. seats)
>>
> 

I can't remember if you can currently do something like the % operator
with edje, but you could make it so that the first 4 seats get different
colors and then the 5th gets the same as the first. If you were only
trying to do colors if you can extract the X part (again don't remember
if this is possible) you could use a macro and substitute in a lookup
table for colors (saves writing every part X times)

-- 

Simon Lees (Simotek)http://simotek.net

Emergency Update Team   keybase.io/simotek
SUSE LinuxAdeliade Australia, UTC+9:30
GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B



signature.asc
Description: OpenPGP digital signature
--
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [apps/terminology] master 01/01: termpty: handle read() from tty pair when the other end has died, on some BSD

2016-12-05 Thread Boris Faure
billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=5770c51d861cb7ad4793380b82d7e94f6a5c55a9

commit 5770c51d861cb7ad4793380b82d7e94f6a5c55a9
Author: Boris Faure 
Date:   Mon Dec 5 23:39:29 2016 +0100

termpty: handle read() from tty pair when the other end has died, on some 
BSD

In such a case, read() returns 0 and sets errno to ECHILD…
---
 src/bin/termpty.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/bin/termpty.c b/src/bin/termpty.c
index 476c1d0..dcdfdfc 100644
--- a/src/bin/termpty.c
+++ b/src/bin/termpty.c
@@ -184,8 +184,10 @@ _cb_fd_read(void *data, Ecore_Fd_Handler *fd_handler)
  rbuf++;
  len--;
   }
+errno = 0;
 len = read(ty->fd, rbuf, len);
-if (len < 0 && errno != EAGAIN)
+if ((len < 0 && errno != EAGAIN) ||
+(len == 0 && errno != 0))
   {
  /* Do not print error if the child has exited */
  if (ty->pid != -1)

-- 




[EGIT] [apps/terminology] master 01/01: termpty: ensure we're not reading from invalid fd

2016-12-05 Thread Boris Faure
billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=7508c8658b71d7151892ff7a9347c77348a64afc

commit 7508c8658b71d7151892ff7a9347c77348a64afc
Author: Boris Faure 
Date:   Mon Dec 5 22:45:44 2016 +0100

termpty: ensure we're not reading from invalid fd
---
 src/bin/termpty.c | 12 +++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/bin/termpty.c b/src/bin/termpty.c
index 57398fb..476c1d0 100644
--- a/src/bin/termpty.c
+++ b/src/bin/termpty.c
@@ -169,6 +169,8 @@ _cb_fd_read(void *data, Ecore_Fd_Handler *fd_handler)
 ERR("error while reading from tty slave fd");
 return ECORE_CALLBACK_CANCEL;
  }
+   if (ty->fd == -1)
+ return ECORE_CALLBACK_CANCEL;
 
// read up to 64 * 4096 bytes
for (reads = 0; reads < 64; reads++)
@@ -190,6 +192,10 @@ _cb_fd_read(void *data, Ecore_Fd_Handler *fd_handler)
{
   ERR("error while reading from tty slave fd: %s", 
strerror(errno));
}
+ close(ty->fd);
+ ty->fd = -1;
+ if (ty->hand_fd) ecore_main_fd_handler_del(ty->hand_fd);
+ ty->hand_fd = NULL;
  return ECORE_CALLBACK_CANCEL;
   }
 if (len <= 0) break;
@@ -584,7 +590,11 @@ termpty_free(Termpty *ty)
if (ty->block.blocks) eina_hash_free(ty->block.blocks);
if (ty->block.chid_map) eina_hash_free(ty->block.chid_map);
if (ty->block.active) eina_list_free(ty->block.active);
-   if (ty->fd >= 0) close(ty->fd);
+   if (ty->fd >= 0)
+ {
+close(ty->fd);
+ty->fd = -1;
+ }
if (ty->slavefd >= 0) close(ty->slavefd);
if (ty->pid >= 0)
  {

-- 




[EGIT] [apps/terminology] master 01/02: termpty: make verify_beacon silent by default

2016-12-05 Thread Boris Faure
billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=4b3225bfa9ac48e7866604c8a22f7712a38e4041

commit 4b3225bfa9ac48e7866604c8a22f7712a38e4041
Author: Boris Faure 
Date:   Mon Dec 5 22:13:30 2016 +0100

termpty: make verify_beacon silent by default
---
 src/bin/termpty.c | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/bin/termpty.c b/src/bin/termpty.c
index 3f79640..c1225b9 100644
--- a/src/bin/termpty.c
+++ b/src/bin/termpty.c
@@ -760,7 +760,7 @@ _backlog_remove_latest_nolock(Termpty *ty)
/* reset beacon */
ty->backlog_beacon.screen_y = 0;
ty->backlog_beacon.backlog_y = 0;
-   verify_beacon(ty, 1);
+   verify_beacon(ty, 0);
 
termpty_save_free(ts);
 }
@@ -840,7 +840,7 @@ termpty_backlog_length(Termpty *ty)
 
if (!ty->backsize)
  return 0;
-   verify_beacon(ty, 1);
+   verify_beacon(ty, 0);
 
backlog_y++;
while (42)
@@ -856,7 +856,7 @@ termpty_backlog_length(Termpty *ty)
 screen_y += nb_lines;
 ty->backlog_beacon.screen_y = screen_y;
 ty->backlog_beacon.backlog_y = backlog_y;
-verify_beacon(ty, 1);
+verify_beacon(ty, 0);
 backlog_y++;
  }
 }
@@ -867,7 +867,7 @@ termpty_backscroll_adjust(Termpty *ty, int *scroll)
int backlog_y = ty->backlog_beacon.backlog_y;
int screen_y = ty->backlog_beacon.screen_y;
 
-   verify_beacon(ty, 1);
+   verify_beacon(ty, 0);
if (!ty->backsize || *scroll <= 0)
  {
 *scroll = 0;
@@ -875,7 +875,7 @@ termpty_backscroll_adjust(Termpty *ty, int *scroll)
  }
if (*scroll < screen_y)
  {
-verify_beacon(ty, 1);
+verify_beacon(ty, 0);
 return;
  }
 
@@ -889,18 +889,18 @@ termpty_backscroll_adjust(Termpty *ty, int *scroll)
 if (!ts->cells || backlog_y >= (int)ty->backsize)
   {
  *scroll = ty->backlog_beacon.screen_y;
- verify_beacon(ty, 1);
+ verify_beacon(ty, 0);
  return;
   }
 nb_lines = (ts->w == 0) ? 1 : (ts->w + ty->w - 1) / ty->w;
 screen_y += nb_lines;
 ty->backlog_beacon.screen_y = screen_y;
 ty->backlog_beacon.backlog_y = backlog_y;
-verify_beacon(ty, 1);
+verify_beacon(ty, 0);
 backlog_y++;
 if (*scroll <= screen_y)
   {
- verify_beacon(ty, 1);
+ verify_beacon(ty, 0);
  return;
   }
  }
@@ -923,7 +923,7 @@ _termpty_cellrow_from_beacon_get(Termpty *ty, int 
requested_y, ssize_t *wret)
 ty->backlog_beacon.backlog_y = 0;
 ty->backlog_beacon.screen_y = 0;
  }
-   verify_beacon(ty, 1);
+   verify_beacon(ty, 0);
 
/* going upward */
while (requested_y >= screen_y)
@@ -1243,7 +1243,7 @@ termpty_resize(Termpty *ty, int new_w, int new_h)
ty->backlog_beacon.backlog_y = 0;
ty->backlog_beacon.screen_y = 0;
 
-   verify_beacon(ty, 1);
+   verify_beacon(ty, 0);
return;
 
 bad:

-- 




[EGIT] [apps/terminology] master 02/02: termpty: fix dead code and remove debugging code. CID1366815

2016-12-05 Thread Boris Faure
billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=9b6bed8033d1c7dc0c0b70208fb26d534729e508

commit 9b6bed8033d1c7dc0c0b70208fb26d534729e508
Author: Boris Faure 
Date:   Mon Dec 5 22:13:54 2016 +0100

termpty: fix dead code and remove debugging code. CID1366815
---
 src/bin/termpty.c | 6 +-
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/src/bin/termpty.c b/src/bin/termpty.c
index c1225b9..57398fb 100644
--- a/src/bin/termpty.c
+++ b/src/bin/termpty.c
@@ -955,11 +955,7 @@ _termpty_cellrow_from_beacon_get(Termpty *ty, int 
requested_y, ssize_t *wret)
  return >cells[delta * ty->w];
   }
 backlog_y++;
- }
- {
-ty->backlog_beacon.screen_y = screen_y;
-ty->backlog_beacon.backlog_y = backlog_y;
-verify_beacon(ty, 1);
+first_loop = EINA_FALSE;
  }
/* else, going downward */
while (requested_y <= screen_y)

-- 




[EGIT] [core/efl] master 02/02: evas: remove all Engine Info headers installation except for the buffer engine.

2016-12-05 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 942321204cc54ab440db0c15668e9e3ea9d13921
Author: Cedric BAIL 
Date:   Mon Dec 5 11:35:19 2016 -0800

evas: remove all Engine Info headers installation except for the buffer 
engine.

We do not have any upstream application using those headers and if any do,
they should have proper auto detection of them being available or not. 
Today,
most application should use Ecore_Evas directly. If the need reappear, we 
will
reintroduce those headers one by one.
---
 src/Makefile_Evas.am | 37 -
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index 973ec6b..0bbe6a6 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -699,13 +699,13 @@ endif
 endif
 
 if BUILD_ENGINE_FB
-dist_installed_evasmainheaders_DATA += modules/evas/engines/fb/Evas_Engine_FB.h
 FB_SOURCES = \
 modules/evas/engines/fb/evas_engine.c \
 modules/evas/engines/fb/evas_fb_main.c \
 modules/evas/engines/fb/evas_outbuf.c \
 modules/evas/engines/fb/evas_engine.h \
-modules/evas/engines/fb/evas_fb.h
+modules/evas/engines/fb/evas_fb.h \
+modules/evas/engines/fb/Evas_Engine_FB.h
 if EVAS_STATIC_BUILD_FB
 lib_evas_libevas_la_SOURCES += $(FB_SOURCES)
 lib_evas_libevas_la_CPPFLAGS += @evas_engine_fb_cflags@
@@ -918,7 +918,6 @@ endif
 endif
 
 if BUILD_ENGINE_GL_COCOA
-dist_installed_evasmainheaders_DATA += 
modules/evas/engines/gl_cocoa/Evas_Engine_GL_Cocoa.h
 GL_COCOA_SOURCES = \
 modules/evas/engines/gl_cocoa/evas_engine.c \
 modules/evas/engines/gl_cocoa/evas_outbuf.m \
@@ -954,10 +953,10 @@ endif
 endif
 
 if BUILD_ENGINE_GL_SDL
-dist_installed_evasmainheaders_DATA += 
modules/evas/engines/gl_sdl/Evas_Engine_GL_SDL.h
 GL_SDL_SOURCES = \
 modules/evas/engines/gl_sdl/evas_engine.c \
-modules/evas/engines/gl_sdl/evas_engine.h
+modules/evas/engines/gl_sdl/evas_engine.h \
+modules/evas/engines/gl_sdl/Evas_Engine_GL_SDL.h
 if EVAS_STATIC_BUILD_GL_SDL
 lib_evas_libevas_la_SOURCES += $(GL_SDL_SOURCES)
 lib_evas_libevas_la_CPPFLAGS += \
@@ -991,11 +990,11 @@ endif
 endif
 
 if BUILD_ENGINE_GL_X11
-dist_installed_evasmainheaders_DATA += 
modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h
 GL_X11_SOURCES = \
 modules/evas/engines/gl_x11/evas_engine.c \
 modules/evas/engines/gl_x11/evas_x_main.c \
-modules/evas/engines/gl_x11/evas_engine.h
+modules/evas/engines/gl_x11/evas_engine.h \
+modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h
 if EVAS_STATIC_BUILD_GL_X11
 lib_evas_libevas_la_SOURCES += $(GL_X11_SOURCES)
 lib_evas_libevas_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@
@@ -1026,12 +1025,12 @@ endif
 endif
 
 if BUILD_ENGINE_PSL1GHT
-dist_installed_evasmainheaders_DATA += 
modules/evas/engines/psl1ght/Evas_Engine_PSL1GHT.h
 PSL1GHT_SOURCES = \
 modules/evas/engines/psl1ght/evas_engine.c \
 modules/evas/engines/psl1ght/rsxutil.c \
 modules/evas/engines/psl1ght/evas_engine.h \
-modules/evas/engines/psl1ght/rsxutil.h
+modules/evas/engines/psl1ght/rsxutil.h \
+modules/evas/engines/psl1ght/Evas_Engine_PSL1GHT.h
 if EVAS_STATIC_BUILD_PSL1GHT
 lib_evas_libevas_la_SOURCES += $(PSL1GHT_SOURCES)
 lib_evas_libevas_la_CPPFLAGS += @evas_engine_psl1ght_cflags@
@@ -1061,13 +1060,13 @@ endif
 endif
 
 if BUILD_ENGINE_SOFTWARE_DDRAW
-dist_installed_evasmainheaders_DATA += 
modules/evas/engines/software_ddraw/Evas_Engine_Software_DDraw.h
 SOFTWARE_DDRAW_SOURCES = \
 modules/evas/engines/software_ddraw/evas_engine.c \
 modules/evas/engines/software_ddraw/evas_outbuf.c \
 modules/evas/engines/software_ddraw/evas_ddraw_buffer.c \
 modules/evas/engines/software_ddraw/evas_ddraw_main.cpp \
-modules/evas/engines/software_ddraw/evas_engine.h
+modules/evas/engines/software_ddraw/evas_engine.h \
+modules/evas/engines/software_ddraw/Evas_Engine_Software_DDraw.h
 if EVAS_STATIC_BUILD_SOFTWARE_DDRAW
 lib_evas_libevas_la_SOURCES += $(SOFTWARE_DDRAW_SOURCES)
 lib_evas_libevas_la_CPPFLAGS += @evas_engine_software_ddraw_cflags@
@@ -1099,13 +1098,13 @@ endif
 endif
 
 if BUILD_ENGINE_SOFTWARE_GDI
-dist_installed_evasmainheaders_DATA += 
modules/evas/engines/software_gdi/Evas_Engine_Software_Gdi.h
 SOFTWARE_GDI_SOURCES = \
 modules/evas/engines/software_gdi/evas_engine.c \
 modules/evas/engines/software_gdi/evas_outbuf.c \
 modules/evas/engines/software_gdi/evas_gdi_buffer.c \
 modules/evas/engines/software_gdi/evas_gdi_main.c \
-modules/evas/engines/software_gdi/evas_engine.h
+modules/evas/engines/software_gdi/evas_engine.h \
+modules/evas/engines/software_gdi/Evas_Engine_Software_Gdi.h
 if EVAS_STATIC_BUILD_SOFTWARE_GDI
 lib_evas_libevas_la_SOURCES += $(SOFTWARE_GDI_SOURCES)
 lib_evas_libevas_la_CPPFLAGS += @evas_engine_software_gdi_cflags@
@@ -1135,12 +1134,12 @@ endif
 endif
 
 if BUILD_ENGINE_SOFTWARE_X11
-dist_installed_evasmainheaders_DATA += 
modules/evas/engines/software_x11/Evas_Engine_Software_X11.h
 

[EGIT] [core/efl] master 01/02: evas: refactor initialisation and shutdown of evas_common.

2016-12-05 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 6427c77707fb6116a98b184b18b1b929bdb3184d
Author: Cedric BAIL 
Date:   Fri Dec 2 15:27:48 2016 -0800

evas: refactor initialisation and shutdown of evas_common.
---
 src/lib/evas/canvas/evas_main.c   | 9 ++---
 src/modules/evas/engines/buffer/evas_engine.c | 7 +--
 src/modules/evas/engines/drm/evas_engine.c| 3 ---
 src/modules/evas/engines/eglfs/evas_engine.c  | 2 --
 src/modules/evas/engines/fb/evas_engine.c | 5 -
 src/modules/evas/engines/gl_cocoa/evas_engine.c   | 2 --
 src/modules/evas/engines/gl_drm/evas_engine.c | 2 --
 src/modules/evas/engines/gl_sdl/evas_engine.c | 2 --
 src/modules/evas/engines/gl_x11/evas_engine.c | 2 --
 src/modules/evas/engines/psl1ght/evas_engine.c| 5 -
 src/modules/evas/engines/software_ddraw/evas_engine.c | 5 -
 src/modules/evas/engines/software_gdi/evas_engine.c   | 5 -
 src/modules/evas/engines/software_x11/evas_engine.c   | 3 ---
 src/modules/evas/engines/wayland_egl/evas_engine.c| 2 --
 src/modules/evas/engines/wayland_shm/evas_engine.c| 6 +-
 15 files changed, 8 insertions(+), 52 deletions(-)

diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 580101c..83f75b6 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -131,8 +131,8 @@ evas_shutdown(void)
  return _evas_init_count;
 
eina_log_timing(_evas_log_dom_global,
-  EINA_LOG_STATE_START,
-  EINA_LOG_STATE_SHUTDOWN);
+   EINA_LOG_STATE_START,
+   EINA_LOG_STATE_SHUTDOWN);
 
 #ifdef EVAS_CSERVE2
if (evas_cserve2_use_get())
@@ -163,7 +163,6 @@ evas_shutdown(void)
evas_thread_shutdown();
_evas_preload_thread_shutdown();
evas_async_events_shutdown();
-   //evas_common_shutdown();
evas_module_shutdown();
 
 #ifdef BUILD_LOADER_EET
@@ -354,6 +353,8 @@ _evas_canvas_efl_object_destructor(Eo *eo_e, 
Evas_Public_Data *e)
  e->engine.data.context);
 e->engine.func->output_free(e->engine.data.output);
 e->engine.func->info_free(eo_e, e->engine.info);
+
+evas_common_shutdown();
  }
 
for (i = 0; i < e->modifiers.mod.count; i++)
@@ -425,7 +426,9 @@ _evas_canvas_engine_info_set(Eo *eo_e, Evas_Public_Data *e, 
Evas_Engine_Info *in
if (info->magic != e->engine.info_magic) return EINA_FALSE;
 
evas_canvas_async_block(e);
+   evas_common_init();
res = e->engine.func->setup(eo_e, info);
+   if (!res) evas_common_shutdown();
return res;
 }
 
diff --git a/src/modules/evas/engines/buffer/evas_engine.c 
b/src/modules/evas/engines/buffer/evas_engine.c
index 5ee45dc..fcdd184 100644
--- a/src/modules/evas/engines/buffer/evas_engine.c
+++ b/src/modules/evas/engines/buffer/evas_engine.c
@@ -56,10 +56,7 @@ _output_setup(int w,
DATA32 color_key = 0;
 
re = calloc(1, sizeof(Render_Engine));
-   if (!re)
- return NULL;
-   /* if we haven't initialized - init (automatic abort if already done) */
-   evas_common_init();
+   if (!re) return NULL;
 
evas_buffer_outbuf_buf_init();
 
@@ -176,8 +173,6 @@ eng_output_free(void *data)
 evas_render_engine_software_generic_clean(>generic);
 free(re);
  }
-
-   evas_common_shutdown();
 }
 
 static Eina_Bool
diff --git a/src/modules/evas/engines/drm/evas_engine.c 
b/src/modules/evas/engines/drm/evas_engine.c
index f709592..3c198fb 100644
--- a/src/modules/evas/engines/drm/evas_engine.c
+++ b/src/modules/evas/engines/drm/evas_engine.c
@@ -88,7 +88,6 @@ eng_setup(Evas *evas, void *einfo)
re = epd->engine.data.output;
if (!re)
  {
-evas_common_init();
 
 re = _render_engine_setup(info, epd->output.w, epd->output.h);
 if (!re) return 0;
@@ -127,8 +126,6 @@ eng_output_free(void *data)
 evas_render_engine_software_generic_clean(>generic);
 free(re);
  }
-
-   evas_common_shutdown();
 }
 
 static int
diff --git a/src/modules/evas/engines/eglfs/evas_engine.c 
b/src/modules/evas/engines/eglfs/evas_engine.c
index cf7c21b..1c0e108 100644
--- a/src/modules/evas/engines/eglfs/evas_engine.c
+++ b/src/modules/evas/engines/eglfs/evas_engine.c
@@ -766,7 +766,6 @@ eng_setup(Evas *evas, void *in)
 
 if (!initted)
   {
- evas_common_init();
  glsym_evas_gl_preload_init();
   }
 
@@ -934,7 +933,6 @@ eng_output_free(void *data)
if ((initted == EINA_TRUE) && (gl_wins == 0))
  {
 glsym_evas_gl_preload_shutdown();
-evas_common_shutdown();
 initted = EINA_FALSE;
  }
 }
diff --git a/src/modules/evas/engines/fb/evas_engine.c 
b/src/modules/evas/engines/fb/evas_engine.c
index 204a614..4917113 100644
--- 

[EGIT] [apps/terminology] master 01/01: termpty: fix possible issue when reading and the shell exited

2016-12-05 Thread Boris Faure
billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=390e4193d0a0637c1b853e20d99afb7034a87123

commit 390e4193d0a0637c1b853e20d99afb7034a87123
Author: Boris Faure 
Date:   Mon Dec 5 21:53:15 2016 +0100

termpty: fix possible issue when reading and the shell exited
---
 src/bin/termpty.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/termpty.c b/src/bin/termpty.c
index 2795d17..3f79640 100644
--- a/src/bin/termpty.c
+++ b/src/bin/termpty.c
@@ -293,11 +293,11 @@ _cb_exe_exit(void *data,
ty->hand_exe_exit = NULL;
 
/* Read everything till the end */
-   do
+   res = ECORE_CALLBACK_PASS_ON;
+   while (ty->hand_fd && res != ECORE_CALLBACK_CANCEL)
  {
 res = _cb_fd_read(ty, ty->hand_fd);
  }
-   while (res != ECORE_CALLBACK_CANCEL);
 
if (ty->hand_fd) ecore_main_fd_handler_del(ty->hand_fd);
ty->hand_fd = NULL;

-- 




Re: [E-devel] [EGIT] [core/efl] master 03/03: eo: if EO_DEBUG, check if efl_super() object 'isa' the given class.

2016-12-05 Thread Gustavo Sverzut Barbieri
On Mon, Dec 5, 2016 at 3:16 PM, Tom Hacohen  wrote:
> This is wrong, and as JP and Stefan said, breaks things. First of all,
> why add code to the non-debug variation? Also, if you're already adding
> to the non-debug variation, why not include it in the commit message?
> This is very misleading.

sorry not splitting the commits as very small pieces, but the idea was
to check the object since the class was already being checked... the
check _is_a_obj() is as check as the class one, so that's why it's out
of the EO_DEBUG guards.


> Anyhow, as the tests clearly show, efl_super() is also used with class
> functions, so it needs to work. The efl_isa() line should work on
> classes too (I think), but the is_object is plain-wrong, and definitely
> shouldn't be outside the ifdef, but also not inside. It just doesn't
> belong there.

as above, I'm rather going to add "|| is_a_class()" like done for
class than hide it under EO_DEBUG due those reasons.

efl_isa() is more expensive, then okay to remain solely on EO_DEBUG.


> Furthermore, while I'm all in favour of this test in the eo_debug
> scenario, I disagree with the statement in the commit message. If you
> have such mistakes you are doing something very wrong, because the
> recommended way of using efl_super is with the macro "MY_CLASS" that
> should be defined to the current relevant class in the source file in
> order to avoid such mistakes as you described...

it happens, to start the first time I saw efl_super() was in code
generated by eolian, that uses the name, not MY_CLASS... then I
reached the c errors I said. If you do check my code in git, you see
I converted to MY_CLASS once I discovered about it by reading other
code. In all cases I'm far from a "n00b" and faced those errors and
when I expected the system to be nicer to me, thus I added these
errors checks.

Also remember that users may have 2+ objects in the same C file and
the misuse is even easier... even with the macro as you may naively
reorder the code and break, then a proper message like the one with
efl_isa() comes to rescue.

If we should just blindly trust efl_super() is going to be used
properly, then why check for class? that check is what remembered me
of my early mistakes and lead to the extra checks on object.



-- 
Gustavo Sverzut Barbieri
--
Mobile: +55 (16) 99354-9890

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Edje multiseat support

2016-12-05 Thread Guilherme Íscaro
(Still talking about the Evas/Object_OBject block API)

By default everyone is allowed to play with the widget and we can create a
seat "blacklist", which we will ignore any event that come from it. Coding
this way, we will also fulfill the Cedric's drag concerns. Which I can
specify which seat(s) are allowed to drag the object(s)

On Mon, Dec 5, 2016 at 5:43 PM, Guilherme Íscaro 
wrote:

> If we are going to block events from seats I prefer to create an API
> directly on Evas/Evas_Object. By doing so others can also take advantage of
> this API. I would also like to add that we should block keyboard events and
> focus/unfocus events - to keep things sane.
>
> On Mon, Dec 5, 2016 at 5:34 PM, Bruno Dilly  wrote:
>
>> On Mon, Dec 5, 2016 at 5:10 PM, Cedric BAIL  wrote:
>>
>> > On Mon, Dec 5, 2016 at 6:26 AM, Bruno Dilly 
>> wrote:
>> > > On Fri, Dec 2, 2016 at 8:19 PM, Cedric BAIL 
>> wrote:
>> > >> On Fri, Dec 2, 2016 at 8:54 AM, Bruno Dilly 
>> > wrote:
>> > >> > The idea is that a developer would be able to implement an UI that
>> > >> > may be used by more than one single seat, properly handling focus,
>> > >> > and providing different feedback for different seats action.
>> > >> >
>> > >> > Let’s say, different colors on focus, different images when
>> different
>> > >> > seat pointers are over, etc.
>> > >> >
>> > >> > I’ve done an initial implementation and wrote an example. It’s
>> > available
>> > >> > on my branch devs/bdilly/edje_multiseat . There you’ll be able to
>> find
>> > >> > edje_multiseat example (C code + EDC).
>> > >> >
>> > >> > To make this possible, a few main changes were done:
>> > >> >   *  New signals were added, adding the seat as suffix. So
>> “mouse,in”
>> > >> would
>> > >> > be still be emitted, but also “mouse,in,seat1”, for example
>> > >> >   * Real Parts now may be focused by multiple seats
>> > >> >   * Some actions receive an optional seat parameter. For instance,
>> > >> > FOCUS_SET may receive the seat name, or it will consider it's about
>> > the
>> > >> > default seat.
>> > >> >* Since Evas seat devices may have arbitrary names (at least
>> using
>> > >> > wayland backend you can name them as you want using udev rules), or
>> > set
>> > >> > them on programmatic ways, Edje will have custom names for seats,
>> > >> following
>> > >> > a well established pattern. So first announced seat will be named
>> > >> “seat1”,
>> > >> > the second “seat2”... If an application supports three seats, on
>> EDC
>> > you
>> > >> > know what signals you should expect. It makes it possible to write
>> > >> general
>> > >> > applications (in the sense of not knowing exactly seats
>> beforehand).
>> > But
>> > >> > let’s say it’s not the case. there is a specific product built in a
>> > way
>> > >> > that they know exactly which seats are supported and configured
>> their
>> > >> > names, or want to check if this seat has pointer, keyboard, or
>> > whatever…
>> > >> > for this cases, Edje also emits signals saying when devices were
>> added
>> > >> (or
>> > >> > removed) and their names. With these names you can use a new Edje
>> > >> function
>> > >> > to fetch the Evas device named as “seat1”.
>> > >>
>> > >> I think it would be better to actually emit both a "event,seat1" and
>> a
>> > >> "event,seat_named". It will be easier to use from theme where named
>> > >> seat have been customized and won't cost much more I think.
>> > >
>> > > It's easy to be done, a very few lines are required.
>> > >
>> > > But if you're customizing seat names, you could name them as
>> > > "seat1", "seat2"... and they would match EDC names.
>> > >
>> > > On the other hand, if we emit for both sequential names and
>> > > evas names, if you name them as seat1, seat2... in the end
>> > > you receive duplicated events...
>> > >
>> > > And when you receive them on C code, you would need to
>> > > figure out if they're custom names and use edje API to get the seat
>> > device,
>> > > or if they're evas names, and use evas API to get the seat device...
>> > > Having both at the same times seems to make things a bit harder.
>> > >
>> > > Adding an API to select what approach to be used seems acceptable?
>> > > By default using seat1, seat2, but you could require evas_names?
>> >
>> > I don't think an API would work as you only know in the theme if it
>> > handles them. Maybe better would be a flag in the edje group. Do you
>> > think that would be ok ?
>> >
>> >
>> Yeah, it seems to be a good idea.
>> I'll try it soon. Thanks
>>
>>
>> > > Something like
>> > > edje_multiseat_evas_names_set(bool) ?
>> > >
>> > > So you could write your EDC / code knowing if names would be
>> > > following Edje or Evas.
>> > >
>> > >> Something that seems out of the proposal is text cursor. I think we
>> > >> want to be able to assign a seat per Edje_Cursor so that we have
>> > >> multiple 

Re: [E-devel] Edje multiseat support

2016-12-05 Thread Guilherme Íscaro
If we are going to block events from seats I prefer to create an API
directly on Evas/Evas_Object. By doing so others can also take advantage of
this API. I would also like to add that we should block keyboard events and
focus/unfocus events - to keep things sane.

On Mon, Dec 5, 2016 at 5:34 PM, Bruno Dilly  wrote:

> On Mon, Dec 5, 2016 at 5:10 PM, Cedric BAIL  wrote:
>
> > On Mon, Dec 5, 2016 at 6:26 AM, Bruno Dilly 
> wrote:
> > > On Fri, Dec 2, 2016 at 8:19 PM, Cedric BAIL 
> wrote:
> > >> On Fri, Dec 2, 2016 at 8:54 AM, Bruno Dilly 
> > wrote:
> > >> > The idea is that a developer would be able to implement an UI that
> > >> > may be used by more than one single seat, properly handling focus,
> > >> > and providing different feedback for different seats action.
> > >> >
> > >> > Let’s say, different colors on focus, different images when
> different
> > >> > seat pointers are over, etc.
> > >> >
> > >> > I’ve done an initial implementation and wrote an example. It’s
> > available
> > >> > on my branch devs/bdilly/edje_multiseat . There you’ll be able to
> find
> > >> > edje_multiseat example (C code + EDC).
> > >> >
> > >> > To make this possible, a few main changes were done:
> > >> >   *  New signals were added, adding the seat as suffix. So
> “mouse,in”
> > >> would
> > >> > be still be emitted, but also “mouse,in,seat1”, for example
> > >> >   * Real Parts now may be focused by multiple seats
> > >> >   * Some actions receive an optional seat parameter. For instance,
> > >> > FOCUS_SET may receive the seat name, or it will consider it's about
> > the
> > >> > default seat.
> > >> >* Since Evas seat devices may have arbitrary names (at least
> using
> > >> > wayland backend you can name them as you want using udev rules), or
> > set
> > >> > them on programmatic ways, Edje will have custom names for seats,
> > >> following
> > >> > a well established pattern. So first announced seat will be named
> > >> “seat1”,
> > >> > the second “seat2”... If an application supports three seats, on EDC
> > you
> > >> > know what signals you should expect. It makes it possible to write
> > >> general
> > >> > applications (in the sense of not knowing exactly seats beforehand).
> > But
> > >> > let’s say it’s not the case. there is a specific product built in a
> > way
> > >> > that they know exactly which seats are supported and configured
> their
> > >> > names, or want to check if this seat has pointer, keyboard, or
> > whatever…
> > >> > for this cases, Edje also emits signals saying when devices were
> added
> > >> (or
> > >> > removed) and their names. With these names you can use a new Edje
> > >> function
> > >> > to fetch the Evas device named as “seat1”.
> > >>
> > >> I think it would be better to actually emit both a "event,seat1" and a
> > >> "event,seat_named". It will be easier to use from theme where named
> > >> seat have been customized and won't cost much more I think.
> > >
> > > It's easy to be done, a very few lines are required.
> > >
> > > But if you're customizing seat names, you could name them as
> > > "seat1", "seat2"... and they would match EDC names.
> > >
> > > On the other hand, if we emit for both sequential names and
> > > evas names, if you name them as seat1, seat2... in the end
> > > you receive duplicated events...
> > >
> > > And when you receive them on C code, you would need to
> > > figure out if they're custom names and use edje API to get the seat
> > device,
> > > or if they're evas names, and use evas API to get the seat device...
> > > Having both at the same times seems to make things a bit harder.
> > >
> > > Adding an API to select what approach to be used seems acceptable?
> > > By default using seat1, seat2, but you could require evas_names?
> >
> > I don't think an API would work as you only know in the theme if it
> > handles them. Maybe better would be a flag in the edje group. Do you
> > think that would be ok ?
> >
> >
> Yeah, it seems to be a good idea.
> I'll try it soon. Thanks
>
>
> > > Something like
> > > edje_multiseat_evas_names_set(bool) ?
> > >
> > > So you could write your EDC / code knowing if names would be
> > > following Edje or Evas.
> > >
> > >> Something that seems out of the proposal is text cursor. I think we
> > >> want to be able to assign a seat per Edje_Cursor so that we have
> > >> multiple people able to mess with an entry, but I know that Tom and
> > >> Daniel have been working on redefining the API there. So I am not sure
> > >> about what needs to be done in that context. Maybe they can share
> > >> there thinking on the topic.
> > >
> > > It was kind of out of the proposal, indeed.
> > > I'll take a look on it soon and ping you back about it.
> >
> > Ah, yes, I forgot about it.
> >
> > >> Another case, that I think we want to handle somehow is specific drag
> > >> per seat. If you look at edje_callback.c, you will 

Re: [E-devel] Edje multiseat support

2016-12-05 Thread Bruno Dilly
On Mon, Dec 5, 2016 at 5:10 PM, Cedric BAIL  wrote:

> On Mon, Dec 5, 2016 at 6:26 AM, Bruno Dilly  wrote:
> > On Fri, Dec 2, 2016 at 8:19 PM, Cedric BAIL  wrote:
> >> On Fri, Dec 2, 2016 at 8:54 AM, Bruno Dilly 
> wrote:
> >> > The idea is that a developer would be able to implement an UI that
> >> > may be used by more than one single seat, properly handling focus,
> >> > and providing different feedback for different seats action.
> >> >
> >> > Let’s say, different colors on focus, different images when different
> >> > seat pointers are over, etc.
> >> >
> >> > I’ve done an initial implementation and wrote an example. It’s
> available
> >> > on my branch devs/bdilly/edje_multiseat . There you’ll be able to find
> >> > edje_multiseat example (C code + EDC).
> >> >
> >> > To make this possible, a few main changes were done:
> >> >   *  New signals were added, adding the seat as suffix. So “mouse,in”
> >> would
> >> > be still be emitted, but also “mouse,in,seat1”, for example
> >> >   * Real Parts now may be focused by multiple seats
> >> >   * Some actions receive an optional seat parameter. For instance,
> >> > FOCUS_SET may receive the seat name, or it will consider it's about
> the
> >> > default seat.
> >> >* Since Evas seat devices may have arbitrary names (at least using
> >> > wayland backend you can name them as you want using udev rules), or
> set
> >> > them on programmatic ways, Edje will have custom names for seats,
> >> following
> >> > a well established pattern. So first announced seat will be named
> >> “seat1”,
> >> > the second “seat2”... If an application supports three seats, on EDC
> you
> >> > know what signals you should expect. It makes it possible to write
> >> general
> >> > applications (in the sense of not knowing exactly seats beforehand).
> But
> >> > let’s say it’s not the case. there is a specific product built in a
> way
> >> > that they know exactly which seats are supported and configured their
> >> > names, or want to check if this seat has pointer, keyboard, or
> whatever…
> >> > for this cases, Edje also emits signals saying when devices were added
> >> (or
> >> > removed) and their names. With these names you can use a new Edje
> >> function
> >> > to fetch the Evas device named as “seat1”.
> >>
> >> I think it would be better to actually emit both a "event,seat1" and a
> >> "event,seat_named". It will be easier to use from theme where named
> >> seat have been customized and won't cost much more I think.
> >
> > It's easy to be done, a very few lines are required.
> >
> > But if you're customizing seat names, you could name them as
> > "seat1", "seat2"... and they would match EDC names.
> >
> > On the other hand, if we emit for both sequential names and
> > evas names, if you name them as seat1, seat2... in the end
> > you receive duplicated events...
> >
> > And when you receive them on C code, you would need to
> > figure out if they're custom names and use edje API to get the seat
> device,
> > or if they're evas names, and use evas API to get the seat device...
> > Having both at the same times seems to make things a bit harder.
> >
> > Adding an API to select what approach to be used seems acceptable?
> > By default using seat1, seat2, but you could require evas_names?
>
> I don't think an API would work as you only know in the theme if it
> handles them. Maybe better would be a flag in the edje group. Do you
> think that would be ok ?
>
>
Yeah, it seems to be a good idea.
I'll try it soon. Thanks


> > Something like
> > edje_multiseat_evas_names_set(bool) ?
> >
> > So you could write your EDC / code knowing if names would be
> > following Edje or Evas.
> >
> >> Something that seems out of the proposal is text cursor. I think we
> >> want to be able to assign a seat per Edje_Cursor so that we have
> >> multiple people able to mess with an entry, but I know that Tom and
> >> Daniel have been working on redefining the API there. So I am not sure
> >> about what needs to be done in that context. Maybe they can share
> >> there thinking on the topic.
> >
> > It was kind of out of the proposal, indeed.
> > I'll take a look on it soon and ping you back about it.
>
> Ah, yes, I forgot about it.
>
> >> Another case, that I think we want to handle somehow is specific drag
> >> per seat. If you look at edje_callback.c, you will see that we need to
> >> handle seat in that context too. I would guess we want to set some
> >> kind of filter via both API and theme. Do you have an opinion on that
> >> bit already ?
> >
> > I'm not sure if I get what do you mean, here.
> > Have you had the opportunity to test the example I've written?
>
> Yes, they help understand the current scope.
>
> > I've added a couple drag bars on it, that change colors in different ways
> > depending on which seat is handling them. So seats can move
> > different drags at the same time, or could even try to 

Re: [E-devel] PYTHON: Trouble with toolbar.selected_item_get

2016-12-05 Thread Jeff Hoogland
That does the trick. Good suggestion.

On Mon, Dec 5, 2016 at 12:58 PM, Stephen Houston 
wrote:

> Why not use the selected callback ?
>
> On Mon, Dec 5, 2016, 10:34 AM Jeff Hoogland 
> wrote:
>
> > Anything I can do to help pin this down? As I mentioned this worked as
> > expected with EFL 1.15
> >
> > On Dec 5, 2016 9:26 AM, "Kai Huuhko"  wrote:
> >
> > > I'm guessing the "selected" function inside toolbar code is being
> > > called **after** the "clicked" callback is processed, so what you get
> > > is the item being still unselected when your callback is called and
> > > therefore setting it unselected does nothing. But this needs
> > > verification.
> > >
> > > 2016-12-05 16:40 GMT+02:00 Jeff Hoogland :
> > > > That change makes item appear as a proper toolbar item object (and
> gets
> > > rid
> > > > of the error message) but item.selected_set(False) is still failing
> to
> > > > unselect the item that is clicked on.
> > > >
> > > > On Mon, Dec 5, 2016 at 2:21 AM, Kai Huuhko 
> > wrote:
> > > >
> > > >> This looks like an issue in EFL, possibly fallout from moving to
> > > >> Eo/EFL events. The callback is being processed before selected item
> is
> > > >> changed, so you get None (NULL in C) when
> > > >> elm_toolbar_item_selected_get() is called within the callback.
> > > >>
> > > >> The item object should be passed to clicked callback as an argument,
> > > >> can you check if that's None as well? Change line 1174 to
> > > >>
> > > >> def itemClicked(self, obj, item):
> > > >>
> > > >> and remove line 1175.
> > > >>
> > > >>
> > > >> 2016-12-05 3:25 GMT+02:00 Jeff Hoogland :
> > > >> > Source code: https://github.com/JeffHoogland/ePad/blob/master/
> > > epad#L1176
> > > >> >
> > > >> > Under EFL 1.15 this code worked fine. It essentially toggled of a
> > > toolbar
> > > >> > button after it was clicked so long as it was not a dropdown menu.
> > > >> >
> > > >> > Under EFL 1.18 however the item_selected_get function keeps
> > returning
> > > a
> > > >> > none type:
> > > >> >
> > > >> > jeff@hoogland-W740SU:~/Storage/GitHub/ePad$ ./epad
> > > >> > Traceback (most recent call last):
> > > >> >   File "efl/evas/efl.evas_object_smart.pxi", line 446, in
> > > >> > efl.evas._smart_callback (efl/evas/efl.evas.c:78724)
> > > >> >   File "./epad", line 1176, in itemClicked
> > > >> > if item.menu_get() is None and item.selected_get():
> > > >> > AttributeError: 'NoneType' object has no attribute 'menu_get'
> > > >> >
> > > >> > Any ideas why this is? What can I do to get this code block to
> work
> > as
> > > >> > intended under EFL 1.18? Using the EFL 1.18.3 release with python
> > EFL
> > > >> > 1.18.0 release tar.
> > > >> >
> > > >> > Thanks!
> > > >> > --
> > > >> > ~Jeff Hoogland 
> > > >> > My Projects on GitHub 
> > > >> > 
> > > >> --
> > > >> > ___
> > > >> > enlightenment-devel mailing list
> > > >> > enlightenment-devel@lists.sourceforge.net
> > > >> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > >>
> > > >> 
> > > >> --
> > > >> ___
> > > >> enlightenment-devel mailing list
> > > >> enlightenment-devel@lists.sourceforge.net
> > > >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > >>
> > > >
> > > >
> > > >
> > > > --
> > > > ~Jeff Hoogland 
> > > > My Projects on GitHub 
> > > > 
> > > --
> > > > ___
> > > > enlightenment-devel mailing list
> > > > enlightenment-devel@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> > > 
> > > --
> > > ___
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> >
> > 
> --
> > ___
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
> 
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> 

Re: [E-devel] Edje multiseat support

2016-12-05 Thread Cedric BAIL
On Mon, Dec 5, 2016 at 6:26 AM, Bruno Dilly  wrote:
> On Fri, Dec 2, 2016 at 8:19 PM, Cedric BAIL  wrote:
>> On Fri, Dec 2, 2016 at 8:54 AM, Bruno Dilly  wrote:
>> > The idea is that a developer would be able to implement an UI that
>> > may be used by more than one single seat, properly handling focus,
>> > and providing different feedback for different seats action.
>> >
>> > Let’s say, different colors on focus, different images when different
>> > seat pointers are over, etc.
>> >
>> > I’ve done an initial implementation and wrote an example. It’s available
>> > on my branch devs/bdilly/edje_multiseat . There you’ll be able to find
>> > edje_multiseat example (C code + EDC).
>> >
>> > To make this possible, a few main changes were done:
>> >   *  New signals were added, adding the seat as suffix. So “mouse,in”
>> would
>> > be still be emitted, but also “mouse,in,seat1”, for example
>> >   * Real Parts now may be focused by multiple seats
>> >   * Some actions receive an optional seat parameter. For instance,
>> > FOCUS_SET may receive the seat name, or it will consider it's about the
>> > default seat.
>> >* Since Evas seat devices may have arbitrary names (at least using
>> > wayland backend you can name them as you want using udev rules), or set
>> > them on programmatic ways, Edje will have custom names for seats,
>> following
>> > a well established pattern. So first announced seat will be named
>> “seat1”,
>> > the second “seat2”... If an application supports three seats, on EDC you
>> > know what signals you should expect. It makes it possible to write
>> general
>> > applications (in the sense of not knowing exactly seats beforehand). But
>> > let’s say it’s not the case. there is a specific product built in a way
>> > that they know exactly which seats are supported and configured their
>> > names, or want to check if this seat has pointer, keyboard, or whatever…
>> > for this cases, Edje also emits signals saying when devices were added
>> (or
>> > removed) and their names. With these names you can use a new Edje
>> function
>> > to fetch the Evas device named as “seat1”.
>>
>> I think it would be better to actually emit both a "event,seat1" and a
>> "event,seat_named". It will be easier to use from theme where named
>> seat have been customized and won't cost much more I think.
>
> It's easy to be done, a very few lines are required.
>
> But if you're customizing seat names, you could name them as
> "seat1", "seat2"... and they would match EDC names.
>
> On the other hand, if we emit for both sequential names and
> evas names, if you name them as seat1, seat2... in the end
> you receive duplicated events...
>
> And when you receive them on C code, you would need to
> figure out if they're custom names and use edje API to get the seat device,
> or if they're evas names, and use evas API to get the seat device...
> Having both at the same times seems to make things a bit harder.
>
> Adding an API to select what approach to be used seems acceptable?
> By default using seat1, seat2, but you could require evas_names?

I don't think an API would work as you only know in the theme if it
handles them. Maybe better would be a flag in the edje group. Do you
think that would be ok ?

> Something like
> edje_multiseat_evas_names_set(bool) ?
>
> So you could write your EDC / code knowing if names would be
> following Edje or Evas.
>
>> Something that seems out of the proposal is text cursor. I think we
>> want to be able to assign a seat per Edje_Cursor so that we have
>> multiple people able to mess with an entry, but I know that Tom and
>> Daniel have been working on redefining the API there. So I am not sure
>> about what needs to be done in that context. Maybe they can share
>> there thinking on the topic.
>
> It was kind of out of the proposal, indeed.
> I'll take a look on it soon and ping you back about it.

Ah, yes, I forgot about it.

>> Another case, that I think we want to handle somehow is specific drag
>> per seat. If you look at edje_callback.c, you will see that we need to
>> handle seat in that context too. I would guess we want to set some
>> kind of filter via both API and theme. Do you have an opinion on that
>> bit already ?
>
> I'm not sure if I get what do you mean, here.
> Have you had the opportunity to test the example I've written?

Yes, they help understand the current scope.

> I've added a couple drag bars on it, that change colors in different ways
> depending on which seat is handling them. So seats can move
> different drags at the same time, or could even try to use the same
> at the same time, and code would receive signals saying which seat
> changed it.

So what if I want to allow a drag just for one seat ? Or a set of seat
? Is that possible ? When I looked at edje_callback.c I couldn't see
any way to prevent the signal from beeing emitted for a specific seat.

>> Also if we are to do a theme in 

Re: [E-devel] PYTHON: Trouble with toolbar.selected_item_get

2016-12-05 Thread Stephen Houston
Why not use the selected callback ?

On Mon, Dec 5, 2016, 10:34 AM Jeff Hoogland  wrote:

> Anything I can do to help pin this down? As I mentioned this worked as
> expected with EFL 1.15
>
> On Dec 5, 2016 9:26 AM, "Kai Huuhko"  wrote:
>
> > I'm guessing the "selected" function inside toolbar code is being
> > called **after** the "clicked" callback is processed, so what you get
> > is the item being still unselected when your callback is called and
> > therefore setting it unselected does nothing. But this needs
> > verification.
> >
> > 2016-12-05 16:40 GMT+02:00 Jeff Hoogland :
> > > That change makes item appear as a proper toolbar item object (and gets
> > rid
> > > of the error message) but item.selected_set(False) is still failing to
> > > unselect the item that is clicked on.
> > >
> > > On Mon, Dec 5, 2016 at 2:21 AM, Kai Huuhko 
> wrote:
> > >
> > >> This looks like an issue in EFL, possibly fallout from moving to
> > >> Eo/EFL events. The callback is being processed before selected item is
> > >> changed, so you get None (NULL in C) when
> > >> elm_toolbar_item_selected_get() is called within the callback.
> > >>
> > >> The item object should be passed to clicked callback as an argument,
> > >> can you check if that's None as well? Change line 1174 to
> > >>
> > >> def itemClicked(self, obj, item):
> > >>
> > >> and remove line 1175.
> > >>
> > >>
> > >> 2016-12-05 3:25 GMT+02:00 Jeff Hoogland :
> > >> > Source code: https://github.com/JeffHoogland/ePad/blob/master/
> > epad#L1176
> > >> >
> > >> > Under EFL 1.15 this code worked fine. It essentially toggled of a
> > toolbar
> > >> > button after it was clicked so long as it was not a dropdown menu.
> > >> >
> > >> > Under EFL 1.18 however the item_selected_get function keeps
> returning
> > a
> > >> > none type:
> > >> >
> > >> > jeff@hoogland-W740SU:~/Storage/GitHub/ePad$ ./epad
> > >> > Traceback (most recent call last):
> > >> >   File "efl/evas/efl.evas_object_smart.pxi", line 446, in
> > >> > efl.evas._smart_callback (efl/evas/efl.evas.c:78724)
> > >> >   File "./epad", line 1176, in itemClicked
> > >> > if item.menu_get() is None and item.selected_get():
> > >> > AttributeError: 'NoneType' object has no attribute 'menu_get'
> > >> >
> > >> > Any ideas why this is? What can I do to get this code block to work
> as
> > >> > intended under EFL 1.18? Using the EFL 1.18.3 release with python
> EFL
> > >> > 1.18.0 release tar.
> > >> >
> > >> > Thanks!
> > >> > --
> > >> > ~Jeff Hoogland 
> > >> > My Projects on GitHub 
> > >> > 
> > >> --
> > >> > ___
> > >> > enlightenment-devel mailing list
> > >> > enlightenment-devel@lists.sourceforge.net
> > >> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >>
> > >> 
> > >> --
> > >> ___
> > >> enlightenment-devel mailing list
> > >> enlightenment-devel@lists.sourceforge.net
> > >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >>
> > >
> > >
> > >
> > > --
> > > ~Jeff Hoogland 
> > > My Projects on GitHub 
> > > 
> > --
> > > ___
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
> > 
> > --
> > ___
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
>
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 03/03: eo: if EO_DEBUG, check if efl_super() object 'isa' the given class.

2016-12-05 Thread Tom Hacohen
This is wrong, and as JP and Stefan said, breaks things. First of all, 
why add code to the non-debug variation? Also, if you're already adding 
to the non-debug variation, why not include it in the commit message? 
This is very misleading.

Anyhow, as the tests clearly show, efl_super() is also used with class 
functions, so it needs to work. The efl_isa() line should work on 
classes too (I think), but the is_object is plain-wrong, and definitely 
shouldn't be outside the ifdef, but also not inside. It just doesn't 
belong there.

Furthermore, while I'm all in favour of this test in the eo_debug 
scenario, I disagree with the statement in the commit message. If you 
have such mistakes you are doing something very wrong, because the 
recommended way of using efl_super is with the macro "MY_CLASS" that 
should be defined to the current relevant class in the source file in 
order to avoid such mistakes as you described...

--
Tom.

On 02/12/16 16:51, Gustavo Sverzut Barbieri wrote:
> barbieri pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=04450c4ee03fd20271ec4f911667acea10ba1375
>
> commit 04450c4ee03fd20271ec4f911667acea10ba1375
> Author: Gustavo Sverzut Barbieri 
> Date:   Fri Dec 2 14:49:06 2016 -0200
>
> eo: if EO_DEBUG, check if efl_super() object 'isa' the given class.
>
> A common error is to copy & paste efl_super() calls and forget to fix
> the class. If usin EO_DEBUG, then use efl_isa() to error.
> ---
>  src/lib/eo/eo.c | 13 +
>  1 file changed, 13 insertions(+)
>
> diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
> index 9719034..e86f052 100644
> --- a/src/lib/eo/eo.c
> +++ b/src/lib/eo/eo.c
> @@ -318,6 +318,11 @@ efl_super(const Eo *obj, const Efl_Class *cur_klass)
>  {
> EO_CLASS_POINTER_GOTO(cur_klass, klass, err);
>
> +   if (EINA_UNLIKELY(!_eo_is_a_obj(obj))) goto err_obj;
> +#ifdef EO_DEBUG
> +   if (EINA_UNLIKELY(!efl_isa(obj, cur_klass))) goto err_obj_hierarchy;
> +#endif
> +
> /* FIXME: Switch to atomic operations intead of lock. */
> eina_spinlock_take(&_super_class_lock);
> _super_class = klass;
> @@ -326,6 +331,14 @@ efl_super(const Eo *obj, const Efl_Class *cur_klass)
>  err:
> _EO_POINTER_ERR("Class (%p) is an invalid ref.", cur_klass);
> return NULL;
> +err_obj:
> +   _EO_POINTER_ERR("Object (%p) is an invalid ref, class=%p (%s).", obj, 
> cur_klass, efl_class_name_get(cur_klass));
> +   return NULL;
> +#ifdef EO_DEBUG
> +err_obj_hierarchy:
> +   _EO_POINTER_ERR("Object (%p) class=%p (%s) is not an instance of class=%p 
> (%s).", obj, efl_class_get(obj), efl_class_name_get(obj), cur_klass, 
> efl_class_name_get(cur_klass));
> +#endif
> +   return NULL;
>  }
>
>  EAPI Eina_Bool
>


--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] PYTHON: Trouble with toolbar.selected_item_get

2016-12-05 Thread Jeff Hoogland
Anything I can do to help pin this down? As I mentioned this worked as
expected with EFL 1.15

On Dec 5, 2016 9:26 AM, "Kai Huuhko"  wrote:

> I'm guessing the "selected" function inside toolbar code is being
> called **after** the "clicked" callback is processed, so what you get
> is the item being still unselected when your callback is called and
> therefore setting it unselected does nothing. But this needs
> verification.
>
> 2016-12-05 16:40 GMT+02:00 Jeff Hoogland :
> > That change makes item appear as a proper toolbar item object (and gets
> rid
> > of the error message) but item.selected_set(False) is still failing to
> > unselect the item that is clicked on.
> >
> > On Mon, Dec 5, 2016 at 2:21 AM, Kai Huuhko  wrote:
> >
> >> This looks like an issue in EFL, possibly fallout from moving to
> >> Eo/EFL events. The callback is being processed before selected item is
> >> changed, so you get None (NULL in C) when
> >> elm_toolbar_item_selected_get() is called within the callback.
> >>
> >> The item object should be passed to clicked callback as an argument,
> >> can you check if that's None as well? Change line 1174 to
> >>
> >> def itemClicked(self, obj, item):
> >>
> >> and remove line 1175.
> >>
> >>
> >> 2016-12-05 3:25 GMT+02:00 Jeff Hoogland :
> >> > Source code: https://github.com/JeffHoogland/ePad/blob/master/
> epad#L1176
> >> >
> >> > Under EFL 1.15 this code worked fine. It essentially toggled of a
> toolbar
> >> > button after it was clicked so long as it was not a dropdown menu.
> >> >
> >> > Under EFL 1.18 however the item_selected_get function keeps returning
> a
> >> > none type:
> >> >
> >> > jeff@hoogland-W740SU:~/Storage/GitHub/ePad$ ./epad
> >> > Traceback (most recent call last):
> >> >   File "efl/evas/efl.evas_object_smart.pxi", line 446, in
> >> > efl.evas._smart_callback (efl/evas/efl.evas.c:78724)
> >> >   File "./epad", line 1176, in itemClicked
> >> > if item.menu_get() is None and item.selected_get():
> >> > AttributeError: 'NoneType' object has no attribute 'menu_get'
> >> >
> >> > Any ideas why this is? What can I do to get this code block to work as
> >> > intended under EFL 1.18? Using the EFL 1.18.3 release with python EFL
> >> > 1.18.0 release tar.
> >> >
> >> > Thanks!
> >> > --
> >> > ~Jeff Hoogland 
> >> > My Projects on GitHub 
> >> > 
> >> --
> >> > ___
> >> > enlightenment-devel mailing list
> >> > enlightenment-devel@lists.sourceforge.net
> >> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >>
> >> 
> >> --
> >> ___
> >> enlightenment-devel mailing list
> >> enlightenment-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >>
> >
> >
> >
> > --
> > ~Jeff Hoogland 
> > My Projects on GitHub 
> > 
> --
> > ___
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
> 
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 04/04: elm: config: check return value of eina_value_get instead of returning always TRUE

2016-12-05 Thread Stefan Schmidt
stefan pushed a commit to branch master.

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

commit 74914c05159742d9228ecda2228726e341cf8ac6
Author: Stefan Schmidt 
Date:   Mon Dec 5 17:00:56 2016 +0100

elm: config: check return value of eina_value_get instead of returning 
always TRUE

There is always a chance that eina_value_get will not return EINA_TRUE here 
so
better check it and use it as return value directly.

CID: 1357138
---
 src/lib/elementary/elm_config.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c
index bd496ee..0af9d58 100644
--- a/src/lib/elementary/elm_config.c
+++ b/src/lib/elementary/elm_config.c
@@ -4348,8 +4348,7 @@ _eina_value_to_int(const Eina_Value *val, int *i)
 
if (eina_value_type_get(val) == EINA_VALUE_TYPE_INT)
  {
-eina_value_get(val, i);
-return EINA_TRUE;
+return eina_value_get(val, i);
  }
 
ival = eina_value_new(EINA_VALUE_TYPE_INT);

-- 




[EGIT] [core/efl] master 02/04: edje: svg_loader: make sure we check the return from all _parser_number calls

2016-12-05 Thread Stefan Schmidt
stefan pushed a commit to branch master.

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

commit 6cf11650c451a93fd6fbd8c3424d2f724791109d
Author: Stefan Schmidt 
Date:   Mon Dec 5 16:30:22 2016 +0100

edje: svg_loader: make sure we check the return from all _parser_number 
calls

Instead of nesting this make a bit more sense (at least to me). Also return 
in
case one of these is not a number.

CID: 1356610
---
 src/bin/edje/edje_svg_loader.c | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/bin/edje/edje_svg_loader.c b/src/bin/edje/edje_svg_loader.c
index 781f141..c9b4165 100644
--- a/src/bin/edje/edje_svg_loader.c
+++ b/src/bin/edje/edje_svg_loader.c
@@ -680,10 +680,12 @@ _attr_parse_svg_node(void *data, const char *key, const 
char *value)
  }
else if (!strcmp(key, "viewBox"))
  {
-if (_parse_number(, >vx))
-  if (_parse_number(, >vy))
-if (_parse_number(, >vw))
-  _parse_number(, >vh);
+
+if (!_parse_number(, >vx) && !_parse_number(, 
>vy) &&
+!_parse_number(, >vw) && !_parse_number(, 
>vh))
+  {
+ return EINA_FALSE;
+ }
  }
else if (!strcmp(key, "style"))
  {

-- 




[EGIT] [core/efl] master 01/04: efreetd: handle invalid fd in all cases

2016-12-05 Thread Stefan Schmidt
stefan pushed a commit to branch master.

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

commit e1fd028081507c87c5b6245881f8408eca1e572c
Author: Stefan Schmidt 
Date:   Mon Dec 5 16:05:12 2016 +0100

efreetd: handle invalid fd in all cases

Very unlikely that we will get a -1 when opening /dev/null but you never 
know
what kind of system you are running on.

CID: 1361759
---
 src/bin/efreet/efreetd.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/bin/efreet/efreetd.c b/src/bin/efreet/efreetd.c
index 839cd60..8ed670d 100644
--- a/src/bin/efreet/efreetd.c
+++ b/src/bin/efreet/efreetd.c
@@ -72,6 +72,10 @@ main(int argc, char *argv[])
else
  {
 fd = open("/dev/null", O_WRONLY);
+if (fd < 0)
+  {
+ goto tmp_error;
+  }
  }
log = fdopen(fd, "wb");
if (!log) goto tmp_error;

-- 




[EGIT] [core/efl] master 03/04: elm: multibuttomentry: check if value is valid before we access it

2016-12-05 Thread Stefan Schmidt
stefan pushed a commit to branch master.

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

commit 6f847f1f55820498d2a309524e3af0cc6bedc73f
Author: Stefan Schmidt 
Date:   Mon Dec 5 16:53:42 2016 +0100

elm: multibuttomentry: check if value is valid before we access it

The ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN will access 'it' here before we
check it is NULL. Reverse the order of these checks.

CID: 1365324, 1365323
---
 src/lib/elementary/elc_multibuttonentry.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elc_multibuttonentry.c 
b/src/lib/elementary/elc_multibuttonentry.c
index fafe7b3..bdd5f6b 100644
--- a/src/lib/elementary/elc_multibuttonentry.c
+++ b/src/lib/elementary/elc_multibuttonentry.c
@@ -551,9 +551,10 @@ _on_item_focused(void *data,
  void *event_info EINA_UNUSED)
 {
Elm_Multibuttonentry_Item_Data *it = data;
+   if (!it) return;
+
ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(WIDGET(it), sd);
 
-   if (!it) return;
sd->selected_it = it;
 }
 
@@ -563,9 +564,10 @@ _on_item_unfocused(void *data,
void *event_info EINA_UNUSED)
 {
Elm_Multibuttonentry_Item_Data *it = data;
+   if (!it) return;
+
ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(WIDGET(it), sd);
 
-   if (!it) return;
sd->selected_it = NULL;
elm_layout_signal_emit(VIEW(it), "elm,state,unfocused", "elm");
 }

-- 




[EGIT] [core/enlightenment] master 03/03: use better check for getting wl surface alpha from cursor pixmaps

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

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

commit 0e4ddaffbe950de63d1aaa79473bb22f464ac46f
Author: Mike Blumenkrantz 
Date:   Mon Dec 5 11:04:21 2016 -0500

use better check for getting wl surface alpha from cursor pixmaps

ref 6ba85cf864f19b083f652c7c7222d2c93b3b034e
---
 src/bin/e_pixmap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index 3f166d7..ab24c16 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -898,8 +898,8 @@ e_pixmap_image_is_argb(const E_Pixmap *cp)
 #ifdef HAVE_WAYLAND
 if (cp->usable)
   return cp->image_argb;
-if (((E_Comp_Wl_Client_Data*)cp->client->comp_data)->cursor)
-  return EINA_TRUE;
+/* only cursors can be override in wayland */
+if (cp->client->override) return EINA_TRUE;
 #endif
 default: break;
  }

-- 




[EGIT] [core/enlightenment] master 01/03: handle pass_event clients in e_comp_object_coords_inside_input_area

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

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

commit 8f39054965db77738ef7fc1b8437a36be376c1b4
Author: Mike Blumenkrantz 
Date:   Mon Dec 5 10:58:44 2016 -0500

handle pass_event clients in e_comp_object_coords_inside_input_area

fix T4966
---
 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 2751dbd..580e3ec 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3163,6 +3163,7 @@ e_comp_object_coords_inside_input_area(Evas_Object *obj, 
int x, int y)
 
if (cw->input_obj)
  return E_INSIDE(x, y, cw->x + cw->input_rect.x, cw->y + cw->input_rect.y, 
cw->input_rect.w, cw->input_rect.h);
+   if (evas_object_pass_events_get(obj)) return EINA_FALSE;
return E_INSIDE(x, y, cw->ec->x, cw->ec->y, cw->ec->w, cw->ec->h);
 }
 

-- 




[EGIT] [core/enlightenment] master 02/03: Revert "Check for deleted client in e_pixmap_image_is_argb"

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

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

commit b1037cbc5c76891cf975b8adc29b704cab3e9be7
Author: Mike Blumenkrantz 
Date:   Mon Dec 5 11:03:38 2016 -0500

Revert "Check for deleted client in e_pixmap_image_is_argb"

This reverts commit 6ba85cf864f19b083f652c7c7222d2c93b3b034e.

returning false here causes csd regions to become opaque (black) during
close animations
---
 src/bin/e_pixmap.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index 593f2b9..3f166d7 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -896,7 +896,6 @@ e_pixmap_image_is_argb(const E_Pixmap *cp)
 #endif
   case E_PIXMAP_TYPE_WL:
 #ifdef HAVE_WAYLAND
-if (e_object_is_del(E_OBJECT(cp->client))) return EINA_FALSE;
 if (cp->usable)
   return cp->image_argb;
 if (((E_Comp_Wl_Client_Data*)cp->client->comp_data)->cursor)

-- 




[EGIT] [core/enlightenment] master 01/01: fix internal wl windows to exit when border X is clicked

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

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

commit ca7c77d05e3611a4ca10328fcc07a1d25d7cb302
Author: Mike Blumenkrantz 
Date:   Mon Dec 5 10:49:06 2016 -0500

fix internal wl windows to exit when border X is clicked
---
 src/bin/e_comp_wl.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index a024e9e..2d2c6aa 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -934,7 +934,8 @@ _e_comp_wl_evas_cb_delete_request(void *data, Evas_Object 
*obj EINA_UNUSED, void
  {
 if (ec->internal_elm_win)
   E_FREE_FUNC(ec->internal_elm_win, evas_object_del);
-e_object_del(E_OBJECT(ec));
+else
+  e_object_del(E_OBJECT(ec));
  }
 
_e_comp_wl_focus_check();
@@ -1860,6 +1861,7 @@ _e_comp_wl_compositor_cb_surface_create(struct wl_client 
*client, struct wl_reso
  }
if (client != e_comp_wl->xwl_client)
  ec->internal = pid == getpid();
+   ec->icccm.delete_request |= ec->internal;
 
/* set reference to pixmap so we can fetch it later */
DBG("\tUsing Client: %p", ec);

-- 




Re: [E-devel] PYTHON: Trouble with toolbar.selected_item_get

2016-12-05 Thread Kai Huuhko
I'm guessing the "selected" function inside toolbar code is being
called **after** the "clicked" callback is processed, so what you get
is the item being still unselected when your callback is called and
therefore setting it unselected does nothing. But this needs
verification.

2016-12-05 16:40 GMT+02:00 Jeff Hoogland :
> That change makes item appear as a proper toolbar item object (and gets rid
> of the error message) but item.selected_set(False) is still failing to
> unselect the item that is clicked on.
>
> On Mon, Dec 5, 2016 at 2:21 AM, Kai Huuhko  wrote:
>
>> This looks like an issue in EFL, possibly fallout from moving to
>> Eo/EFL events. The callback is being processed before selected item is
>> changed, so you get None (NULL in C) when
>> elm_toolbar_item_selected_get() is called within the callback.
>>
>> The item object should be passed to clicked callback as an argument,
>> can you check if that's None as well? Change line 1174 to
>>
>> def itemClicked(self, obj, item):
>>
>> and remove line 1175.
>>
>>
>> 2016-12-05 3:25 GMT+02:00 Jeff Hoogland :
>> > Source code: https://github.com/JeffHoogland/ePad/blob/master/epad#L1176
>> >
>> > Under EFL 1.15 this code worked fine. It essentially toggled of a toolbar
>> > button after it was clicked so long as it was not a dropdown menu.
>> >
>> > Under EFL 1.18 however the item_selected_get function keeps returning a
>> > none type:
>> >
>> > jeff@hoogland-W740SU:~/Storage/GitHub/ePad$ ./epad
>> > Traceback (most recent call last):
>> >   File "efl/evas/efl.evas_object_smart.pxi", line 446, in
>> > efl.evas._smart_callback (efl/evas/efl.evas.c:78724)
>> >   File "./epad", line 1176, in itemClicked
>> > if item.menu_get() is None and item.selected_get():
>> > AttributeError: 'NoneType' object has no attribute 'menu_get'
>> >
>> > Any ideas why this is? What can I do to get this code block to work as
>> > intended under EFL 1.18? Using the EFL 1.18.3 release with python EFL
>> > 1.18.0 release tar.
>> >
>> > Thanks!
>> > --
>> > ~Jeff Hoogland 
>> > My Projects on GitHub 
>> > 
>> --
>> > ___
>> > enlightenment-devel mailing list
>> > enlightenment-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
>> 
>> --
>> ___
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
>
>
>
> --
> ~Jeff Hoogland 
> My Projects on GitHub 
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Edje multiseat support

2016-12-05 Thread Bruno Dilly
Hi jpeg,

On Mon, Dec 5, 2016 at 2:21 AM, Jean-Philippe André 
wrote:

> Hi,
>
>
> This seems to assume a finite and known in advance number of seats?
> I'm not well aware of what the seats are or how that's all supposed to
> work, but this sounds strange to me.
>
>
On theme point of view, I can't see how this could be any different.
If you don't know how many seats do you support or which seats would be
supported,
how could you be able to design it?

EDC is pretty much a lot of parts with different states and programas
listening to specific signals-sources and taking an action when it matches.
Everything is hardcoded on EDC files, right?

But nothing stops you to create an UI more dynamic on code.
You could listen to "seat,added,X" and create a random color
to represent it. Then when you receive "mouse,over,X" for specific parts,
you could change their colors, images, emit different sounds or whatever
that makes sense for you.



> Maybe someone can enlighten me? Why would the theme know the number of
> seats?
> (the approach probably makes perfect sense but i'm not sure what edje
> should do wrt. seats)
>

I can see two different use cases here:

1) you're developing an specific product and you know the limit of seats
that is supported.

When you're writing a game for a console you know that you support 2, or 4
different players,
and know how to interact with each controller, right?

In this case you just have multiple states for EDC parts to represent which
seat is interacting
with it and programs for that.

2) you're developing a program that could handle as many seats as the user
want to add

You'll need to modify your UI in a programmatic way, changing Edje parts
with the API or
sending custom signals or messages for your theme.

I'll create an example exercising this idea. Indeed edje_multiseat example
just cover
the first scenario. Maybe some challenges (and consequently, improvements
on Edje)
may come from this.

Thanks


>
>
> TIA,
>
>
> On 4 December 2016 at 10:58, Carsten Haitzler 
> wrote:
>
> > On Sat, 03 Dec 2016 15:24:17 + Gustavo Sverzut Barbieri
> >  said:
> >
> > > Just seat1, seat2...
> > >
> > > That's what I said we found unusable to get "bob", "jane" in EDC.
> > >
> > > In C you could snprintf() and add signals, or register with ",*" and
> then
> > > parse, BUT that's only in C or bindings, not EDC/Embryo since in a
> > > script/program you can't know the signal that triggered you.
> > >
> > > In C you can retrieve bob from seat1, seat1 from bob and map
> accordingly.
> >
> > ok. so edje will stick to simple seat1, seat2 etc. ok. sensible.
> >
> > > From edc point of view, you can only write theme based on something you
> > > know. Like assign focus color red to seat1, green to seat2, blue to
> > seat3.
> > > If you get bob, you can't figure it out since it is dependent on the
> > system
> > > configuration.
> >
> > yeah. unless the app emits these signals specifically as part of the edje
> > <->
> > app "interface".
> >
> > > Em sáb, 3 de dez de 2016 às 01:20, Carsten Haitzler <
> > ras...@rasterman.com>
> > > escreveu:
> > >
> > > > On Fri, 2 Dec 2016 14:54:20 -0200 Bruno Dilly  >
> > > > said:
> > > >
> > > > > Hi folks,
> > > > >
> > > > > now that multiseat is supported up to Evas, we’re working on Edje.
> > > > >
> > > > > The idea is that a developer would be able to implement an UI that
> > > > > may be used by more than one single seat, properly handling focus,
> > > > > and providing different feedback for different seats action.
> > > > >
> > > > > Let’s say, different colors on focus, different images when
> different
> > > > > seat pointers are over, etc.
> > > > >
> > > > > I’ve done an initial implementation and wrote an example. It’s
> > available
> > > > > on my branch devs/bdilly/edje_multiseat . There you’ll be able to
> > find
> > > > > edje_multiseat example (C code + EDC).
> > > > >
> > > > > To make this possible, a few main changes were done:
> > > > >   *  New signals were added, adding the seat as suffix. So
> “mouse,in”
> > > > would
> > > > > be still be emitted, but also “mouse,in,seat1”, for example
> > > > >   * Real Parts now may be focused by multiple seats
> > > > >   * Some actions receive an optional seat parameter. For instance,
> > > > > FOCUS_SET may receive the seat name, or it will consider it's about
> > the
> > > > > default seat.
> > > > >* Since Evas seat devices may have arbitrary names (at least
> using
> > > > > wayland backend you can name them as you want using udev rules), or
> > set
> > > > > them on programmatic ways, Edje will have custom names for seats,
> > > > following
> > > > > a well established pattern. So first announced seat will be named
> > > > “seat1”,
> > > > > the second “seat2”... If an application supports three seats, on
> EDC
> > you
> > > > > know what signals you should expect. It makes it possible to write
> > > > 

Re: [E-devel] PYTHON: Trouble with toolbar.selected_item_get

2016-12-05 Thread Jeff Hoogland
That change makes item appear as a proper toolbar item object (and gets rid
of the error message) but item.selected_set(False) is still failing to
unselect the item that is clicked on.

On Mon, Dec 5, 2016 at 2:21 AM, Kai Huuhko  wrote:

> This looks like an issue in EFL, possibly fallout from moving to
> Eo/EFL events. The callback is being processed before selected item is
> changed, so you get None (NULL in C) when
> elm_toolbar_item_selected_get() is called within the callback.
>
> The item object should be passed to clicked callback as an argument,
> can you check if that's None as well? Change line 1174 to
>
> def itemClicked(self, obj, item):
>
> and remove line 1175.
>
>
> 2016-12-05 3:25 GMT+02:00 Jeff Hoogland :
> > Source code: https://github.com/JeffHoogland/ePad/blob/master/epad#L1176
> >
> > Under EFL 1.15 this code worked fine. It essentially toggled of a toolbar
> > button after it was clicked so long as it was not a dropdown menu.
> >
> > Under EFL 1.18 however the item_selected_get function keeps returning a
> > none type:
> >
> > jeff@hoogland-W740SU:~/Storage/GitHub/ePad$ ./epad
> > Traceback (most recent call last):
> >   File "efl/evas/efl.evas_object_smart.pxi", line 446, in
> > efl.evas._smart_callback (efl/evas/efl.evas.c:78724)
> >   File "./epad", line 1176, in itemClicked
> > if item.menu_get() is None and item.selected_get():
> > AttributeError: 'NoneType' object has no attribute 'menu_get'
> >
> > Any ideas why this is? What can I do to get this code block to work as
> > intended under EFL 1.18? Using the EFL 1.18.3 release with python EFL
> > 1.18.0 release tar.
> >
> > Thanks!
> > --
> > ~Jeff Hoogland 
> > My Projects on GitHub 
> > 
> --
> > ___
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
> 
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>



-- 
~Jeff Hoogland 
My Projects on GitHub 
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/01: ecore-wl2: No need to call hide inside the free function

2016-12-05 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 6dca94d8bf85947d142ecf8da1c8d82f18fd8d3f
Author: Chris Michael 
Date:   Mon Dec 5 09:27:11 2016 -0500

ecore-wl2: No need to call hide inside the free function

When we are freeing an Ecore_Wl2_Window, there is no need to call
ecore_wl2_window_hide anymore because inside the free function we are
destroying subsurfaces, surfaces, etc, etc so no need to even unmap
them.

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/ecore_wl2_window.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 37dd487..0ddf3d9 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -492,8 +492,6 @@ ecore_wl2_window_free(Ecore_Wl2_Window *window)
  www_surface_destroy(window->www_surface);
window->www_surface = NULL;
 
-   ecore_wl2_window_hide(window);
-
if (window->uuid && window->surface && window->display->wl.session_recovery)
  zwp_e_session_recovery_destroy_uuid(window->display->wl.session_recovery,
window->surface, window->uuid);

-- 




Re: [E-devel] Edje multiseat support

2016-12-05 Thread Bruno Dilly
On Fri, Dec 2, 2016 at 8:19 PM, Cedric BAIL  wrote:

> Hi,
>
> On Fri, Dec 2, 2016 at 8:54 AM, Bruno Dilly  wrote:
> > now that multiseat is supported up to Evas, we’re working on Edje.
>
> Yeah \o/
>
> > The idea is that a developer would be able to implement an UI that
> > may be used by more than one single seat, properly handling focus,
> > and providing different feedback for different seats action.
> >
> > Let’s say, different colors on focus, different images when different
> > seat pointers are over, etc.
> >
> > I’ve done an initial implementation and wrote an example. It’s available
> > on my branch devs/bdilly/edje_multiseat . There you’ll be able to find
> > edje_multiseat example (C code + EDC).
> >
> > To make this possible, a few main changes were done:
> >   *  New signals were added, adding the seat as suffix. So “mouse,in”
> would
> > be still be emitted, but also “mouse,in,seat1”, for example
> >   * Real Parts now may be focused by multiple seats
> >   * Some actions receive an optional seat parameter. For instance,
> > FOCUS_SET may receive the seat name, or it will consider it's about the
> > default seat.
> >* Since Evas seat devices may have arbitrary names (at least using
> > wayland backend you can name them as you want using udev rules), or set
> > them on programmatic ways, Edje will have custom names for seats,
> following
> > a well established pattern. So first announced seat will be named
> “seat1”,
> > the second “seat2”... If an application supports three seats, on EDC you
> > know what signals you should expect. It makes it possible to write
> general
> > applications (in the sense of not knowing exactly seats beforehand). But
> > let’s say it’s not the case. there is a specific product built in a way
> > that they know exactly which seats are supported and configured their
> > names, or want to check if this seat has pointer, keyboard, or whatever…
> > for this cases, Edje also emits signals saying when devices were added
> (or
> > removed) and their names. With these names you can use a new Edje
> function
> > to fetch the Evas device named as “seat1”.
>
> I think it would be better to actually emit both a "event,seat1" and a
> "event,seat_named". It will be easier to use from theme where named
> seat have been customized and won't cost much more I think.
>

It's easy to be done, a very few lines are required.

But if you're customizing seat names, you could name them as
"seat1", "seat2"... and they would match EDC names.

On the other hand, if we emit for both sequential names and
evas names, if you name them as seat1, seat2... in the end
you receive duplicated events...

And when you receive them on C code, you would need to
figure out if they're custom names and use edje API to get the seat device,
or if they're evas names, and use evas API to get the seat device...
Having both at the same times seems to make things a bit harder.

Adding an API to select what approach to be used seems acceptable?
By default using seat1, seat2, but you could require evas_names?

Something like
edje_multiseat_evas_names_set(bool) ?

So you could write your EDC / code knowing if names would be
following Edje or Evas.


>
> Something that seems out of the proposal is text cursor. I think we
> want to be able to assign a seat per Edje_Cursor so that we have
> multiple people able to mess with an entry, but I know that Tom and
> Daniel have been working on redefining the API there. So I am not sure
> about what needs to be done in that context. Maybe they can share
> there thinking on the topic.
>

It was kind of out of the proposal, indeed.
I'll take a look on it soon and ping you back about it.


>
> Another case, that I think we want to handle somehow is specific drag
> per seat. If you look at edje_callback.c, you will see that we need to
> handle seat in that context too. I would guess we want to set some
> kind of filter via both API and theme. Do you have an opinion on that
> bit already ?
>

I'm not sure if I get what do you mean, here.
Have you had the opportunity to test the example I've written?

I've added a couple drag bars on it, that change colors in different ways
depending on which seat is handling them. So seats can move
different drags at the same time, or could even try to use the same
at the same time, and code would receive signals saying which seat
changed it.



>
> Also if we are to do a theme in elementary that support multi seat, I
> would expect to be able to disable a widget for a specific seat in the
> C code. Wouldn't it make sense ? So in which case, wouldn't an API to
> disable listening for an entire seat make sense also on edje ? Or do
> you have an idea on how to implement that doesn't require this ?
>

Once again, it can be done, we could add an API to disable a seat,
so on _edje_seat_emit() it would look if the seat was disabled
before emitting the signal. But would you stop emitting signals
for this 

[EGIT] [core/efl] master 01/02: evas-wayland-shm: Don't recreate Outbuf if we are hidden

2016-12-05 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 5c1d6b106419fd4493e3bf1cef793a43a59009e9
Author: Chris Michael 
Date:   Mon Dec 5 09:21:20 2016 -0500

evas-wayland-shm: Don't recreate Outbuf if we are hidden

If the hidden flag is set, then we don't need to recreate the Outbuf
for a given canvas as the window is hidden and we are not going to
render there until it's shown again.

Signed-off-by: Chris Michael 
---
 src/modules/evas/engines/wayland_shm/evas_engine.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.c 
b/src/modules/evas/engines/wayland_shm/evas_engine.c
index b00c614..d088818 100644
--- a/src/modules/evas/engines/wayland_shm/evas_engine.c
+++ b/src/modules/evas/engines/wayland_shm/evas_engine.c
@@ -162,7 +162,7 @@ eng_setup(Evas *eo_evas, void *info)
 else
   goto err;
  }
-   else if (einfo->info.wl_surface)
+   else if ((einfo->info.wl_surface) && (!einfo->info.hidden))
  {
 Outbuf *ob;
 

-- 




[EGIT] [core/efl] master 02/02: ecore-wl2: When we hide a window, attach a NULL buffer to the surface

2016-12-05 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 4c7ff57cb2de24c05b32db3c9aaa2fe0a7e0059d
Author: Chris Michael 
Date:   Mon Dec 5 09:22:26 2016 -0500

ecore-wl2: When we hide a window, attach a NULL buffer to the surface

This patch essentially makes sure that the surface gets a NULL buffer
attached to it when we are hiding.

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

diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 47f3fc8..37dd487 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -450,6 +450,12 @@ ecore_wl2_window_hide(Ecore_Wl2_Window *window)
EINA_INLIST_FOREACH_SAFE(window->subsurfs, tmp, subsurf)
  _ecore_wl2_subsurf_unmap(subsurf);
 
+   if (window->surface)
+ {
+wl_surface_attach(window->surface, NULL, 0, 0);
+wl_surface_commit(window->surface);
+ }
+
window->configure_serial = 0;
window->configure_ack = NULL;
 }

-- 




Re: [E-devel] [EGIT] [core/efl] master 02/05: Eo: Add efl_replace() function.

2016-12-05 Thread marcel-hollerbach
Hello,

maybe 'efl_ref_replace' since its a replacement of a referenced field.

Greetings
   Marcel Hollerbach

On Mon, Dec 05, 2016 at 12:16:15PM -0200, Guilherme Íscaro wrote:
> Hello,
> 
> Well, what name do you suggest?
> 
> On Mon, Dec 5, 2016 at 11:50 AM, Tom Hacohen  wrote:
> 
> > I never liked the stringshare function that does it, so it comes with no
> > surprise that I don't like this one either.
> >
> > Regardless of that, I find the name very confusing. I didn't understand
> > what it does when I saw the name nor when I read the docs. I had to read
> > the code to understand what it's for... I'd change the name and fix the
> > docs.
> >
> > --
> > Tom.
> >
> > On 02/12/16 17:35, Guilherme Iscaro wrote:
> > > bdilly pushed a commit to branch master.
> > >
> > > http://git.enlightenment.org/core/efl.git/commit/?id=
> > 81782414dfba9a8a69ea42a4dd5b01fc19170d88
> > >
> > > commit 81782414dfba9a8a69ea42a4dd5b01fc19170d88
> > > Author: Guilherme Iscaro 
> > > Date:   Fri Dec 2 11:16:33 2016 -0200
> > >
> > > Eo: Add efl_replace() function.
> > >
> > > This new function adds a new way to safely replace Eo pointer values.
> > > ---
> > >  src/lib/eo/Eo.h | 22 ++
> > >  1 file changed, 22 insertions(+)
> > >
> > > diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
> > > index 8c81544..244478b 100644
> > > --- a/src/lib/eo/Eo.h
> > > +++ b/src/lib/eo/Eo.h
> > > @@ -1334,6 +1334,28 @@ EAPI int efl_callbacks_cmp(const
> > Efl_Callback_Array_Item *a, const Efl_Callback_
> > >   EFL_CALLBACK_PRIORITY_DEFAULT, data)
> > >
> > >  /**
> > > + * @def Replace the previously Eo pointer with new content.
> > > + *
> > > + * @param storage The object to replace the old reference. It can not
> > be @c NULL.
> > > + * @param new_obj The new object. It may be @c NULL.
> > > + *
> > > + * The string pointed by @c storage must be previously an Eo or
> > > + * @c NULL and it will be efl_unref(). The @a new_obj will be passed
> > > + * to efl_ref() and then assigned to @c *storage.
> > > + *
> > > + * @see efl_ref()
> > > + * @see efl_unref()
> > > + */
> > > +static inline void
> > > +efl_replace(Eo **storage, Eo *new_obj)
> > > +{
> > > +   if (!storage || *storage == new_obj) return;
> > > +   efl_ref(new_obj);
> > > +   efl_unref(*storage);
> > > +   *storage = new_obj;
> > > +}
> > > +
> > > +/**
> > >   * @}
> > >   */
> > >
> > >
> >
> >
> > 
> > --
> > ___
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 02/05: Eo: Add efl_replace() function.

2016-12-05 Thread Guilherme Íscaro
Hello,

Well, what name do you suggest?

On Mon, Dec 5, 2016 at 11:50 AM, Tom Hacohen  wrote:

> I never liked the stringshare function that does it, so it comes with no
> surprise that I don't like this one either.
>
> Regardless of that, I find the name very confusing. I didn't understand
> what it does when I saw the name nor when I read the docs. I had to read
> the code to understand what it's for... I'd change the name and fix the
> docs.
>
> --
> Tom.
>
> On 02/12/16 17:35, Guilherme Iscaro wrote:
> > bdilly pushed a commit to branch master.
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=
> 81782414dfba9a8a69ea42a4dd5b01fc19170d88
> >
> > commit 81782414dfba9a8a69ea42a4dd5b01fc19170d88
> > Author: Guilherme Iscaro 
> > Date:   Fri Dec 2 11:16:33 2016 -0200
> >
> > Eo: Add efl_replace() function.
> >
> > This new function adds a new way to safely replace Eo pointer values.
> > ---
> >  src/lib/eo/Eo.h | 22 ++
> >  1 file changed, 22 insertions(+)
> >
> > diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
> > index 8c81544..244478b 100644
> > --- a/src/lib/eo/Eo.h
> > +++ b/src/lib/eo/Eo.h
> > @@ -1334,6 +1334,28 @@ EAPI int efl_callbacks_cmp(const
> Efl_Callback_Array_Item *a, const Efl_Callback_
> >   EFL_CALLBACK_PRIORITY_DEFAULT, data)
> >
> >  /**
> > + * @def Replace the previously Eo pointer with new content.
> > + *
> > + * @param storage The object to replace the old reference. It can not
> be @c NULL.
> > + * @param new_obj The new object. It may be @c NULL.
> > + *
> > + * The string pointed by @c storage must be previously an Eo or
> > + * @c NULL and it will be efl_unref(). The @a new_obj will be passed
> > + * to efl_ref() and then assigned to @c *storage.
> > + *
> > + * @see efl_ref()
> > + * @see efl_unref()
> > + */
> > +static inline void
> > +efl_replace(Eo **storage, Eo *new_obj)
> > +{
> > +   if (!storage || *storage == new_obj) return;
> > +   efl_ref(new_obj);
> > +   efl_unref(*storage);
> > +   *storage = new_obj;
> > +}
> > +
> > +/**
> >   * @}
> >   */
> >
> >
>
>
> 
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Edje multiseat support

2016-12-05 Thread Guilherme Íscaro
Hey Cedric.


> Another case, that I think we want to handle somehow is specific drag
> per seat. If you look at edje_callback.c, you will see that we need to
> handle seat in that context too. I would guess we want to set some
> kind of filter via both API and theme. Do you have an opinion on that
> bit already ?
>

Currently we're emitting drag signals with the seat prefix like:
"drag,start,seat1". When you say filter, you want to disable drag for a
specific seat ?
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Edje multiseat support

2016-12-05 Thread Guilherme Íscaro
Hi raster,

i'm seeing over 1mb of hash entries being used by
>
> _evas_object_pointer_data_get()
>
> (called from _efl_canvas_object_pointer_mode_by_device_set()).
>
>
I will take a look and check if we can improve the memory usage here, if
you want we can discuss solutions about this one. Btw, thank you for your
commit fixing the mouse problem!
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 02/05: Eo: Add efl_replace() function.

2016-12-05 Thread Felipe Magno de Almeida
On Mon, Dec 5, 2016 at 11:50 AM, Tom Hacohen  wrote:
> I never liked the stringshare function that does it, so it comes with no
> surprise that I don't like this one either.
>
> Regardless of that, I find the name very confusing. I didn't understand
> what it does when I saw the name nor when I read the docs. I had to read
> the code to understand what it's for... I'd change the name and fix the
> docs.

I hate the name. Every month I have to re-read the docs to understand
what it means.

> --
> Tom.

Regards,
-- 
Felipe Magno de Almeida

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 02/05: Eo: Add efl_replace() function.

2016-12-05 Thread Tom Hacohen
I never liked the stringshare function that does it, so it comes with no 
surprise that I don't like this one either.

Regardless of that, I find the name very confusing. I didn't understand 
what it does when I saw the name nor when I read the docs. I had to read 
the code to understand what it's for... I'd change the name and fix the 
docs.

--
Tom.

On 02/12/16 17:35, Guilherme Iscaro wrote:
> bdilly pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=81782414dfba9a8a69ea42a4dd5b01fc19170d88
>
> commit 81782414dfba9a8a69ea42a4dd5b01fc19170d88
> Author: Guilherme Iscaro 
> Date:   Fri Dec 2 11:16:33 2016 -0200
>
> Eo: Add efl_replace() function.
>
> This new function adds a new way to safely replace Eo pointer values.
> ---
>  src/lib/eo/Eo.h | 22 ++
>  1 file changed, 22 insertions(+)
>
> diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
> index 8c81544..244478b 100644
> --- a/src/lib/eo/Eo.h
> +++ b/src/lib/eo/Eo.h
> @@ -1334,6 +1334,28 @@ EAPI int efl_callbacks_cmp(const 
> Efl_Callback_Array_Item *a, const Efl_Callback_
>   EFL_CALLBACK_PRIORITY_DEFAULT, data)
>
>  /**
> + * @def Replace the previously Eo pointer with new content.
> + *
> + * @param storage The object to replace the old reference. It can not be @c 
> NULL.
> + * @param new_obj The new object. It may be @c NULL.
> + *
> + * The string pointed by @c storage must be previously an Eo or
> + * @c NULL and it will be efl_unref(). The @a new_obj will be passed
> + * to efl_ref() and then assigned to @c *storage.
> + *
> + * @see efl_ref()
> + * @see efl_unref()
> + */
> +static inline void
> +efl_replace(Eo **storage, Eo *new_obj)
> +{
> +   if (!storage || *storage == new_obj) return;
> +   efl_ref(new_obj);
> +   efl_unref(*storage);
> +   *storage = new_obj;
> +}
> +
> +/**
>   * @}
>   */
>
>


--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Eo error message in my application

2016-12-05 Thread Felipe Magno de Almeida
On Mon, Dec 5, 2016 at 12:04 AM, Carsten Haitzler  wrote:
> On Sun, 4 Dec 2016 23:23:39 -0200 Felipe Magno de Almeida
>  said:
>
>> On Dec 4, 2016 10:55 PM, "Jean-Philippe André"  wrote:
>>
>> Nah I totally agree with Vincent that the error message is cryptic.
>>
>> Anyway as far as I remember shared objects are not a viable solution until
>> we change the calling mechanism (function & data resolution) to be
>> thread-safe, rather than locking the entire pool of shared objects for the
>> entire duration of a call.
>>
>>
>> Indeed. just like we discussed in Korea. the recursive mutex must go.
>
> i then invite you to actually implement all the fine-grained locks for every
> class and object now and into the future and never to get it wrong. are you
> going to do that?

Good point. I'll see what I can do. I would like to implement the multiple
loops and threading anyway, with the design we discussed. This seems
to be a part of this work.

> --

Regards,
-- 
Felipe Magno de Almeida

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Eo error message in my application

2016-12-05 Thread Felipe Magno de Almeida
On Mon, Dec 5, 2016 at 12:04 AM, Carsten Haitzler  wrote:
> On Mon, 5 Dec 2016 09:53:51 +0900 Jean-Philippe André  
> said:

[snip]

>> Anyway as far as I remember shared objects are not a viable solution until
>> we change the calling mechanism (function & data resolution) to be
>> thread-safe, rather than locking the entire pool of shared objects for the
>> entire duration of a call.
>
> locking the whole pool means we can do shared objects without a whole tonne of
> extra work. as long as all things accessed inside object methods (including
> parent classes) are entirely within the code for that object or are already
> threadsafe then no extra locks have to be written at all. everything will just
> work and it's a massive amount of work saved. having to fine-grain lock
> everything manually is just insane and that's why efl is not threadsafe and
> never will be because no one is going to go do that. this is why many libs are
> not threadsafe. it's a massive amount of work to do and easy to get wrong to
> miss an lock or unlock somewhere. having a single locking and unlocking spot
> even if it is a "one big fat lock for every shared object" is safer and far
> less work. it is unlikely to ever be a real performance issue.

I don't care about the performance. This is going to be a deadlock hell.

> --

Regards,
-- 
Felipe Magno de Almeida

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[E-devel] FOSDEM 2017

2016-12-05 Thread Philippe Caseiro
Hi, falks

   Sorry for the late notice I had some personal troubles this year so
I'm a little bit late.

   Please take some time to submit talks this week.

   One more time I'm very sorry about that delay and the short notice.



FOSDEM is one of the largest (5,000+ hackers!) gatherings of Free
Software contributors in the world and happens each February in
Brussels (Belgium, Europe). Once again, one of the tracks will be the
Desktops DevRoom (formerly known as “CrossDesktop DevRoom”), which
will host Desktop-related talks.

We are now inviting proposals for talks about Free/Libre/Open-source
Software on the topics of Desktop development, Desktop applications
and interoperability amongst Desktop Environments. This is a unique
opportunity to show novel ideas and developments to a wide technical
audience.

Topics accepted include, but are not limited to:

Open Desktops: Gnome, KDE, Unity, Enlightenment, XFCE, Razor, MATE,
Cinnamon, ReactOS, CDE etc
Closed desktops: Windows, Mac OS X, MorphOS, etc (when talking about a
FLOSS topic)
Software development for the desktop
Development tools
Applications that enhance desktops
General desktop matters
Cross-platform software development
Web
Thin clients, desktop virtualiation, etc

Talks can be very specific, such as the advantages/disadvantages of
distributing a desktop application with snap vs flatpak, or as general
as using HTML5 technologies to develop native applications.

Topics that are of interest to the users and developers of all desktop
environments are especially welcome. The FOSDEM 2016 schedule might
give you some inspiration.


Submissions

Please include the following information when submitting a proposal:

Your name
The title of your talk (please be descriptive, as titles will be
listed with around 400 from other projects)
Short abstract of one or two paragraphs
Short bio (with photo)
Requested time: from 15 to 45 minutes. Normal duration is 30 minutes.
Longer duration requests must be properly justified. You may be
assigned LESS time than you request.

How to submit

All submissions are made in the Pentabarf event planning tool:
https://penta.fosdem.org/submission/FOSDEM17

To submit your talk, click on "Create Event", then make sure to select
the “Desktops” devroom as the “Track”. Otherwise your talk will not be
even considered for any devroom at all.

If you already have a Pentabarf account from a previous year, even if
your talk was not accepted, please reuse it. Create an account if, and
only if, you don’t have one from a previous year. If you have any
issues with Pentabarf, please contact desktops-devroom AT lists DOT
fosdem DOT org.


Deadline

The deadline for submissions is December 5th 2016.

FOSDEM will be held on the weekend of 4 & 5 February 2017 and the
Desktops DevRoom will take place on Sunday, February 5th 2017.

We will contact every submitter with a “yes” or “no” before December 11th 2016.

Recording permission

The talks in the Desktops DevRoom will be audio and video recorded,
and possibly streamed live too.

In the "Submission notes" field, please indicate that you agree that
your presentation will be licensed under the CC-By-SA-4.0 or CC-By-4.0
license and that you agree to have your presentation recorded. For
example:

"If my presentation is accepted for FOSDEM, I hereby agree to license
all recordings, slides, and other associated materials under the
Creative Commons Attribution Share-Alike 4.0 International License.
Sincerely, ."

If you want us to stop the recording in the Q & A part (should you
have one), please tell us. We can do that but only for the Q & A part.

More information

The official communication channel for the Desktops DevRoom is its
mailing list desktops-devr...@lists.fosdem.org.

Use this page to manage your subscription:
https://lists.fosdem.org/listinfo/desktops-devroom


Organization

The Desktops DevRoom 2017 is managed by a team representing the most
notable open desktops:

Pau Garcia i Quiles, KDE
Christophe Fergeau, Gnome
Michael Zanetti, Unity
Philippe Caseiro, Enlightenment
Jérome Leclanche, Razor

If you want to join the team, please contact desktops-devroom AT lists
DOT fosdem DOT org.



-- 
Philippe Caseiro

Change your computer life
http://www.sourcemage.org
http://www.enlightenment.org
http://www.enlightenment.fr
http://www.archlinux.org

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/01: Emacs config: Also remove from extra_dist.

2016-12-05 Thread Tom Hacohen
tasn pushed a commit to branch master.

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

commit 3302ce54998ab66adeddbe273cf105309061a809
Author: Tom Hacohen 
Date:   Mon Dec 5 12:35:40 2016 +

Emacs config: Also remove from extra_dist.
---
 data/Makefile.am | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/data/Makefile.am b/data/Makefile.am
index 8645929..ce13137 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -73,9 +73,6 @@ mimedir = $(datadir)/mime/packages
 mime_DATA = edje/edje.xml
 EXTRA_DIST += $(mime_DATA)
 
-EXTRA_DIST += \
-edje/edje-mode.el
-
 # Helper for people using EDJ
 include ../src/Makefile_Edje_Helper.am
 

-- 




[EGIT] [editors/emacs-configs] master 01/01: Initial import for emacs config files.

2016-12-05 Thread Tom Hacohen
tasn pushed a commit to branch master.

http://git.enlightenment.org/editors/emacs-configs.git/commit/?id=aa190cb127749c90392b7b1288758ba0ee422b95

commit aa190cb127749c90392b7b1288758ba0ee422b95
Author: Tom Hacohen 
Date:   Mon Dec 5 12:34:21 2016 +

Initial import for emacs config files.
---
 edje-mode.el | 513 +++
 eo-mode.el   | 398 +
 2 files changed, 911 insertions(+)

diff --git a/edje-mode.el b/edje-mode.el
new file mode 100644
index 000..b0d8602
--- /dev/null
+++ b/edje-mode.el
@@ -0,0 +1,513 @@
+;;; edje-mode-el -- Major mode for editing Edje files
+
+;; Author: Gustavo Sverzut Barbieri 
+;; Created: 2007-07-23
+;; Keywords: Edje major-mode
+;; Url: http://barbieri-playground.googlecode.com/svn/dot-files/edje-mode.el
+;;  (if you find this file have problems, check that Url and request 
update)
+
+;; Copyright (C) 2007 Gustavo Sverzut Barbieri 
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2 of
+;; the License, or (at your option) any later version.
+
+;; This program 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 General Public License for more details.
+
+;; You should have received a copy of the GNU General Public
+;; License along with this program; if not, write to the Free
+;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+;; MA 02111-1307 USA
+
+;;; Commentary:
+;;
+;; This mode is based on tutorial from Scott Andrew Borton:
+;; http://two-wugs.net/emacs/mode-tutorial.html
+
+
+(defvar edje-mode-hook nil)
+
+(defun number-or-nil-to-string (v  default)
+  (cond ((numberp v) (number-to-string v))
+((stringp v) (if (string= v "") (number-to-string default) v))
+(t   (number-to-string default
+
+(defun non-empty-string (s)
+  (and (not (eq 'nil s))
+   (not (string= "" s
+
+(defun edje-new-program-action-signal-emit (source emission)
+  "Insert new program SIGNAL_EMIT"
+  (interactive "ssource: \nsemission: ")
+  (insert
+   (concat
+"   action: SIGNAL_EMIT \"" source "\" \"" emission "\";\n"
+)))
+
+(defun edje-new-program-action-state-set (state value target)
+  "Insert new program STATE_SET"
+  (interactive "sstate: \nsvalue (0.0): \nstarget: ")
+  (insert
+   (concat
+"   action: STATE_SET \"" state "\" "
+   (number-or-nil-to-string value 0.0) ";\n"
+"   target: \"" target "\";\n"
+)))
+
+(defun edje-new-program-action (action)
+  "Insert new program action"
+  (interactive "saction: ")
+  (setq action (upcase action))
+  (cond ((string= action "STATE_SET")
+ (edje-new-program-action-state-set "" 0.0 ""))
+((string= action "SIGNAL_EMIT")
+ (edje-new-program-action-signal-emit "" ""))
+))
+
+(defun edje-new-program (name signal source action)
+  "Insert new program block"
+  (interactive "sname: \nssignal: \nssource: \nsaction: ")
+  (insert
+   (concat
+"\n"
+"program {\n"
+"   name: \"" name "\";\n"
+
+(if (non-empty-string signal)
+(concat "   signal: \"" signal "\";\n"))
+
+(if (non-empty-string source)
+(concat "   source: \"" source "\";\n"))
+))
+
+  (edje-new-program-action action)
+
+  (insert
+   (concat
+"}\n"
+"\n"
+)))
+
+(defun edje-new-desc-relative (x y  defx defy)
+  "Insert new part description 'relative' line"
+  (interactive "sx: \nsy: ")
+  (insert
+   (concat
+"  relative: "
+(number-or-nil-to-string x defx) " "
+(number-or-nil-to-string y defy) ";\n"
+)))
+
+(defun edje-new-desc-offset (x y  defx defy)
+  "Insert new part description 'offset' line"
+  (interactive "sx: \nsy: ")
+  (insert
+   (concat
+"  offset: "
+(number-or-nil-to-string x defx) " "
+(number-or-nil-to-string y defy) ";\n"
+)))
+
+(defun edje-new-desc-inherit (name val)
+  "Insert new part description 'inherit' line"
+  (interactive "sname: \nsvalue: ")
+  (insert
+   (concat
+"   inherit: \"" name "\" "
+(number-or-nil-to-string val 0.0) ";\n"
+)))
+
+(defun edje-new-desc-text (font size text)
+  "Insert new part description 'text' block"
+  (interactive "sfont: \nssize: \nstext: ")
+  (insert
+   (concat
+"   text {\n"
+"  font: \"" font "\";\n"
+"  size: " (number-or-nil-to-string size) ";\n"
+"  text: \"" text "\";\n"
+"   }\n"
+)))
+
+(defun edje-new-desc-image (name)
+  "Insert new part description 

[EGIT] [core/efl] master 01/01: Emacs configs: Move to designated repo.

2016-12-05 Thread Tom Hacohen
tasn pushed a commit to branch master.

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

commit 92f8e013eaa62da6658556924f9a08cf31c75565
Author: Tom Hacohen 
Date:   Mon Dec 5 12:34:43 2016 +

Emacs configs: Move to designated repo.
---
 data/edje/edje-mode.el | 513 -
 data/eo/eo-mode.el | 398 --
 2 files changed, 911 deletions(-)

diff --git a/data/edje/edje-mode.el b/data/edje/edje-mode.el
deleted file mode 100644
index b0d8602..000
--- a/data/edje/edje-mode.el
+++ /dev/null
@@ -1,513 +0,0 @@
-;;; edje-mode-el -- Major mode for editing Edje files
-
-;; Author: Gustavo Sverzut Barbieri 
-;; Created: 2007-07-23
-;; Keywords: Edje major-mode
-;; Url: http://barbieri-playground.googlecode.com/svn/dot-files/edje-mode.el
-;;  (if you find this file have problems, check that Url and request 
update)
-
-;; Copyright (C) 2007 Gustavo Sverzut Barbieri 
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2 of
-;; the License, or (at your option) any later version.
-
-;; This program 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 General Public License for more details.
-
-;; You should have received a copy of the GNU General Public
-;; License along with this program; if not, write to the Free
-;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-;; MA 02111-1307 USA
-
-;;; Commentary:
-;;
-;; This mode is based on tutorial from Scott Andrew Borton:
-;; http://two-wugs.net/emacs/mode-tutorial.html
-
-
-(defvar edje-mode-hook nil)
-
-(defun number-or-nil-to-string (v  default)
-  (cond ((numberp v) (number-to-string v))
-((stringp v) (if (string= v "") (number-to-string default) v))
-(t   (number-to-string default
-
-(defun non-empty-string (s)
-  (and (not (eq 'nil s))
-   (not (string= "" s
-
-(defun edje-new-program-action-signal-emit (source emission)
-  "Insert new program SIGNAL_EMIT"
-  (interactive "ssource: \nsemission: ")
-  (insert
-   (concat
-"   action: SIGNAL_EMIT \"" source "\" \"" emission "\";\n"
-)))
-
-(defun edje-new-program-action-state-set (state value target)
-  "Insert new program STATE_SET"
-  (interactive "sstate: \nsvalue (0.0): \nstarget: ")
-  (insert
-   (concat
-"   action: STATE_SET \"" state "\" "
-   (number-or-nil-to-string value 0.0) ";\n"
-"   target: \"" target "\";\n"
-)))
-
-(defun edje-new-program-action (action)
-  "Insert new program action"
-  (interactive "saction: ")
-  (setq action (upcase action))
-  (cond ((string= action "STATE_SET")
- (edje-new-program-action-state-set "" 0.0 ""))
-((string= action "SIGNAL_EMIT")
- (edje-new-program-action-signal-emit "" ""))
-))
-
-(defun edje-new-program (name signal source action)
-  "Insert new program block"
-  (interactive "sname: \nssignal: \nssource: \nsaction: ")
-  (insert
-   (concat
-"\n"
-"program {\n"
-"   name: \"" name "\";\n"
-
-(if (non-empty-string signal)
-(concat "   signal: \"" signal "\";\n"))
-
-(if (non-empty-string source)
-(concat "   source: \"" source "\";\n"))
-))
-
-  (edje-new-program-action action)
-
-  (insert
-   (concat
-"}\n"
-"\n"
-)))
-
-(defun edje-new-desc-relative (x y  defx defy)
-  "Insert new part description 'relative' line"
-  (interactive "sx: \nsy: ")
-  (insert
-   (concat
-"  relative: "
-(number-or-nil-to-string x defx) " "
-(number-or-nil-to-string y defy) ";\n"
-)))
-
-(defun edje-new-desc-offset (x y  defx defy)
-  "Insert new part description 'offset' line"
-  (interactive "sx: \nsy: ")
-  (insert
-   (concat
-"  offset: "
-(number-or-nil-to-string x defx) " "
-(number-or-nil-to-string y defy) ";\n"
-)))
-
-(defun edje-new-desc-inherit (name val)
-  "Insert new part description 'inherit' line"
-  (interactive "sname: \nsvalue: ")
-  (insert
-   (concat
-"   inherit: \"" name "\" "
-(number-or-nil-to-string val 0.0) ";\n"
-)))
-
-(defun edje-new-desc-text (font size text)
-  "Insert new part description 'text' block"
-  (interactive "sfont: \nssize: \nstext: ")
-  (insert
-   (concat
-"   text {\n"
-"  font: \"" font "\";\n"
-"  size: " (number-or-nil-to-string size) ";\n"
-"  text: \"" text "\";\n"
-"   }\n"
-)))
-
-(defun edje-new-desc-image (name)
-  "Insert 

[EGIT] [core/efl] efl-1.16 02/02: Eo gdb: add a way to resolve Eo ids from GDB without a running process

2016-12-05 Thread Tom Hacohen
tasn pushed a commit to branch efl-1.16.

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

commit 34efbca16e954d994a26d730753b8fbd1d4a37ec
Author: Tom Hacohen 
Date:   Fri Nov 18 08:44:21 2016 +

Eo gdb: add a way to resolve Eo ids from GDB without a running process

This is a backport of 79d76fb25ece4ffbf5785b4be2b030f062ef9f2c.

Normally when debugging Eo with gdb you can just use any of the internal
eo functions to resolve the id to its internal pointer. However, when
loading a coredump you can't execute any code, not even the id resolve
code.

This change adds a gdb function that resolves the id to its pointer form
without executing any code in the process space. This plugin is
essentially the id resolve code written in python as a gdb function.

Usage:
 Print the pointer:
 (gdb) print $eo_resolve(obj)
 $1 = (_Eo_Object *) 0x559bbe70

 Use it directly (e.g. to print the class name):
 (gdb) $eo_resolve(obj)->klass->desc.name

This plugin requires that the coredump would be loaded with the exact
same libeo.so binary (or at least one that hasn't changed eo internals),
and that the debug symbols for libeo.so would be available for gdb to
use.

@feature
---
 data/eo/eo_gdb.py | 83 +--
 1 file changed, 81 insertions(+), 2 deletions(-)

diff --git a/data/eo/eo_gdb.py b/data/eo/eo_gdb.py
index 2191210..e54797d 100644
--- a/data/eo/eo_gdb.py
+++ b/data/eo/eo_gdb.py
@@ -1,4 +1,83 @@
-# Implement eo_break that'll break on a macro/subid/whatever.
-
 import gdb
 
+"""
+All of this script relies heavily on Eo internals and will break if they
+change. Need to make sure this is always in sync.
+"""
+
+ptr_size = int(gdb.parse_and_eval('sizeof(void *)'))
+
+if ptr_size == 4:
+# 32 bits
+BITS_MID_TABLE_ID = 5
+BITS_TABLE_ID = 5
+BITS_ENTRY_ID = 12
+BITS_GENERATION_COUNTER = 9
+REF_TAG_SHIFT = 31
+DROPPED_TABLES = 0
+DROPPED_ENTRIES = 4
+else:
+# 64 bits
+BITS_MID_TABLE_ID = 11
+BITS_TABLE_ID = 11
+BITS_ENTRY_ID = 12
+BITS_GENERATION_COUNTER = 29
+REF_TAG_SHIFT = 63
+DROPPED_TABLES = 2
+DROPPED_ENTRIES = 3
+
+# /* Shifts macros to manipulate the Eo id */
+SHIFT_MID_TABLE_ID = (BITS_TABLE_ID + BITS_ENTRY_ID + BITS_GENERATION_COUNTER)
+SHIFT_TABLE_ID = (BITS_ENTRY_ID + BITS_GENERATION_COUNTER)
+SHIFT_ENTRY_ID = (BITS_GENERATION_COUNTER)
+
+# /* Maximum ranges */
+MAX_MID_TABLE_ID = (1 << BITS_MID_TABLE_ID)
+MAX_TABLE_ID = ((1 << BITS_TABLE_ID) - DROPPED_TABLES)
+MAX_ENTRY_ID = ((1 << BITS_ENTRY_ID) - DROPPED_ENTRIES)
+MAX_GENERATIONS = (1 << BITS_GENERATION_COUNTER)
+
+# /* Masks */
+MASK_MID_TABLE_ID = (MAX_MID_TABLE_ID - 1)
+MASK_TABLE_ID = ((1 << BITS_TABLE_ID) - 1)
+MASK_ENTRY_ID = ((1 << BITS_ENTRY_ID) - 1)
+MASK_GENERATIONS = (MAX_GENERATIONS - 1)
+MASK_OBJ_TAG = (1 << (REF_TAG_SHIFT))
+
+
+null_ptr = gdb.parse_and_eval('(_Eo_Object *) 0')
+
+
+class Eo_resolve(gdb.Function):
+def __init__(self):
+gdb.Function.__init__(self, 'eo_resolve')
+
+def invoke(self, arg):
+obj_id = int(arg)
+
+mid_table_id = (obj_id >> SHIFT_MID_TABLE_ID) & MASK_MID_TABLE_ID
+table_id = (obj_id >> SHIFT_TABLE_ID) & MASK_TABLE_ID
+entry_id = (obj_id >> SHIFT_ENTRY_ID) & MASK_ENTRY_ID
+tag_bit = (obj_id) & MASK_OBJ_TAG
+generation = obj_id & MASK_GENERATIONS
+
+if (obj_id == 0) or (tag_bit == 0):
+gdb.write('Pointer is NULL or not a valid object.\n')
+return null_ptr
+
+entries = 
gdb.parse_and_eval('_eo_ids_tables[{0}]'.format(mid_table_id))
+
+if int(entries) == 0:
+gdb.write('Pointer is not a valid object.\n')
+return null_ptr
+
+entry = entries[table_id]['entries'][entry_id]
+
+if (not entry['active']) or (int(entry['generation']) != generation):
+gdb.write('Pointer is no longer active.\n')
+return null_ptr
+
+return entry['ptr']
+
+
+Eo_resolve()

-- 




[EGIT] [core/efl] efl-1.16 01/02: Eo gdb: remove old and broken gdb macro.

2016-12-05 Thread Tom Hacohen
tasn pushed a commit to branch efl-1.16.

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

commit 0a278f566ab60bd63da02670937c4c4b11ff8052
Author: Tom Hacohen 
Date:   Fri Nov 18 07:31:39 2016 +

Eo gdb: remove old and broken gdb macro.
---
 data/eo/eo_gdb.py | 39 ---
 1 file changed, 39 deletions(-)

diff --git a/data/eo/eo_gdb.py b/data/eo/eo_gdb.py
index aafe881..2191210 100644
--- a/data/eo/eo_gdb.py
+++ b/data/eo/eo_gdb.py
@@ -2,42 +2,3 @@
 
 import gdb
 
-def symbol_equal_to_string(symbol, string):
-   return (symbol != None) and (symbol.name == string)
-
-class Eo_step(gdb.Command):
-   STEP_LIMIT = 10
-   def __init__(self):
-  gdb.Command.__init__(self, "eo_step", gdb.COMMAND_OBSCURE)
-  self.START_FUNC = "_eo_call_resolve"
-  self.SKIP_FUNC = "_eo_do_start"
-
-   def invoke (self, arg, from_tty):
-  # Get to the call resolve function.
-  i = 0
-  while not symbol_equal_to_string(gdb.selected_frame().function(), 
self.START_FUNC):
- if symbol_equal_to_string(gdb.selected_frame().function(), 
self.SKIP_FUNC):
-gdb.execute("finish", False, to_string=True)
-
- if i > Eo_step.STEP_LIMIT:
- break
- else:
- i += 1
- gdb.execute("step", False, to_string=True)
-
-  # If we found the function, return from it, otherwise, fail.
-  if symbol_equal_to_string(gdb.selected_frame().function(), 
self.START_FUNC):
- gdb.execute("finish", False, to_string=True)
-  else:
- print("Search limit reached, you tried calling eo_step too far from 
an eo_do.")
- return
-
-  # Step until we move to a different function. FIXME: The hook can 
confuse us, needs to be solved.
-  cur_func = gdb.selected_frame().function()
-  while gdb.selected_frame().function() == cur_func:
- gdb.execute("stepi", False, to_string=True)
-
-  # One last call to skip into the implementation
-  gdb.execute("step", True)
-
-Eo_step()

-- 




[EGIT] [core/efl] master 01/01: Eo gdb: Remove redundant variable setting.

2016-12-05 Thread Tom Hacohen
tasn pushed a commit to branch master.

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

commit 0431dd24fd971149878ccbfb48c87f500d9b027c
Author: Tom Hacohen 
Date:   Mon Dec 5 12:06:20 2016 +

Eo gdb: Remove redundant variable setting.

These were hardcoded values I used for debugging, they are not used anymore,
they are instead calculated at runtime.
---
 data/eo/eo_gdb.py | 9 -
 1 file changed, 9 deletions(-)

diff --git a/data/eo/eo_gdb.py b/data/eo/eo_gdb.py
index 995aff4..76b8fbd 100644
--- a/data/eo/eo_gdb.py
+++ b/data/eo/eo_gdb.py
@@ -7,15 +7,6 @@ change. Need to make sure this is always in sync.
 
 ptr_size = int(gdb.parse_and_eval('sizeof(void *)'))
 
-SHIFT_MID_TABLE_ID = 0x30
-MASK_MID_TABLE_ID = 0x7ff
-SHIFT_TABLE_ID = 0x25
-MASK_TABLE_ID = 0x7ff
-SHIFT_ENTRY_ID = 0x1a
-MASK_ENTRY_ID = 0x7ff
-MASK_GENERATIONS = 0x3ff
-MASK_OBJ_TAG = 0x4000
-
 if ptr_size == 4:
 # 32 bits
 BITS_MID_TABLE_ID = 5

-- 




[EGIT] [core/efl] master 01/01: emile: do not rely on the struct size

2016-12-05 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 07bb7ca2824221826d2a7568cea26cab1b5f3250
Author: Marcel Hollerbach 
Date:   Mon Dec 5 11:13:02 2016 +0100

emile: do not rely on the struct size

Summary:
in newer versions of openssl, most of the public structures are made
opaque. So we should use the openssl api to allocate this structure.

Since ctx is now a pointer we dont need opened anymore, so those vars
are replaced with ctx checks. ctx is always NULL'ed after a free

fix T4923

Reviewers: cedric, jpeg, stefan_schmidt

Reviewed By: jpeg, stefan_schmidt

Subscribers: stefan_schmidt, ManMower, jpeg

Maniphest Tasks: T4923

Differential Revision: https://phab.enlightenment.org/D4456
---
 src/lib/emile/emile_cipher_openssl.c | 37 +---
 1 file changed, 17 insertions(+), 20 deletions(-)

diff --git a/src/lib/emile/emile_cipher_openssl.c 
b/src/lib/emile/emile_cipher_openssl.c
index 9963c22..efd9324 100644
--- a/src/lib/emile/emile_cipher_openssl.c
+++ b/src/lib/emile/emile_cipher_openssl.c
@@ -102,9 +102,8 @@ emile_binbuf_cipher(Emile_Cipher_Algorithm algo,
unsigned int salt;
unsigned int tmp = 0;
unsigned int crypted_length;
-   int opened = 0;
/* Openssl declarations*/
-   EVP_CIPHER_CTX ctx;
+   EVP_CIPHER_CTX *ctx = NULL;
unsigned int *buffer = NULL;
int tmp_len;
 
@@ -151,29 +150,28 @@ emile_binbuf_cipher(Emile_Cipher_Algorithm algo,
 
/* Openssl create the corresponding cipher
   AES with a 256 bit key, Cipher Block Chaining mode */
-   EVP_CIPHER_CTX_init();
-   if (!EVP_EncryptInit_ex(, EVP_aes_256_cbc(), NULL, ik, iv))
+   ctx = EVP_CIPHER_CTX_new();
+   if (!EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, ik, iv))
  goto on_error;
 
-   opened = 1;
-
memset(iv, 0, sizeof (iv));
memset(ik, 0, sizeof (ik));
 
pointer = (unsigned char*) eina_binbuf_string_get(result);
 
/* Openssl encrypt */
-   if (!EVP_EncryptUpdate(, pointer + sizeof (int), _len,
+   if (!EVP_EncryptUpdate(ctx, pointer + sizeof (int), _len,
   (unsigned char *)buffer,
   eina_binbuf_length_get(data) + sizeof(unsigned int)))
  goto on_error;
 
/* Openssl close the cipher */
-   if (!EVP_EncryptFinal_ex(, pointer + sizeof (int) + tmp_len,
+   if (!EVP_EncryptFinal_ex(ctx, pointer + sizeof (int) + tmp_len,
 _len))
  goto on_error;
 
-   EVP_CIPHER_CTX_cleanup();
+   EVP_CIPHER_CTX_free(ctx);
+   ctx = NULL;
free(buffer);
 
return result;
@@ -183,8 +181,8 @@ on_error:
memset(ik, 0, sizeof (ik));
 
/* Openssl error */
-   if (opened)
- EVP_CIPHER_CTX_cleanup();
+   if (ctx)
+ EVP_CIPHER_CTX_cleanup(ctx);
 
free(buffer);
 
@@ -203,7 +201,7 @@ emile_binbuf_decipher(Emile_Cipher_Algorithm algo,
 {
Eina_Binbuf *result = NULL;
unsigned int *over;
-   EVP_CIPHER_CTX ctx;
+   EVP_CIPHER_CTX *ctx = NULL;
unsigned char ik[MAX_KEY_LEN];
unsigned char iv[MAX_IV_LEN];
unsigned char key_material[MAX_KEY_LEN + MAX_IV_LEN];
@@ -211,7 +209,6 @@ emile_binbuf_decipher(Emile_Cipher_Algorithm algo,
unsigned int size;
int tmp_len;
int tmp = 0;
-   int opened = 0;
 
if (algo != EMILE_AES256_CBC) return NULL;
if (!emile_cipher_init()) return NULL;
@@ -247,23 +244,23 @@ emile_binbuf_decipher(Emile_Cipher_Algorithm algo,
eina_binbuf_append_length(result, (unsigned char*) (over + 1), tmp_len);
 
/* Openssl create the corresponding cipher */
-   EVP_CIPHER_CTX_init();
-   opened = 1;
+   ctx = EVP_CIPHER_CTX_new();
 
-   if (!EVP_DecryptInit_ex(, EVP_aes_256_cbc(), NULL, ik, iv))
+   if (!EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, ik, iv))
  goto on_error;
 
memset(iv, 0, sizeof (iv));
memset(ik, 0, sizeof (ik));
 
/* Openssl decrypt */
-   if (!EVP_DecryptUpdate(,
+   if (!EVP_DecryptUpdate(ctx,
   (void*) eina_binbuf_string_get(result), ,
   (void*) (over + 1), tmp_len))
  goto on_error;
 
/* Openssl close the cipher*/
-   EVP_CIPHER_CTX_cleanup();
+   EVP_CIPHER_CTX_free(ctx);
+   ctx = NULL;
 
/* Get the decrypted data size */
tmp = *(unsigned int*)(eina_binbuf_string_get(result));
@@ -281,8 +278,8 @@ on_error:
memset(iv, 0, sizeof (iv));
memset(ik, 0, sizeof (ik));
 
-   if (opened)
- EVP_CIPHER_CTX_cleanup();
+   if (ctx)
+ EVP_CIPHER_CTX_free(ctx);
 
eina_binbuf_free(result);
 

-- 




[E-devel] Upcoming efl 1.18.4 release

2016-12-05 Thread Stefan Schmidt
Hello.

Normally I would not have done this so quickly after 1.18.3 but we have 
a build break for wayland in this tarball as Simotek thankfully pointed 
out :/

We also have some other things worth backporting so it should be fine to 
get a 1.18.4 out this week.

If you have anything else pending for a backport please do so until 
Tuesday evening in your timezone. I will prepare pre-release tarballs on 
Wednesday and if nothing comes up do the final release on Thursday.

regards
Stefan Schmidt

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 02/02: eo: Fix test case

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

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

commit 6076014f5815ee7d129aa38a1eb380d9262de77f
Author: Jean-Philippe Andre 
Date:   Mon Dec 5 18:15:08 2016 +0900

eo: Fix test case

The exact error message has changed.
Another test case is still broken.
---
 src/tests/eo/suite/eo_test_call_errors.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/tests/eo/suite/eo_test_call_errors.c 
b/src/tests/eo/suite/eo_test_call_errors.c
index 3b23216..969a6b2 100644
--- a/src/tests/eo/suite/eo_test_call_errors.c
+++ b/src/tests/eo/suite/eo_test_call_errors.c
@@ -38,7 +38,7 @@ START_TEST(eo_api_not_implemented_call)
Eo *obj = efl_add(SIMPLE_CLASS, NULL);
fail_if(!obj);
 
-   TEST_EO_ERROR("_efl_object_api_op_id_get", "Unable to resolve op for api 
func %p");
+   TEST_EO_ERROR("simple_no_implementation", "Unable to resolve op for api 
func %p for obj=%p (%s)");
simple_no_implementation(obj);
fail_unless(ctx.did);
 

-- 




[EGIT] [core/efl] master 01/02: eo: Fix potential inifinite loop

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

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

commit 552831386a9553dc49185db30a56fbe93bbcd127
Author: Jean-Philippe Andre 
Date:   Mon Dec 5 10:43:38 2016 +0900

eo: Fix potential inifinite loop

I saw a little oopsie in patch fc48161910fc013674f4af9e19. This
amends it to avoid a potential infinite loop.
---
 src/lib/eo/eo.c | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 37c2a4c..e8e6a12 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -1341,18 +1341,18 @@ efl_class_new(const Efl_Class_Description *desc, const 
Efl_Class *parent_id, ...
 while (extn_id)
   {
  extn = _eo_class_pointer_get((Efl_Class *)extn_id, __FUNCTION__, 
__FILE__, __LINE__);
- if (!extn) /* did not validate */
-   continue;
- switch (extn->desc->type)
+ if (EINA_LIKELY(extn != NULL))
{
-case EFL_CLASS_TYPE_REGULAR_NO_INSTANT:
-case EFL_CLASS_TYPE_REGULAR:
-case EFL_CLASS_TYPE_INTERFACE:
-case EFL_CLASS_TYPE_MIXIN:
-   extn_list = eina_list_append(extn_list, extn);
-   break;
+  switch (extn->desc->type)
+{
+ case EFL_CLASS_TYPE_REGULAR_NO_INSTANT:
+ case EFL_CLASS_TYPE_REGULAR:
+ case EFL_CLASS_TYPE_INTERFACE:
+ case EFL_CLASS_TYPE_MIXIN:
+   extn_list = eina_list_append(extn_list, extn);
+   break;
+}
}
-
  extn_id = va_arg(p_list, Eo_Id *);
   }
 

-- 




Re: [E-devel] [EGIT] [core/efl] master 03/03: eo: if EO_DEBUG, check if efl_super() object 'isa' the given class.

2016-12-05 Thread Stefan Schmidt
Hello.

On 02/12/16 17:51, Gustavo Sverzut Barbieri wrote:
> barbieri pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=04450c4ee03fd20271ec4f911667acea10ba1375
>
> commit 04450c4ee03fd20271ec4f911667acea10ba1375
> Author: Gustavo Sverzut Barbieri 
> Date:   Fri Dec 2 14:49:06 2016 -0200
>
> eo: if EO_DEBUG, check if efl_super() object 'isa' the given class.
>
> A common error is to copy & paste efl_super() calls and forget to fix
> the class. If usin EO_DEBUG, then use efl_isa() to error.
> ---


Git bisect pointed me to this commit as the beginning from failed tests 
in the eo test suite. In this case tests/eo/test_function_overrides

I have seen other eo tests failing as well but they seemt o come from 
later changes so it would be a nested git bisect which I'm not motivated 
to do on a Monday morning. :)

On current HEAD I see the following EO tests failing here and on Jenkins:

FAIL: tests/eo/test_function_overrides
FAIL: tests/eo/eo_suite
FAIL: tests/eo/eo_suite_add_fallback

Gustavo, please run make check and fix the recent additions to make sure 
the EO test suite passes. Thanks.

regards
Stefan Schmidt

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 03/03: eo: if EO_DEBUG, check if efl_super() object 'isa' the given class.

2016-12-05 Thread Jean-Philippe André
Hey Gustavo,

On 3 December 2016 at 01:51, Gustavo Sverzut Barbieri 
wrote:

> barbieri pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=
> 04450c4ee03fd20271ec4f911667acea10ba1375
>
> commit 04450c4ee03fd20271ec4f911667acea10ba1375
> Author: Gustavo Sverzut Barbieri 
> Date:   Fri Dec 2 14:49:06 2016 -0200
>
> eo: if EO_DEBUG, check if efl_super() object 'isa' the given class.
>
> A common error is to copy & paste efl_super() calls and forget to fix
> the class. If usin EO_DEBUG, then use efl_isa() to error.
>

This patch broke make check as there are tests with efl_super on a class.
See _class_print() in tests/eo/function_overrides2.c



> ---
>  src/lib/eo/eo.c | 13 +
>  1 file changed, 13 insertions(+)
>
> diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
> index 9719034..e86f052 100644
> --- a/src/lib/eo/eo.c
> +++ b/src/lib/eo/eo.c
> @@ -318,6 +318,11 @@ efl_super(const Eo *obj, const Efl_Class *cur_klass)
>  {
> EO_CLASS_POINTER_GOTO(cur_klass, klass, err);
>
> +   if (EINA_UNLIKELY(!_eo_is_a_obj(obj))) goto err_obj;
>

This fails as the obj is a Efl_Class.



> +#ifdef EO_DEBUG
> +   if (EINA_UNLIKELY(!efl_isa(obj, cur_klass))) goto err_obj_hierarchy;
> +#endif
> +
> /* FIXME: Switch to atomic operations intead of lock. */
> eina_spinlock_take(&_super_class_lock);
> _super_class = klass;
> @@ -326,6 +331,14 @@ efl_super(const Eo *obj, const Efl_Class *cur_klass)
>  err:
> _EO_POINTER_ERR("Class (%p) is an invalid ref.", cur_klass);
> return NULL;
> +err_obj:
> +   _EO_POINTER_ERR("Object (%p) is an invalid ref, class=%p (%s).", obj,
> cur_klass, efl_class_name_get(cur_klass));
> +   return NULL;
> +#ifdef EO_DEBUG
> +err_obj_hierarchy:
> +   _EO_POINTER_ERR("Object (%p) class=%p (%s) is not an instance of
> class=%p (%s).", obj, efl_class_get(obj), efl_class_name_get(obj),
> cur_klass, efl_class_name_get(cur_klass));
> +#endif
> +   return NULL;
>  }
>
>  EAPI Eina_Bool
>
> --
>

Best regards,

-- 
Jean-Philippe André
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[E-devel] Weekly news from the automated build and QA front

2016-12-05 Thread Stefan Schmidt
Hello.

Summary:
o Test suite failures from EO and maybe others, bisecting right now.

This should give everyone an overview over what has happened in the last
week on the QA front. The numbers in parentheses reflect the values from
last week to give you a trend.

CI:
o Overall build statistic: 7.84% (8.38%) failed.
https://build.enlightenment.org/

Unit tests:
o 863 (859) unit tests for efl

Coverage:
o EFL total coverage is at N/A (N/A) lines, N/A (N/A) functions and N/A 
(N/A) branches
https://build.enlightenment.org/view/Test%20Coverage/

Coverity:
o EFL: Outstanding defects 90 (88) with a density of 0.08 (0.08)
o Enlightenment: Outstanding defects 1 (2) with a density of 0 (0.01)
o Terminology: Outstanding defects 2 (0) with a density of 0.01 (0)
o Rage: Outstanding defects 0 (0) with a density of 0 (0)

Phab:
o EFL bug count: 306 (301)
o E bug count: 398 (398)
https://phab.enlightenment.org/maniphest/report/burn/
o Pending patch reviews: 107 (110)

regards
Stefan Schmidt

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/01: evas textblock: fix a rendering issue.

2016-12-05 Thread ChunEon Park
hermet pushed a commit to branch master.

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

commit 1e6246df24f84eebda95c9d18f90ead3f803789e
Author: Hermet Park 
Date:   Mon Dec 5 18:03:01 2016 +0900

evas textblock: fix a rendering issue.

It's a rare case but a possible scenario that textblock is not updated
 properly in case of textblock rendering via proxy/map.

If the textblock state turned out with an invisible state,
its relayouting won't be up to date. But actually, it could be rendered
by map/proxy. In that case textblock text layouting would be incorrect.

Additionally, removed evas event freeze state there because map/proxy won't
be drawn under the event freeze state always.

@fix
---
 src/lib/evas/canvas/evas_object_textblock.c | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index 6451d7b..d251ce4 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -12754,11 +12754,12 @@ evas_object_textblock_render(Evas_Object *eo_obj 
EINA_UNUSED,
{0, 1, 2, 1, 0}
  };
 
-   /* [FIXME!!!] rare case when relayout was not called: cache.clip made
-* the object not visible (eg. clipped out), but it is actually visible
-* in this context (eg. inside a proxy) - UGLY DIRTY FIX */
-   if (obj->layer->evas->is_frozen &&
-   (o->changed || o->content_changed || o->format_changed || 
o->obstacle_changed))
+   /* FIXME: rare case when relayout was not called: cache.clip made
+  the object not visible (eg. clipped out), but it is actually visible
+  in this context (eg. inside a proxy).
+  Plus, one more scenario is that the object isn't visible but actually is 
visible
+  by evas_map. */
+   if (o->changed || o->content_changed || o->format_changed || 
o->obstacle_changed)
_relayout_if_needed(eo_obj, o);
 
/* If there are no paragraphs and thus there are no lines,

-- 




Re: [E-devel] Eo error message in my application

2016-12-05 Thread Vincent Torri
ok, i've fixed my problem, thank you

Vincent

On Mon, Dec 5, 2016 at 4:10 AM, Vincent Torri  wrote:
> i still don't know how to fix the problem...
>
> On Mon, Dec 5, 2016 at 3:04 AM, Carsten Haitzler  wrote:
>> On Mon, 5 Dec 2016 09:53:51 +0900 Jean-Philippe André  
>> said:
>>
>>> On 4 December 2016 at 11:27, Carsten Haitzler  wrote:
>>>
>>> > On Sat, 3 Dec 2016 20:25:46 -0200 Gustavo Sverzut Barbieri <
>>> > barbi...@gmail.com>
>>> > said:
>>> >
>>> > > On Sat, Dec 3, 2016 at 7:13 PM, Vincent Torri 
>>> > wrote:
>>> > > > On Sat, Dec 3, 2016 at 7:44 PM, Gustavo Sverzut Barbieri
>>> > > >  wrote:
>>> > > >> On Sat, Dec 3, 2016 at 1:57 PM, Vincent Torri <
>>> > vincent.to...@gmail.com>
>>> > > >> wrote:
>>> > > >>> Hello
>>> > > >>>
>>> > > >>> I'm rewriting my multi-document viewer. I'm using EFL git,  and i
>>> > have
>>> > > >>> that Eo error message :
>>> > > >>>
>>> > > >>> ERR<59568>:eo[T:3] lib/eo/eo.c:1663 efl_isa() Object 40007f56 is not
>>> > a
>>> > > >>> valid object in this context: object domain: 0, current domain: 2,
>>> > > >>> local domain: 2, available domains: [  1 2  ]
>>> > > >>>
>>> > > >>> does someone have an idea of the problem ?
>>> > > >>
>>> > > >> the new efl in git provides more context to that message since
>>> > > >> yesterday, particularly if you use EO_LIFECYCLE_DEBUG=1 (envvar),
>>> > > >> since I was so pissed with such nebulous messages :-D
>>> > > >
>>> > > > all the debug stuff does not work on Windows (it needs libunwind, or
>>> > > > at least DWARF parsing to get the debug symbols), but i will test on
>>> > > > Linux when I have time.
>>> > > >
>>> > > > i've also seen some preload stuff you mentioned, which does not work
>>> > > > on Windows (it's a different method to do similar stuff)
>>> > > >
>>> > > >> usually the object is already dead or was never created... If you're
>>> > > >> using threads (seems so due "[T:3]"), be aware that objects are bound
>>> > > >> to the thread they were created and you need to "import"  to use,
>>> > > >> Raster sent some email to the list and I recall som tests in the
>>> > > >> tree
>>> > > >
>>> > > > I indeed use an ecore_thread
>>> > >
>>> > > yes, reading the message again, not just the T:3 for the thread, but
>>> > > also the "object domain: 0" (main thread) while "current domain: 2"
>>> > > (secondary thread) would lead to a failure since raster added the
>>> > > protection.
>>> >
>>> > see the message is NOT nebulous. its giving you details the object belongs
>>> > to
>>> > thread domain 0 but your current domain is 2. thus thread does not belong
>>> > to
>>> > the same thread domain that created the object. domain 1 is the shared
>>> > domain
>>> > so should you see object domain being 1 and it still isn't found that 
>>> > means
>>> > there is no object there at all ion the shared table.
>>> >
>>> > the message is very explicit as to the core details of the issue. it's an
>>> > invalid object as far as the thread accessing it is concerned.
>>> >
>>> > > If you want to use auto-locks, then get the shared domain with:
>>> > >
>>> > > efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
>>> > > my_obj = efl_add(...);
>>> > > efl_domain_current_pop();
>>> >
>>> > this isn't really an option UNLESS you created the class entirely 
>>> > inherited
>>> > from base class. i.e. the object class doesn't otherwise use any other
>>> > non-threadsafe data outside the object.
>>> >
>>> > > check eo_test_general.c and Eo.h, they can give you an idea of what
>>> > > can you do... basically all objects are bound to one thread (domain),
>>> > > main thread or shared. Their parent must be in the same domain. This
>>> > > allows TLS of eoid stuff, avoiding locks and possibly avoiding
>>> > > concurrency bugs. Just the shared domains have locks as it used to be
>>> > > in the whole eo.
>>> >
>>> > yup. and even creating shared objects comes with limitations. the intent
>>> > is for
>>> > very specialized objects to become shared objects so multiple threads can
>>> > chare
>>> > them. the general idea is you will have  very very very few shared
>>> > objects, so
>>> > then the global mutex surrounding all shared objects isn't really a big
>>> > issue,but sometimes sharing an object is far easier and simpler than
>>> > anything
>>> > else, and you are not that concerned about contention and performance. 
>>> > most
>>> > objects will be thread-local (and most efl objects will be main-loop local
>>> > of
>>> > course).
>>> >
>>> > but the error right now is very detailed and tells you exactly what it
>>> > sees is
>>> > probably going wrong in the lookup so you can figure out if its a
>>> > cross-thread
>>> > access problem OR that the object actually does not exist. be aware that
>>> > mainloop domain is 0, and the default domain for ALL other threads is 2.
>>> > that
>>> > means create obj in one non-mainloop 

[EGIT] [tools/eflete] master 01/01: Main window: add shortcuts support for manager signals.

2016-12-05 Thread Mykyta Biliavskyi
rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=b49bdd5f9a8d6724c6f5c19e3cca923b31889b05

commit b49bdd5f9a8d6724c6f5c19e3cca923b31889b05
Author: Mykyta Biliavskyi 
Date:   Fri Dec 2 15:52:18 2016 +0200

Main window: add shortcuts support for manager signals.

Signals for managers open wasn't registered.
This commit add signals and callbacks. Managers could be opened only if
project already opened.

@fix T4954
---
 src/bin/ui/main_window.c | 39 +++
 1 file changed, 39 insertions(+)

diff --git a/src/bin/ui/main_window.c b/src/bin/ui/main_window.c
index 3829392..12ff901 100644
--- a/src/bin/ui/main_window.c
+++ b/src/bin/ui/main_window.c
@@ -55,6 +55,41 @@ _help(void *data __UNUSED__,
 }
 
 static void
+_image_manager(void *data __UNUSED__,
+   Evas_Object *obj __UNUSED__,
+   void *event_info __UNUSED__)
+{
+   if (ap.project)
+ image_manager_add();
+}
+
+static void
+_sound_manager(void *data __UNUSED__,
+   Evas_Object *obj __UNUSED__,
+   void *event_info __UNUSED__)
+{
+   if (ap.project)
+ sound_manager_add();
+}
+
+static void
+_style_manager(void *data __UNUSED__,
+   Evas_Object *obj __UNUSED__,
+   void *event_info __UNUSED__)
+{
+   if (ap.project)
+ style_manager_add();
+}
+
+static void
+_color_class_manager(void *data __UNUSED__,
+   Evas_Object *obj __UNUSED__,
+   void *event_info __UNUSED__)
+{
+   if (ap.project)
+ colorclass_manager_add();
+}
+static void
 _after_popup_close(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info)
@@ -126,6 +161,10 @@ ui_main_window_add(void)
evas_object_smart_callback_add(ap.win, signals.elm.win.delete_request, 
_close_request, NULL);
evas_object_smart_callback_add(ap.win, signals.shortcut.quit, 
_close_request, NULL);
evas_object_smart_callback_add(ap.win, signals.shortcut.help, _help, NULL);
+   evas_object_smart_callback_add(ap.win, signals.shortcut.manager.image, 
_image_manager, NULL);
+   evas_object_smart_callback_add(ap.win, signals.shortcut.manager.sound, 
_sound_manager, NULL);
+   evas_object_smart_callback_add(ap.win, 
signals.shortcut.manager.color_class, _color_class_manager, NULL);
+   evas_object_smart_callback_add(ap.win, signals.shortcut.manager.style, 
_style_manager, NULL);
 
 #if 0 // turn off the eflete main cursor, while not used elementary combobox, 
and not fixed bug with double cursors
if (!cursor_main_set(ap.win, CURSOR_ARROW))

-- 




[EGIT] [tools/eflete] master 01/01: inwin, popup: change the red warning to dim background in Tizen.

2016-12-05 Thread Jaehwan Kim
jaehwan pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=448109b67c327f5f85b3aaa3d97fc0323e1c5c52

commit 448109b67c327f5f85b3aaa3d97fc0323e1c5c52
Author: Jaehwan Kim 
Date:   Mon Dec 5 17:23:45 2016 +0900

inwin, popup: change the red warning to dim background in Tizen.
---
 data/themes/tizen/widgets/inwin.edc | 18 +-
 data/themes/tizen/widgets/popup.edc | 19 +--
 2 files changed, 2 insertions(+), 35 deletions(-)

diff --git a/data/themes/tizen/widgets/inwin.edc 
b/data/themes/tizen/widgets/inwin.edc
index 7b62625..8825fb3 100644
--- a/data/themes/tizen/widgets/inwin.edc
+++ b/data/themes/tizen/widgets/inwin.edc
@@ -324,11 +324,7 @@ group { name: "elm/win/inwin/splash";
   part { name: "block_events";
  type: RECT;
  description { state: "default" 0.0;
-color: 255 0 0 0;
- }
- description { state: "clicked" 0.0;
-inherit: "default" 0.00;
-color: 255 0 0 50;
+color: 0 0 0 50;
  }
   }
   part { name: "area.info";
@@ -490,7 +486,6 @@ group { name: "elm/win/inwin/splash";
  signal: "mouse,clicked,*";
  source: "block_events";
  action: SIGNAL_EMIT "elm,action,click" "elm";
- after: "deeper_block_color";
   }
   program { name: "teardown";
  signal: "end";
@@ -507,17 +502,6 @@ group { name: "elm/win/inwin/splash";
   program { name: "emit_teardown";
  action: SIGNAL_EMIT "teardown" "eflete";
   }
-  program { name: "deeper_block_color";
- action: STATE_SET "clicked" 0.00;
- transition: LINEAR 0.2;
- target: "block_events";
- after: "default_block_color";
-  }
-  program { name: "default_block_color";
- action: STATE_SET "default" 0.00;
- transition: LINEAR 0.2;
- target: "block_events";
-  }
   program { name: "load_anim";
  signal: "load";
  action: STATE_SET "default" 0.00;
diff --git a/data/themes/tizen/widgets/popup.edc 
b/data/themes/tizen/widgets/popup.edc
index 6d726f5..29c1522 100644
--- a/data/themes/tizen/widgets/popup.edc
+++ b/data/themes/tizen/widgets/popup.edc
@@ -9,10 +9,7 @@ group { name: "elm/notify/block_events/popup/default";
   part { name: "block_events";
  type: RECT;
  description { state: "default" 0.0;
-color: 0 0 0 0;
- }
- description { state: "clicked" 0.0;
-color: 255 0 0 50;
+color: 0 0 0 50;
  }
   }
}
@@ -21,20 +18,6 @@ group { name: "elm/notify/block_events/popup/default";
  signal: "mouse,clicked,*";
  source: "block_events";
  action: SIGNAL_EMIT "elm,action,click" "elm";
- after: "deeper_block_color";
-  }
-  program {
- name: "deeper_block_color";
- action: STATE_SET "clicked" 0.0;
- target: "block_events";
- transition: LINEAR 0.2;
- after: "default_block_color";
-  }
-  program {
- name: "default_block_color";
- action: STATE_SET "default" 0.0;
- target: "block_events";
- transition: LINEAR 0.2;
   }
}
 }

-- 




Re: [E-devel] PYTHON: Trouble with toolbar.selected_item_get

2016-12-05 Thread Kai Huuhko
This looks like an issue in EFL, possibly fallout from moving to
Eo/EFL events. The callback is being processed before selected item is
changed, so you get None (NULL in C) when
elm_toolbar_item_selected_get() is called within the callback.

The item object should be passed to clicked callback as an argument,
can you check if that's None as well? Change line 1174 to

def itemClicked(self, obj, item):

and remove line 1175.


2016-12-05 3:25 GMT+02:00 Jeff Hoogland :
> Source code: https://github.com/JeffHoogland/ePad/blob/master/epad#L1176
>
> Under EFL 1.15 this code worked fine. It essentially toggled of a toolbar
> button after it was clicked so long as it was not a dropdown menu.
>
> Under EFL 1.18 however the item_selected_get function keeps returning a
> none type:
>
> jeff@hoogland-W740SU:~/Storage/GitHub/ePad$ ./epad
> Traceback (most recent call last):
>   File "efl/evas/efl.evas_object_smart.pxi", line 446, in
> efl.evas._smart_callback (efl/evas/efl.evas.c:78724)
>   File "./epad", line 1176, in itemClicked
> if item.menu_get() is None and item.selected_get():
> AttributeError: 'NoneType' object has no attribute 'menu_get'
>
> Any ideas why this is? What can I do to get this code block to work as
> intended under EFL 1.18? Using the EFL 1.18.3 release with python EFL
> 1.18.0 release tar.
>
> Thanks!
> --
> ~Jeff Hoogland 
> My Projects on GitHub 
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [tools/eflete] master 01/01: eflete: update gitignore

2016-12-05 Thread Vyacheslav Reutskiy
rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=7da206662cbed222b93da95c08d0e4e6c762b045

commit 7da206662cbed222b93da95c08d0e4e6c762b045
Author: Vyacheslav Reutskiy 
Date:   Fri Dec 2 10:36:27 2016 +0200

eflete: update gitignore

Change-Id: Ie6652249658933482e040352f40e255f1210fa25
---
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitignore b/.gitignore
index 7a49365..aadfed8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,8 @@
 intl/
 src/bin/eflete
 src/bin/eflete_exporter
+src/bin/eflete.exe
+src/bin/eflete_exporter.exe
 *.dirstamp
 *.log
 *.trs

--