[E-devel] Propose a Eina_Path

2016-11-10 Thread Hermet Park
Hello everyone.

Currently, I'm trying a prototype - Path Object  using the evas map. 
(specifically for a scenario, text on path).
It looks nice if it works on gl backend. (i will share the result later)

But before we talk about path object stuff, I wanna propose a Eina_Path.

After reviewed efl_gfx_shape interface again, 
I realized path interface should be moved out from the efl_gfx_shape interface 
so that Path Object also utilize the path stuff.

Curently, efl_gfx_shape has more than path functionalities such as a stroke,  

I think path stuff can become a more generic function set. 
So, I'd like to move the path stuff into Eina.

If then, path object will be able to utilize the Eina Path and efl_gfx_shape 
will do also.

ie) 
Eina_Path *path = eina_path_add();
eina_path_append_move_to(path, xxx);
eina_path_append_line_to(path, xxx);
eina_path_append_xxx (...);

...

efl_gfx_shape_path_set(shape, path);

also,

elm_path_object_path_set(obj, path);  

If you agree on this, I will work on this stuff soon.

Any objections?
--
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] [tools/enventor] master 01/01: templates: apply lazy edc

2016-11-10 Thread Hermet Park
hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=fc6f5d8d243c0ed34dcca88f2c109926d900fbfa

commit fc6f5d8d243c0ed34dcca88f2c109926d900fbfa
Author: Hermet Park 
Date:   Fri Nov 11 14:23:24 2016 +0900

templates: apply lazy edc

scale: 1 -> scale;
---
 data/templates/Basic.edc|  4 +--
 data/templates/CustomButton.edc |  4 +--
 data/templates/Group.edc|  4 +--
 data/templates/Listitem.edc | 28 ++--
 data/templates/Map.edc  |  4 +--
 data/templates/MobileLayout.edc | 58 -
 data/templates/MouseEvent.edc   |  6 ++---
 data/templates/Spacer.edc   |  6 ++---
 data/templates/Text.edc |  4 +--
 data/templates/Textblock.edc| 14 +-
 data/templates/Watchface.edc| 18 ++---
 data/templates/Watchface2.edc   | 16 ++--
 12 files changed, 83 insertions(+), 83 deletions(-)

diff --git a/data/templates/Basic.edc b/data/templates/Basic.edc
index c357c45..51c62c0 100644
--- a/data/templates/Basic.edc
+++ b/data/templates/Basic.edc
@@ -29,7 +29,7 @@ collections {
 }
  }
  text { "text";
-scale: 1;
+scale;
 effect: SOFT_OUTLINE;
 desc { "default";
rel1.relative: 0.0 0.5;
@@ -68,4 +68,4 @@ collections {
   }
   */
}
-}
\ No newline at end of file
+}
diff --git a/data/templates/CustomButton.edc b/data/templates/CustomButton.edc
index a138751..c3193c1 100644
--- a/data/templates/CustomButton.edc
+++ b/data/templates/CustomButton.edc
@@ -194,7 +194,7 @@ collections {
  }
  text { "sizer.content";
 nomouse;
-scale: 1;
+scale;
 desc { "default";
visible: 0;
text {
@@ -228,7 +228,7 @@ collections {
  text { "elm.text";
 nomouse;
 effect: SHADOW BOTTOM;
-scale: 1;
+scale;
 desc { "default";
rel1.offset: 0 5;
rel1.relative: 1.0 0.0;
diff --git a/data/templates/Group.edc b/data/templates/Group.edc
index b3c8e0b..152d576 100644
--- a/data/templates/Group.edc
+++ b/data/templates/Group.edc
@@ -21,7 +21,7 @@ collections {
group { "my_group";
   parts {
  text { "text";
-scale: 1;
+scale;
 effect: SOFT_OUTLINE;
 desc { "default";
color: 255 255 255 255;
@@ -35,4 +35,4 @@ collections {
  }
   }
}
-}
\ No newline at end of file
+}
diff --git a/data/templates/Listitem.edc b/data/templates/Listitem.edc
index 854a40d..2da82a7 100644
--- a/data/templates/Listitem.edc
+++ b/data/templates/Listitem.edc
@@ -14,7 +14,7 @@ collections {
   }
   parts {
  rect { "bg";
-scale: 1;
+scale;
 desc { "default";
color: 233 242 242 255;
align: 0.5 0.5;
@@ -26,7 +26,7 @@ collections {
 }
  }
  rect { "point_rect";
-scale: 1;
+scale;
 desc { "default";
color: 0 176 137 255;
align: 0.0 0.0;
@@ -39,7 +39,7 @@ collections {
 }
  }
  spacer { "padding_left";
-scale: 1;
+scale;
 desc { "default";
align: 0.0 0.5;
rel1.to: "point_rect";
@@ -50,7 +50,7 @@ collections {
 }
  }
  image { "icon_status";
-scale: 1;
+scale;
 desc { "default";
/* TODO: Please replace embedded image files to your 
application image files. */
image.normal: "ENVENTOR_EMBEDDED_ICON_ARROW.png";
@@ -65,7 +65,7 @@ collections {
 }
  }
  swallow { "icon_user";
-scale: 1;
+scale;
 desc { "default";
align: 0.0 0.5;
rel1.to: "icon_status";
@@ -76,7 +76,7 @@ collections {
 }
  }
  text { "user_name";
-scale: 1;
+scale;
 desc { "default";
color: 130 130 130 255;
text {
@@ -95,7 +95,7 @@ collections {
 }
  }
  text { "message";
-scale: 1;
+scale;
 desc { "default";
color: 145 145 145 255;
text {
@@ -116,7 +116,7 @@ collections {
 }
  }
  spacer { "padding_right";
-scale: 1;
+scale;
 desc { "default";
align: 1.0 0.5;
rel1.to: "bg";
@@ -127,7 +127,7 @@ collections {
 }
  }
  text { "date";
-scale: 1;
+scale;
 desc { "default";
color: 135 135 135 255;
text {
@@ -148,7 +148,7 @@ 

[EGIT] [tools/enventor] master 01/01: fix eo break.

2016-11-10 Thread Hermet Park
hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=25bf63e3779d87a5c5f8471f9c2c60b957eaa00d

commit 25bf63e3779d87a5c5f8471f9c2c60b957eaa00d
Author: Hermet Park 
Date:   Fri Nov 11 14:20:56 2016 +0900

fix eo break.

updated changed eo usage.
---
 src/lib/enventor_object.eo | 32 
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/lib/enventor_object.eo b/src/lib/enventor_object.eo
index 3e21afb..5bab6ea 100644
--- a/src/lib/enventor_object.eo
+++ b/src/lib/enventor_object.eo
@@ -119,26 +119,26 @@ class Enventor.Object (Elm.Widget, Efl.File) {
  return: bool;
  params {
 @in type: Enventor_Path_Type;
-@in pathes: own(const(list));
+@in pathes: own(const(list));
  }
   }
   path_get {
- return: const(list);
+ return: const(list);
  params {
 @in type: Enventor_Path_Type;
  }
   }
   programs_list_get {
- return: list;
+ return: list;
   }
   part_states_list_get {
- return: list;
+ return: list;
  params {
-@in type: const(char) *;
+@in type: string;
  }
   }
   parts_list_get {
- return: list;
+ return: list;
   }
   live_view_get {
  return: Efl.Canvas.Object;
@@ -147,17 +147,17 @@ class Enventor.Object (Elm.Widget, Efl.File) {
   }
   program_run {
  params {
-@in program: const(char) *;
+@in program: string;
  }
   }
   syntax_color_set {
  params {
 @in color_type: Enventor_Syntax_Color_Type;
-@in val: const(char) *;
+@in val: string;
  }
   }
   syntax_color_get {
- return: const(char) *;
+ return: string;
  params {
 @in color_type: Enventor_Syntax_Color_Type;
  }
@@ -180,26 +180,26 @@ class Enventor.Object (Elm.Widget, Efl.File) {
   }
   live_view_size_get {
  params {
-@in w: Evas.Coord *;
-@in h: Evas.Coord *;
+@in w: ptr(Evas.Coord);
+@in h: ptr(Evas.Coord);
  }
   }
   part_type_get {
  return: Edje_Part_Type;
  params {
-@in part_name: const(char) *;
+@in part_name: string;
  }
   }
   font_set {
  params {
-@in font_name: const(char) *;
-@in font_style: const(char) *;
+@in font_name: string;
+@in font_style: string;
  }
   }
   font_get {
  params {
-@in font_name: const(char) **;
-@in font_style: const(char) **;
+@out font_name: string;
+@out font_style: string;
  }
   }
   auto_complete_list_show {

-- 




[EGIT] [tools/expedite] master 01/01: expedite ui - stop using invalid argb values

2016-11-10 Thread Carsten Haitzler (Rasterman)
raster pushed a commit to branch master.

http://git.enlightenment.org/tools/expedite.git/commit/?id=4ab293536480220f96201d21f93ba050388e78cb

commit 4ab293536480220f96201d21f93ba050388e78cb
Author: Carsten Haitzler (Rasterman) 
Date:   Fri Nov 11 11:59:02 2016 +0900

expedite ui - stop using invalid argb values
---
 src/bin/ui.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/bin/ui.c b/src/bin/ui.c
index cdb3a33..40e4124 100644
--- a/src/bin/ui.c
+++ b/src/bin/ui.c
@@ -588,6 +588,8 @@ ui_loop(void *data EINA_UNUSED)
  a = menu_anim - (double)i;
  if (a < 0) a = -a;
  a = 255 - (30 * a);
+ if (a < 0) a = 0;
+ if (a > 255) a = 255;
  efl_gfx_color_set(o, a, a, a, a);
  efl_gfx_visible_set(o, EINA_TRUE);
 
@@ -596,6 +598,8 @@ ui_loop(void *data EINA_UNUSED)
   a = menu_anim - (double)i;
   if (a < 0) a = -a;
   a = 255 - (255 * a);
+  if (a < 0) a = 0;
+  if (a > 255) a = 255;
 
   o = o_menu_icon_sel;
   efl_gfx_position_set(o, x - ((48 - w) / 2), y - ((48 - h) / 
2));

-- 




[EGIT] [core/efl] master 02/02: ecore_evas: first frame and animator are defined per canvas

2016-11-10 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 8ee79d0e2101930aa2d0a5d38558132511f133d2
Author: Cedric BAIL 
Date:   Thu Nov 10 16:26:34 2016 -0800

ecore_evas: first frame and animator are defined per canvas
---
 src/lib/ecore_evas/ecore_evas.c | 79 +++--
 src/lib/ecore_evas/ecore_evas_private.h |  5 +++
 2 files changed, 40 insertions(+), 44 deletions(-)

diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 1874d39..d48394e 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -57,28 +57,23 @@ static int _ecore_evas_init_count = 0;
 static Ecore_Fd_Handler *_ecore_evas_async_events_fd = NULL;
 static Eina_Bool _ecore_evas_async_events_fd_handler(void *data, 
Ecore_Fd_Handler *fd_handler);
 
+static Ecore_Idle_Exiter *ecore_evas_idle_exiter = NULL;
 static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
 static Ecore_Evas *ecore_evases = NULL;
 static int _ecore_evas_fps_debug = 0;
 
 //RENDER_SYNC
 static int _ecore_evas_render_sync = 1;
-static Ecore_Animator *ecore_evas_animator = NULL;
-static Eina_Bool ecore_evas_animator_ticked = EINA_FALSE;
-static Eina_Bool ecore_evas_first = EINA_TRUE;
-static int overtick = 0;
 
-static Eina_Bool
-_ecore_evas_animator(void *data EINA_UNUSED)
+static void
+_ecore_evas_animator(void *data, const Efl_Event *ev EINA_UNUSED)
 {
-   ecore_evas_animator_ticked = EINA_TRUE;
-   overtick--;
-   if (overtick == 0)
- {
-ecore_evas_animator = NULL;
-return EINA_FALSE;
- }
-   return EINA_TRUE;
+   Ecore_Evas *ee = data;
+
+   ee->animator_ticked = EINA_TRUE;
+
+   efl_event_callback_del(ee->evas, EFL_EVENT_ANIMATOR_TICK, 
_ecore_evas_animator, ee);
+   ee->animator_registered = EINA_FALSE;
 }
 
 static Eina_Bool
@@ -95,15 +90,14 @@ _ecore_evas_changes_get(Ecore_Evas *ee)
 }
 
 static Eina_Bool
-_ecore_evas_changes_check(void)
+_ecore_evas_idle_exiter(void *data EINA_UNUSED)
 {
Ecore_Evas *ee;
 
EINA_INLIST_FOREACH(ecore_evases, ee)
- {
-if (_ecore_evas_changes_get(ee)) return EINA_TRUE;
- }
-   return EINA_FALSE;
+ ee->animator_ran = EINA_FALSE;
+
+   return ECORE_CALLBACK_RENEW;
 }
 
 static Eina_Bool
@@ -119,34 +113,34 @@ _ecore_evas_idle_enter(void *data EINA_UNUSED)
 
if (!ecore_evases) return ECORE_CALLBACK_RENEW;
 
-   if (_ecore_evas_render_sync)
+   if (_ecore_evas_fps_debug)
  {
-if (!ecore_evas_first)
+t1 = ecore_time_get();
+ }
+   EINA_INLIST_FOREACH(ecore_evases, ee)
+ {
+if (_ecore_evas_render_sync)
   {
- if ((!ecore_evas_animator_ticked) &&
- (!ecore_main_loop_animator_ticked_get()))
+ if (!ee->first_frame)
{
-  if (_ecore_evas_changes_check())
+  if ((!ee->animator_ticked) &&
+  (!ee->animator_ran))
 {
-   if (!ecore_evas_animator)
+   if (_ecore_evas_changes_get(ee))
  {
-overtick = 1;
-ecore_evas_animator = 
ecore_animator_add(_ecore_evas_animator, NULL);
+if (!ee->animator_registered)
+  {
+ efl_event_callback_add(ee->evas, 
EFL_EVENT_ANIMATOR_TICK, _ecore_evas_animator, ee);
+ ee->animator_registered = EINA_TRUE;
+  }
  }
+   continue ;
 }
-  return ECORE_CALLBACK_RENEW;
+  ee->animator_ticked = EINA_FALSE;
}
- ecore_evas_animator_ticked = EINA_FALSE;
+ ee->first_frame = EINA_FALSE;
   }
-ecore_evas_first = EINA_FALSE;
- }
 
-   if (_ecore_evas_fps_debug)
- {
-t1 = ecore_time_get();
- }
-   EINA_INLIST_FOREACH(ecore_evases, ee)
- {
 #ifdef ECORE_EVAS_ASYNC_RENDER_DEBUG
 if ((ee->in_async_render) && (now - ee->async_render_start > 2.0))
   {
@@ -406,6 +400,8 @@ ecore_evas_init(void)
 
ecore_evas_idle_enterer =
  ecore_idle_enterer_add(_ecore_evas_idle_enter, NULL);
+   ecore_evas_idle_exiter =
+ ecore_idle_exiter_add(_ecore_evas_idle_exiter, NULL);
if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
if (getenv("ECORE_EVAS_RENDER_NOSYNC")) _ecore_evas_render_sync = 0;
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
@@ -452,12 +448,6 @@ ecore_evas_shutdown(void)
ecore_idle_enterer_del(ecore_evas_idle_enterer);
ecore_evas_idle_enterer = NULL;
 
-   if (_ecore_evas_render_sync)
- {
-if (ecore_evas_animator) ecore_animator_del(ecore_evas_animator);
-ecore_evas_animator = NULL;
- }
-
  

[EGIT] [core/efl] master 01/02: ecore_evas: always have a custom source set for animator if possible.

2016-11-10 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 16723837e98fea11ea2e7a8f2c677802a933764d
Author: Cedric BAIL 
Date:   Thu Nov 10 15:52:38 2016 -0800

ecore_evas: always have a custom source set for animator if possible.
---
 src/lib/ecore_evas/ecore_evas.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 56bf222..1874d39 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -2600,6 +2600,7 @@ _ecore_evas_register(Ecore_Evas *ee)
_ecore_evas_register_animators(ee);
 
if (_ecore_evas_render_sync) ecore_evas_first = EINA_TRUE;
+   if (!_general_tick) _ecore_evas_tick_source_find();
 }
 
 EAPI void

-- 




Re: [E-devel] eina freeq?

2016-11-10 Thread The Rasterman
On Thu, 10 Nov 2016 15:14:11 + Mike Blumenkrantz
 said:

> I see that this has been pushed and is already being used despite some
> objections being raised? I guess I probably missed IRC discussions.

did you read the responses to the objections? in fact just one objection. it
was "dont like" and under valgrind frees are now asynchronous - read the code.
it was misunderstanding that this is a replacement of valgrind where it is not.
it's a stability measure for average users when valgrind is not in use by
delaying pointer re-use. it also can defer any work involved in freeing to
'when idle'. and if under valgrind the frees are done synchronously without
being queued so it catches everything as it does right now leaving it to
valgrind. so the issue was addressed if you read the code.

> The reasoning for needing this sounds like we should probably just use
> jemalloc (
> https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919/
> ), which does more, has more people actively devoted to improving/developing
> it, and has been widely tested and benchmarked so we know it will
> definitely have the effect that we want while also reducing our
> maintenance+development overhead.

which actually is entirely orthogonal. and i've proposed a more extensive way
of having an allocator with multiple allocation domains - it could be jemalloc
WITH modifications. did you read the mail?

Subject: [E-devel] memory allocation perf

but freeq works WITHOUT pulling in jemalloc. it enforces a purgatory for
pointers put in the freeq irrespective of malloc implementation. it's simple
and easy to work with. it actually does hat people THOUGHT eina_trash should do
but doesn't. freeq enables us to debug core dumps when people dont use valgrind
- which they don't. valgrind does not even work on openbsd, so proposing it as
a solution to help debug there is pointless. and people doing Qa dont use
valgrind. they dont even know how to AND it makes things so slow that they
never would even if it was just a checkbox. yes there is MALLOC_PERTURB_ but it
as no upper limit (free 1mb of data and 1mb is filled with pattern data), so it
has a pretty hefty impact. it's also glibc only.

malloc replacement is a far deeper topic. JUST blindly using jemalloc can't be
done as it'd replace all *alloc/free funcs, so the method to do that is an
LD_PRELOAD. to use it without a preload means wrapping it in some calls and
then replacing one thing at a time with this "eina_alloc" api (memory blob by
blob). i do not want to do that with JUST a plain void * replacement. it's not
as much of a win as it could be. if we have to go replace things pointer by
pointer, let's do better. with a custom alloc impl we can:

1. have allocation domains that separate memory out like:

domain1 = eina_alloc_domain_new();
ptr = eina_alloc(domain1, size);
eina_alloc_free(domain1, ptr);

whereas having a NULL domain be like malloc/free as an implicit global:

ptr = eina_alloc(NULL, size);

this allows the back-end to be a single pool or BETTER multiple
address-separated pools meaning we can ensure the pointers for one kind of data
don't rub shoulders with another which means use-after-free within code segment
A is LESS likely to corrupt data from code segment B if the memory they use
come from different domains.

2. do small pointers. 32bit ptrs on 64bit machines halving our memory footprint
for pointers (and we use a LOT of pointers). this may actually even sped things
up as we pollute our caches less. a single 32bit domain for almost all of efl's
allocations "should be enough for everything" as if we 16 byte align we
actually have access to up to 64gb of allocated memory, and 32gb if we 8 byte
align which would be necessary anyway (probably a good call given simd
implementations can do 128bit types these days, and maybe 32byte align on
systems with 256 bit type support). i am not proposing we use 32bit ptrs for
allocating audio data or video or images - the large blobs. just "data
structures". we can then ALSO do 16bit pointers too (each domain could allocate
up to 1m of data with 16byte alignment, 512k with 8). so if we use domains
carefully we can drop pointer sizes down even more for certain special cases
(assuming the whole workload of memory use for that domain would always remain
small enough to fit inside the domain max pool of eg 512k or 1m). yes. now
access to these small ptrs requires resolving them like:

   realptr = domain->base + (ptr << 4);

likely a macro or static inline would do this. yes. it requires KNOWING the
domain the ptr comes from. we COULD have the NULL domain be a special "global
domain" like malloc/free do and so domain is a known global var
(eina_alloc_domain, eina_alloc_domain_32, eina_alloc_domain_16 - with plain
domain and 32 domain maybe being #defined to be the same thing on a 32bit
machine).

either way this requires more than just 

Re: [E-devel] [EGIT] [core/efl] master 08/09: Evas: Add support for multiple focused objects.

2016-11-10 Thread Guilherme Íscaro
By the way. I'm really sorry for this one :/

On Thu, Nov 10, 2016 at 4:15 PM, Guilherme Íscaro 
wrote:

> Hey guys, after some investigation I concluded that the problem was way
> below in the stack (At Ecore_Evas to be more exactly). I created a patch to
> fix this problem.
> https://phab.enlightenment.org/D4390
>
> On Thu, Nov 10, 2016 at 1:13 AM, Jean-Philippe André 
> wrote:
>
>> Hey,
>>
>> This patch broke keyboard input in efl weston clients. (just running
>> elm_test here in weston)
>>
>>
>> On 9 November 2016 at 05:08, Guilherme Iscaro 
>> wrote:
>>
>> > bdilly pushed a commit to branch master.
>> >
>> > http://git.enlightenment.org/core/efl.git/commit/?id=
>> > 0e53b9a8ac92041de40244a597087d77611b92f2
>> >
>> > commit 0e53b9a8ac92041de40244a597087d77611b92f2
>> > Author: Guilherme Iscaro 
>> > Date:   Wed Oct 19 11:02:18 2016 -0200
>> >
>> > Evas: Add support for multiple focused objects.
>> >
>> > Using the multi-seat support, Evas is able to handle multiple
>> focused
>> > objects.
>> > This implementation allows one focused object per seat.
>> > This patch introduces new APIs and events to handle this new
>> scenario,
>> > while keeping compatible with the old focus APIs.
>> > ---
>> >  src/lib/evas/canvas/efl_canvas_object.eo |  53 +++
>> >  src/lib/evas/canvas/evas_canvas.eo   |  25 +++-
>> >  src/lib/evas/canvas/evas_events.c|  67 ++---
>> >  src/lib/evas/canvas/evas_focus.c | 246
>> > +++
>> >  src/lib/evas/canvas/evas_main.c  |   3 +
>> >  src/lib/evas/canvas/evas_object_main.c   |  21 ++-
>> >  src/lib/evas/include/evas_private.h  |   5 +-
>> >  7 files changed, 366 insertions(+), 54 deletions(-)
>> >
>> > diff --git a/src/lib/evas/canvas/efl_canvas_object.eo
>> > b/src/lib/evas/canvas/efl_canvas_object.eo
>> > index 84c7f8d..6912111 100644
>> > --- a/src/lib/evas/canvas/efl_canvas_object.eo
>> > +++ b/src/lib/evas/canvas/efl_canvas_object.eo
>> > @@ -209,6 +209,8 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx,
>> > Efl.Gfx.Stack, Efl.Animator,
>> > is $true, $obj will be set as the currently focused object
>> > and it will receive all keyboard events that are not
>> > exclusive key grabs on other objects.
>> > +   See also @.seat_focus_check,
>> > +   @.seat_focus_add, @.seat_focus_del.
>> >   ]]
>> >   set {
>> >  legacy: evas_object_focus_set;
>> > @@ -220,6 +222,55 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx,
>> > Efl.Gfx.Stack, Efl.Animator,
>> >  focus: bool; [[$true when set as focused or $false
>> > otherwise.]]
>> >   }
>> >}
>> > +  @property seat_focus {
>> > + [[
>> > +Check if this object is focused.
>> > +@since 1.19
>> > + ]]
>> > + get {
>> > + }
>> > + values {
>> > +focus: bool; [[$true if focused by at least one seat or
>> > $false otherwise.]]
>> > + }
>> > +  }
>> > +  seat_focus_check {
>> > + [[ Check if this object is focused by a given seat @since
>> 1.19 ]]
>> > + params {
>> > +@in seat: Efl.Input.Device; [[The seat to check if the
>> object
>> > is focused. Use $null for the default seat.]]
>> > + }
>> > + return: bool; [[$true if focused or $false otherwise.]]
>> > +  }
>> > +  seat_focus_add {
>> > + [[ Add a seat to the focus list.
>> > +
>> > +   Evas supports that an Efl.Canvas.Object may be focused by
>> > multiple seats
>> > +   at the same time. This function adds a new seat to the focus
>> > list, in other words,
>> > +   after the seat is added to the list this object will now be
>> > also focused by this new seat.
>> > +
>> > +   This function generates an \@ref
>> EFL_CANVAS_OBJECT_EVENT_FOCUS_DEVICE_IN
>> > event.
>> > +
>> > +   \@note The old focus APIs ( \@ref evas_object_focus_get,
>> \@ref
>> > evas_object_focus_set,
>> > +   @.key_grab) will still work, however they will only act on
>> the
>> > default seat.
>> > +
>> > +   @since 1.19
>> > + ]]
>> > + params {
>> > +@in seat: Efl.Input.Device; [[The seat that should be added
>> > to the focus list. Use $null for the default seat.]]
>> > + }
>> > + return: bool; [[$true if the focus has been set or $false
>> > otherwise.]]
>> > +  }
>> > +  seat_focus_del {
>> > + [[ Remove a seat from the focus list.
>> > +
>> > +Removing an seat from the focus list is an unfocus
>> operation,
>> > thus it will generate an
>> > +\@ref EFL_CANVAS_OBJECT_EVENT_FOCUS_DEVICE_OUT event.
>> > +@since 1.19
>> > + ]]
>> > + params {
>> > +@in seat: Efl.Input.Device; [[The seat that should be
>> 

Re: [E-devel] [EGIT] [core/efl] master 08/09: Evas: Add support for multiple focused objects.

2016-11-10 Thread Guilherme Íscaro
Hey guys, after some investigation I concluded that the problem was way
below in the stack (At Ecore_Evas to be more exactly). I created a patch to
fix this problem.
https://phab.enlightenment.org/D4390

On Thu, Nov 10, 2016 at 1:13 AM, Jean-Philippe André 
wrote:

> Hey,
>
> This patch broke keyboard input in efl weston clients. (just running
> elm_test here in weston)
>
>
> On 9 November 2016 at 05:08, Guilherme Iscaro 
> wrote:
>
> > bdilly pushed a commit to branch master.
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=
> > 0e53b9a8ac92041de40244a597087d77611b92f2
> >
> > commit 0e53b9a8ac92041de40244a597087d77611b92f2
> > Author: Guilherme Iscaro 
> > Date:   Wed Oct 19 11:02:18 2016 -0200
> >
> > Evas: Add support for multiple focused objects.
> >
> > Using the multi-seat support, Evas is able to handle multiple focused
> > objects.
> > This implementation allows one focused object per seat.
> > This patch introduces new APIs and events to handle this new
> scenario,
> > while keeping compatible with the old focus APIs.
> > ---
> >  src/lib/evas/canvas/efl_canvas_object.eo |  53 +++
> >  src/lib/evas/canvas/evas_canvas.eo   |  25 +++-
> >  src/lib/evas/canvas/evas_events.c|  67 ++---
> >  src/lib/evas/canvas/evas_focus.c | 246
> > +++
> >  src/lib/evas/canvas/evas_main.c  |   3 +
> >  src/lib/evas/canvas/evas_object_main.c   |  21 ++-
> >  src/lib/evas/include/evas_private.h  |   5 +-
> >  7 files changed, 366 insertions(+), 54 deletions(-)
> >
> > diff --git a/src/lib/evas/canvas/efl_canvas_object.eo
> > b/src/lib/evas/canvas/efl_canvas_object.eo
> > index 84c7f8d..6912111 100644
> > --- a/src/lib/evas/canvas/efl_canvas_object.eo
> > +++ b/src/lib/evas/canvas/efl_canvas_object.eo
> > @@ -209,6 +209,8 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx,
> > Efl.Gfx.Stack, Efl.Animator,
> > is $true, $obj will be set as the currently focused object
> > and it will receive all keyboard events that are not
> > exclusive key grabs on other objects.
> > +   See also @.seat_focus_check,
> > +   @.seat_focus_add, @.seat_focus_del.
> >   ]]
> >   set {
> >  legacy: evas_object_focus_set;
> > @@ -220,6 +222,55 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx,
> > Efl.Gfx.Stack, Efl.Animator,
> >  focus: bool; [[$true when set as focused or $false
> > otherwise.]]
> >   }
> >}
> > +  @property seat_focus {
> > + [[
> > +Check if this object is focused.
> > +@since 1.19
> > + ]]
> > + get {
> > + }
> > + values {
> > +focus: bool; [[$true if focused by at least one seat or
> > $false otherwise.]]
> > + }
> > +  }
> > +  seat_focus_check {
> > + [[ Check if this object is focused by a given seat @since 1.19
> ]]
> > + params {
> > +@in seat: Efl.Input.Device; [[The seat to check if the
> object
> > is focused. Use $null for the default seat.]]
> > + }
> > + return: bool; [[$true if focused or $false otherwise.]]
> > +  }
> > +  seat_focus_add {
> > + [[ Add a seat to the focus list.
> > +
> > +   Evas supports that an Efl.Canvas.Object may be focused by
> > multiple seats
> > +   at the same time. This function adds a new seat to the focus
> > list, in other words,
> > +   after the seat is added to the list this object will now be
> > also focused by this new seat.
> > +
> > +   This function generates an \@ref
> EFL_CANVAS_OBJECT_EVENT_FOCUS_DEVICE_IN
> > event.
> > +
> > +   \@note The old focus APIs ( \@ref evas_object_focus_get,
> \@ref
> > evas_object_focus_set,
> > +   @.key_grab) will still work, however they will only act on
> the
> > default seat.
> > +
> > +   @since 1.19
> > + ]]
> > + params {
> > +@in seat: Efl.Input.Device; [[The seat that should be added
> > to the focus list. Use $null for the default seat.]]
> > + }
> > + return: bool; [[$true if the focus has been set or $false
> > otherwise.]]
> > +  }
> > +  seat_focus_del {
> > + [[ Remove a seat from the focus list.
> > +
> > +Removing an seat from the focus list is an unfocus
> operation,
> > thus it will generate an
> > +\@ref EFL_CANVAS_OBJECT_EVENT_FOCUS_DEVICE_OUT event.
> > +@since 1.19
> > + ]]
> > + params {
> > +@in seat: Efl.Input.Device; [[The seat that should be
> removed
> > from the focus list. Use $null for the default seat.]]
> > + }
> > + return: bool; [[$true if the seat was removed from the focus
> > list or $false otherwise.]]
> > +  }
> >@property is_frame_object {
> >   set {
> >   

[EGIT] [core/efl] master 01/01: eolian-cxx: Remove EOLIAN_TYPE_POINTER enumeration

2016-11-10 Thread Felipe Magno de Almeida
felipealmeida pushed a commit to branch master.

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

commit 45e1ccf312225efad21a616602aedb3f9f0188bf
Author: Felipe Magno de Almeida 
Date:   Thu Nov 10 15:19:50 2016 -0200

eolian-cxx: Remove EOLIAN_TYPE_POINTER enumeration
---
 src/lib/eolian_cxx/grammar/klass_def.hpp |  6 +-
 src/tests/eolian_cxx/complex.c   | 20 
 src/tests/eolian_cxx/complex.eo  | 22 +-
 src/tests/eolian_cxx/generic.eo  |  2 +-
 4 files changed, 3 insertions(+), 47 deletions(-)

diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp 
b/src/lib/eolian_cxx/grammar/klass_def.hpp
index b2125e4..ee03b65 100644
--- a/src/lib/eolian_cxx/grammar/klass_def.hpp
+++ b/src/lib/eolian_cxx/grammar/klass_def.hpp
@@ -262,10 +262,6 @@ inline void type_def::set(Eolian_Type const* eolian_type)
  original_type = {regular_type_def{ 
::eolian_type_name_get(eolian_type), {qualifiers(eolian_type), {}}, 
namespaces}};
}
break;
- case EOLIAN_TYPE_POINTER:
-   {
-  throw std::runtime_error("");
-   }
  case EOLIAN_TYPE_CLASS:
{
   Eolian_Class const* klass = eolian_type_class_get(eolian_type);
@@ -286,7 +282,7 @@ inline void type_def::set(Eolian_Type const* eolian_type)
}
break;
  default:
-   std::abort();
+   throw std::runtime_error("Type not supported");
break;
  }
 }
diff --git a/src/tests/eolian_cxx/complex.c b/src/tests/eolian_cxx/complex.c
index dc43734..76db444 100644
--- a/src/tests/eolian_cxx/complex.c
+++ b/src/tests/eolian_cxx/complex.c
@@ -22,21 +22,6 @@ _complex_inclasscont(Eo *obj EINA_UNUSED, Complex_Data *pd 
EINA_UNUSED, Eina_Lis
 }
 
 EOLIAN static void
-_complex_inptrptrcont(Eo *obj EINA_UNUSED, Complex_Data *pd EINA_UNUSED, 
Eina_List *l EINA_UNUSED)
-{
-}
-
-EOLIAN static void
-_complex_inptrcontown(Eo *obj EINA_UNUSED, Complex_Data *pd EINA_UNUSED, 
Eina_List *l EINA_UNUSED)
-{
-}
-
-EOLIAN static void
-_complex_inptrptrcontown(Eo *obj EINA_UNUSED, Complex_Data *pd EINA_UNUSED, 
Eina_List *l EINA_UNUSED)
-{
-}
-
-EOLIAN static void
 _complex_incontcont(Eo *obj EINA_UNUSED, Complex_Data *pd EINA_UNUSED, 
Eina_List *l EINA_UNUSED)
 {
 }
@@ -112,11 +97,6 @@ _complex_inaccessorown(Eo *obj EINA_UNUSED, Complex_Data 
*pd EINA_UNUSED, Eina_A
 }
 
 EOLIAN static void
-_complex_outptrcont(Eo *obj EINA_UNUSED, Complex_Data *pd EINA_UNUSED, 
Eina_List **l EINA_UNUSED)
-{
-}
-
-EOLIAN static void
 _complex_outclasscont(Eo *obj EINA_UNUSED, Complex_Data *pd EINA_UNUSED, 
Eina_List **l EINA_UNUSED)
 {
 }
diff --git a/src/tests/eolian_cxx/complex.eo b/src/tests/eolian_cxx/complex.eo
index 8fe7f1c..b9fa6ac 100644
--- a/src/tests/eolian_cxx/complex.eo
+++ b/src/tests/eolian_cxx/complex.eo
@@ -5,7 +5,7 @@ class Complex (Efl.Object)
   // container test
   inptrcont {
  params {
-   l: list;
+   l: list;
  }
   }
   inclasscont {
@@ -13,21 +13,6 @@ class Complex (Efl.Object)
l: list;
  }
   }
-  inptrptrcont {
- params {
-   l: list;
- }
-  }
-  inptrcontown {
- params {
-   l: own(list);
- }
-  }
-  inptrptrcontown {
- params {
-   l: own(list);
- }
-  }
   incontcont {
  params {
l: list;
@@ -104,11 +89,6 @@ class Complex (Efl.Object)
  }
   }
   // out
-  outptrcont {
- params {
-   @out l: list;
- }
-  }
   outclasscont {
  params {
@out l: list;
diff --git a/src/tests/eolian_cxx/generic.eo b/src/tests/eolian_cxx/generic.eo
index 50561f0..92bd3e8 100644
--- a/src/tests/eolian_cxx/generic.eo
+++ b/src/tests/eolian_cxx/generic.eo
@@ -2,7 +2,7 @@
 struct Generic.Event
 {
   field1: int;
-  field2: list;
+  field2: list;
 }
 
 class Generic (Efl.Object)

-- 




[EGIT] [core/efl] master 01/01: theme: unclip bryce scroller along opposing orientation axis

2016-11-10 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit a94351a789ae7c11efb72c1b9f35cd7fae4d7fa2
Author: Mike Blumenkrantz 
Date:   Thu Nov 10 11:52:18 2016 -0500

theme: unclip bryce scroller along opposing orientation axis
---
 data/elementary/themes/edc/bryce.edc | 13 -
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/data/elementary/themes/edc/bryce.edc 
b/data/elementary/themes/edc/bryce.edc
index ed87a19..8ec2c27 100644
--- a/data/elementary/themes/edc/bryce.edc
+++ b/data/elementary/themes/edc/bryce.edc
@@ -344,7 +344,18 @@ group { name: "e/bryce/default/plain"; nomouse;
 
 group { "elm/scroller/base/bryce";
parts {
-  rect { "clip"; }
+  rect { "clip";
+ desc {
+rel1.offset: 0 -9;
+rel2.offset: -1 9;
+link.base: "e,state,orient,horizontal" "e";
+ }
+ desc { "vert";
+rel1.offset: -9 0;
+rel2.offset: 9 -1;
+link.base: "estateorientvertical" "e";
+ }
+  }
   swallow { "elm.swallow.content" clip: "clip"; }
}
 }

-- 




[EGIT] [core/enlightenment] master 01/01: only unset cur_mouse_action on client menu delete for the right action

2016-11-10 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit f7f0cc5b3e4046f6bab5c5db1ba27603ad8b478d
Author: Mike Blumenkrantz 
Date:   Thu Nov 10 11:55:10 2016 -0500

only unset cur_mouse_action on client menu delete for the right action

ref 50198ecdde7a9bc477537df6a8fafa60be2cfb51

this still needs improving
---
 src/bin/e_int_client_menu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_int_client_menu.c b/src/bin/e_int_client_menu.c
index d50ffe0..62b3f82 100644
--- a/src/bin/e_int_client_menu.c
+++ b/src/bin/e_int_client_menu.c
@@ -269,7 +269,8 @@ e_int_client_menu_del(E_Client *ec)
if (!ec->border_menu) return;
e_menu_post_deactivate_callback_set(ec->border_menu, NULL, NULL);
E_FREE_FUNC(ec->border_menu, e_object_del);
-   ec->cur_mouse_action = NULL;
+   if (ec->cur_mouse_action && eina_streq(ec->cur_mouse_action->name, 
"window_menu"))
+ E_FREE_FUNC(ec->cur_mouse_action, e_object_unref);
 }
 
 static void

-- 




[EGIT] [core/enlightenment] master 01/01: send orientation signal to bryce scroller theme

2016-11-10 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 7d29dbf4ec5adb2652b942464f892b4c6f6a19da
Author: Mike Blumenkrantz 
Date:   Thu Nov 10 11:52:04 2016 -0500

send orientation signal to bryce scroller theme
---
 src/bin/e_bryce.c | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_bryce.c b/src/bin/e_bryce.c
index d7e71e1..47afa71 100644
--- a/src/bin/e_bryce.c
+++ b/src/bin/e_bryce.c
@@ -864,9 +864,15 @@ _bryce_orient(Bryce *b)
elm_object_content_set(b->scroller, b->site);
e_gadget_site_owner_setup(b->site, b->anchor, _bryce_style);
if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- elm_layout_signal_emit(b->layout, "e,state,orient,horizontal", "e");
+ {
+elm_layout_signal_emit(b->layout, "e,state,orient,horizontal", "e");
+elm_layout_signal_emit(b->scroller, "e,state,orient,horizontal", "e");
+ }
else
- elm_layout_signal_emit(b->layout, "e,state,orient,vertical", "e");
+ {
+elm_layout_signal_emit(b->layout, "e,state,orient,vertical", "e");
+elm_layout_signal_emit(b->scroller, "e,state,orient,vertical", "e");
+ }
evas_object_event_callback_add(b->site, EVAS_CALLBACK_CHANGED_SIZE_HINTS, 
_bryce_site_hints, b);
evas_object_smart_callback_add(b->site, "gadget_site_anchor", 
_bryce_site_anchor, b);
evas_object_smart_callback_add(b->site, "gadget_site_style_menu", 
_bryce_style_menu, b);

-- 




[EGIT] [core/efl] master 01/01: Edje containers: split logic

2016-11-10 Thread Daniel Hirt
herdsman pushed a commit to branch master.

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

commit 03856913c2ec7133e39d7144129f539c5fa346c3
Author: Daniel Hirt 
Date:   Thu Nov 3 17:45:42 2016 +0200

Edje containers: split logic

This splits the current Efl.Part implementation for the edje container
objects. These are now split to a edje_part.c, edje_part_helper.h and
separate sources for swallow, box and table.

It's going to make things a bit easier for porting the rest of the
logic.
---
 src/Makefile_Edje.am   |   6 +-
 src/lib/edje/edje_part.c   |  16 +
 src/lib/edje/edje_part_box.c   | 203 +
 src/lib/edje/edje_part_helper.h| 135 +
 src/lib/edje/edje_part_swallow.c   |  33 +++
 .../edje/{edje_containers.c => edje_part_table.c}  | 324 +
 6 files changed, 394 insertions(+), 323 deletions(-)

diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am
index 907c927..f6921bc 100644
--- a/src/Makefile_Edje.am
+++ b/src/Makefile_Edje.am
@@ -92,8 +92,10 @@ lib/edje/edje_textblock_styles.c \
 lib/edje/edje_util.c \
 lib/edje/edje_var.c \
 lib/edje/edje_signal.c \
-lib/edje/edje_containers.c
-
+lib/edje/edje_part.c \
+lib/edje/edje_part_swallow.c \
+lib/edje/edje_part_table.c \
+lib/edje/edje_part_box.c
 
 lib_edje_libedje_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl 
$(EDJE_COMMON_CPPFLAGS)
 lib_edje_libedje_la_LIBADD = @EDJE_LIBS@ @EDJE_LUA_LIBS@
diff --git a/src/lib/edje/edje_part.c b/src/lib/edje/edje_part.c
new file mode 100644
index 000..12da019
--- /dev/null
+++ b/src/lib/edje/edje_part.c
@@ -0,0 +1,16 @@
+#include "edje_private.h"
+#include "edje_part_helper.h"
+
+PROXY_INIT(box)
+PROXY_INIT(table)
+PROXY_INIT(swallow)
+
+void
+_edje_internal_proxy_shutdown(void)
+{
+   _box_shutdown();
+   _table_shutdown();
+   _swallow_shutdown();
+}
+
+#include "efl_canvas_layout_internal.eo.c"
diff --git a/src/lib/edje/edje_part_box.c b/src/lib/edje/edje_part_box.c
new file mode 100644
index 000..c05a1a7
--- /dev/null
+++ b/src/lib/edje/edje_part_box.c
@@ -0,0 +1,203 @@
+#include "edje_private.h"
+#include "edje_part_helper.h"
+
+#define EFL_CANVAS_LAYOUT_INTERNAL_BOX_PROTECTED
+#include "efl_canvas_layout_internal_box.eo.h"
+#define MY_CLASS EFL_CANVAS_LAYOUT_INTERNAL_BOX_CLASS
+
+#include "../evas/canvas/evas_box.eo.h"
+
+PROXY_IMPLEMENTATION(box, BOX, Edje_Box_Data)
+#undef PROXY_IMPLEMENTATION
+
+typedef struct _Part_Item_Iterator Part_Item_Iterator;
+
+/* Legacy features */
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_pack_clear(Eo *obj, Edje_Box_Data *pd)
+{
+   RETURN_VAL(_edje_part_box_remove_all(pd->ed, pd->part, EINA_TRUE));
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_unpack_all(Eo *obj, Edje_Box_Data *pd)
+{
+   RETURN_VAL(_edje_part_box_remove_all(pd->ed, pd->part, EINA_FALSE));
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_unpack(Eo *obj, Edje_Box_Data *pd, 
Efl_Gfx *subobj)
+{
+   Evas_Object *removed;
+   removed = _edje_part_box_remove(pd->ed, pd->part, subobj);
+   RETURN_VAL((removed == subobj));
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_pack(Eo *obj, Edje_Box_Data *pd, 
Efl_Gfx *subobj)
+{
+   RETURN_VAL(_edje_part_box_append(pd->ed, pd->part, subobj));
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_linear_pack_begin(Eo *obj, 
Edje_Box_Data *pd, Efl_Gfx *subobj)
+{
+   RETURN_VAL(_edje_part_box_prepend(pd->ed, pd->part, subobj));
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_linear_pack_end(Eo *obj, 
Edje_Box_Data *pd, Efl_Gfx *subobj)
+{
+   RETURN_VAL(_edje_part_box_append(pd->ed, pd->part, subobj));
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_linear_pack_before(Eo *obj, 
Edje_Box_Data *pd, Efl_Gfx *subobj, const Efl_Gfx *existing)
+{
+   RETURN_VAL(_edje_part_box_insert_before(pd->ed, pd->part, subobj, 
existing));
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_linear_pack_after(Eo *obj, 
Edje_Box_Data *pd, Efl_Gfx *subobj, const Efl_Gfx *existing)
+{
+   RETURN_VAL(_edje_part_box_insert_after(pd->ed, pd->part, subobj, existing));
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_layout_internal_box_efl_pack_linear_pack_at(Eo *obj, Edje_Box_Data 
*pd, Efl_Gfx *subobj, int index)
+{
+   int cnt = PROXY_CALL(efl_content_count(obj));
+   if ((index < 0) && ((-index) <= (cnt + 1)))
+ index = cnt + index + 1;
+   if ((index >= 0) && (index < cnt))
+ RETURN_VAL(_edje_part_box_insert_at(pd->ed, pd->part, subobj, index));
+   else
+ RETURN_VAL(_edje_part_box_append(pd->ed, pd->part, subobj));
+}
+
+EOLIAN static Efl_Gfx *
+_efl_canvas_layout_internal_box_efl_pack_linear_pack_unpack_at(Eo *obj, 
Edje_Box_Data *pd, int index)
+{
+   if 

[EGIT] [core/efl] master 01/01: theme: remove clips from bryce themes

2016-11-10 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit ada0c1bba59eca7f8fd6ce2398f407cb84bb7c7c
Author: Mike Blumenkrantz 
Date:   Thu Nov 10 11:21:30 2016 -0500

theme: remove clips from bryce themes

this is automatically clipped by the scroller
---
 data/elementary/themes/edc/bryce.edc | 20 
 1 file changed, 20 deletions(-)

diff --git a/data/elementary/themes/edc/bryce.edc 
b/data/elementary/themes/edc/bryce.edc
index 3f59540..ed87a19 100644
--- a/data/elementary/themes/edc/bryce.edc
+++ b/data/elementary/themes/edc/bryce.edc
@@ -252,18 +252,6 @@ group { name: "e/bryce/default/inset"; nomouse;
 color: 0 0 0 0;
  }
   }
-  part { name: "clip"; type: RECT;
- description { state: "default" 0.0;
-rel1.offset: 3 1;
-rel2.offset: -4 -2;
-color: 255 255 255 255;
- }
- description { state: "vert" 0.0;
-rel1.offset: 1 3;
-rel2.offset: -2 -4;
-color: 255 255 255 255;
- }
-  }
   spacer { "sizer";
  description { state: "default" 0.0;
 rel1.offset: 4 1;
@@ -275,7 +263,6 @@ group { name: "e/bryce/default/inset"; nomouse;
  }
   }
   part { name: "e.swallow.content"; type: SWALLOW; mouse;
- clip_to: "clip";
  desc {
 rel.to: "sizer";
 link.base: "e,state,visible" "e";
@@ -314,7 +301,6 @@ group { name: "e/bryce/default/inset"; nomouse;
 action: STATE_SET _STATE 0.0; \
 target: "sizer"; \
 target: "inset"; \
-target: "clip"; \
  }
   ORIENT_SATE("horizontal", "default")
   ORIENT_SATE("vertical", "vert")
@@ -334,11 +320,6 @@ group { name: "e/bryce/default/plain"; nomouse;
 color: 0 0 0 0;
  }
   }
-  part { name: "clip"; type: RECT;
- description { state: "default" 0.0;
-color: 255 255 255 255;
- }
-  }
   spacer { "sizer";
  desc {
 rel1.offset: 1 1;
@@ -346,7 +327,6 @@ group { name: "e/bryce/default/plain"; nomouse;
  }
   }
   part { name: "e.swallow.content"; type: SWALLOW; mouse;
- clip_to: "clip";
  desc {
 rel.to: "sizer";
 link.base: "e,state,visible" "e";

-- 




[EGIT] [core/enlightenment] master 01/01: unset cur_mouse_action upon deleting client menu

2016-11-10 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 50198ecdde7a9bc477537df6a8fafa60be2cfb51
Author: Mike Blumenkrantz 
Date:   Thu Nov 10 11:14:36 2016 -0500

unset cur_mouse_action upon deleting client menu

fix T4522
---
 src/bin/e_int_client_menu.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/e_int_client_menu.c b/src/bin/e_int_client_menu.c
index 512f512..d50ffe0 100644
--- a/src/bin/e_int_client_menu.c
+++ b/src/bin/e_int_client_menu.c
@@ -269,6 +269,7 @@ e_int_client_menu_del(E_Client *ec)
if (!ec->border_menu) return;
e_menu_post_deactivate_callback_set(ec->border_menu, NULL, NULL);
E_FREE_FUNC(ec->border_menu, e_object_del);
+   ec->cur_mouse_action = NULL;
 }
 
 static void

-- 




[EGIT] [tools/eflete] master 01/01: Main window: add windows type icon for windows.

2016-11-10 Thread Mykyta Biliavskyi
rimmed pushed a commit to branch master.

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

commit 8f8c90ce44b0aa390968c336c1ba9c8cb0d65117
Author: Mykyta Biliavskyi 
Date:   Thu Nov 10 17:32:59 2016 +0200

Main window: add windows type icon for windows.
---
 data/Makefile.am |   2 +-
 data/images/eflete.ico   | Bin 0 -> 3778 bytes
 src/bin/ui/main_window.c |   4 
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/data/Makefile.am b/data/Makefile.am
index 78f1370..923ccf2 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -42,7 +42,7 @@ aimagesdir = $(datadir)/eflete/images
 if WANT_TIZEN
 aimages_DATA = \
${srcdir}/images/*.png \
-   ${srcdir}/themes/tizen/images/General/cd_icon.png \
+   ${srcdir}/images/eflete.ico \
${srcdir}/images/toolbar_icons/*.png
 else
 aimages_DATA = \
diff --git a/data/images/eflete.ico b/data/images/eflete.ico
new file mode 100644
index 000..e7ba2c5
Binary files /dev/null and b/data/images/eflete.ico differ
diff --git a/src/bin/ui/main_window.c b/src/bin/ui/main_window.c
index 5e42e67..3829392 100644
--- a/src/bin/ui/main_window.c
+++ b/src/bin/ui/main_window.c
@@ -104,7 +104,11 @@ ui_main_window_add(void)
assert(ap.win != NULL);
 
icon = evas_object_image_add(evas_object_evas_get(ap.win));
+#ifdef _WIN32
+   icon_path = eina_stringshare_printf("%seflete.ico", ap.path.image_path);
+#else
icon_path = eina_stringshare_printf("%seflete.svg", ap.path.image_path);
+#endif
evas_object_image_file_set(icon, icon_path, NULL);
eina_stringshare_del(icon_path);
elm_win_icon_object_set(ap.win, icon);

-- 




[EGIT] [core/efl] master 01/01: eolian: remove parsing of pointers and the corresponding APIs

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 8002b3b24e6e238c1453dfe4dc863fa6cf14593b
Author: Daniel Kolesa 
Date:   Thu Nov 10 16:20:19 2016 +0100

eolian: remove parsing of pointers and the corresponding APIs

Everything should be done via the new ptr() system now.
---
 src/bindings/luajit/eolian.lua   | 10 --
 src/lib/eolian/Eolian.h  |  1 -
 src/lib/eolian/database_expr_api.c   |  9 -
 src/lib/eolian/database_validate.c   |  1 -
 src/lib/eolian/eo_parser.c   | 30 --
 src/scripts/elua/apps/docgen/doctree.lua |  8 
 src/tests/eolian/data/class_simple.eo|  2 +-
 src/tests/eolian/data/complex_type.eo|  4 ++--
 src/tests/eolian/data/consts.eo  |  2 +-
 src/tests/eolian/data/decl.eo|  2 +-
 src/tests/eolian/data/enum.eo|  2 +-
 src/tests/eolian/data/extern.eo  |  2 +-
 src/tests/eolian/data/free_func.eo   |  6 +++---
 src/tests/eolian/data/null.eo|  8 
 src/tests/eolian/data/object_impl.eo |  2 +-
 src/tests/eolian/data/override.eo|  2 +-
 src/tests/eolian/data/struct.eo  |  4 ++--
 src/tests/eolian/data/typedef.eo |  4 ++--
 src/tests/eolian/data/var.eo |  2 +-
 src/tests/eolian/eolian_parsing.c|  7 +++
 20 files changed, 32 insertions(+), 76 deletions(-)

diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index ad9508c..8511152 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -74,7 +74,6 @@ ffi.cdef [[
 EOLIAN_TYPE_VOID,
 EOLIAN_TYPE_REGULAR,
 EOLIAN_TYPE_COMPLEX,
-EOLIAN_TYPE_POINTER,
 EOLIAN_TYPE_CLASS,
 EOLIAN_TYPE_STATIC_ARRAY,
 EOLIAN_TYPE_TERMINATED_ARRAY,
@@ -456,11 +455,10 @@ M.type_type = {
 VOID = 1,
 REGULAR  = 2,
 COMPLEX  = 3,
-POINTER  = 4,
-CLASS= 5,
-STATIC_ARRAY = 6,
-TERMINATED_ARRAY = 7,
-UNDEFINED= 8
+CLASS= 4,
+STATIC_ARRAY = 5,
+TERMINATED_ARRAY = 6,
+UNDEFINED= 7
 }
 
 M.typedecl_type = {
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 90f64d8..ef17102 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -218,7 +218,6 @@ typedef enum
EOLIAN_TYPE_VOID,
EOLIAN_TYPE_REGULAR,
EOLIAN_TYPE_COMPLEX,
-   EOLIAN_TYPE_POINTER,
EOLIAN_TYPE_CLASS,
EOLIAN_TYPE_STATIC_ARRAY,
EOLIAN_TYPE_TERMINATED_ARRAY,
diff --git a/src/lib/eolian/database_expr_api.c 
b/src/lib/eolian/database_expr_api.c
index 28056b6..db38c04 100644
--- a/src/lib/eolian/database_expr_api.c
+++ b/src/lib/eolian/database_expr_api.c
@@ -23,15 +23,6 @@ _eval_type(const Eolian_Expression *expr, const Eolian_Type 
*type)
  return err;
switch (type->type)
  {
-  case EOLIAN_TYPE_POINTER:
-{
-   int mask = EOLIAN_MASK_NULL;
-   const Eolian_Type *base = eolian_type_base_type_get(type);
-   int kw = base->name ? eo_lexer_keyword_str_to_id(base->name) : 0;
-   if (kw == KW_char)
- mask |= EOLIAN_MASK_STRING;
-   return database_expr_eval(expr, mask);
-}
   case EOLIAN_TYPE_CLASS:
   case EOLIAN_TYPE_COMPLEX:
 return database_expr_eval(expr, EOLIAN_MASK_NULL);
diff --git a/src/lib/eolian/database_validate.c 
b/src/lib/eolian/database_validate.c
index 4e93b4e..bc93a57 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -223,7 +223,6 @@ _validate_type(const Eolian_Type *tp)
  }
return _validate_typedecl(tpp);
 }
-  case EOLIAN_TYPE_POINTER:
   case EOLIAN_TYPE_STATIC_ARRAY:
   case EOLIAN_TYPE_TERMINATED_ARRAY:
 return _validate_type(tp->base_type);
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 4fd22e1..592f214 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -755,7 +755,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, 
Eina_Bool allow_sarray)
FILL_BASE(def->base, ls, line, col);
def->is_const = EINA_TRUE;
check_match(ls, ')', '(', pline, pcol);
-   goto parse_ptr;
+   return def;
 }
   case KW_ptr:
 {
@@ -768,7 +768,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, 
Eina_Bool allow_sarray)
FILL_BASE(def->base, ls, line, col);
def->is_ptr = EINA_TRUE;
check_match(ls, ')', '(', pline, pcol);
-   goto parse_ptr;
+   return def;
 }
   case KW_own:
 {
@@ -788,7 +788,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, 
Eina_Bool allow_sarray)
FILL_BASE(def->base, ls, line, col);
  

[EGIT] [core/efl] master 07/08: efl_ui_text, efl_ui_clock: remove pointers

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit d47e3f3d206895e4c465d83ca7b33d6a2b1ddd2a
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:50:58 2016 +0100

efl_ui_text, efl_ui_clock: remove pointers
---
 src/lib/elementary/efl_ui_clock.eo | 8 
 src/lib/elementary/efl_ui_text.eo  | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/lib/elementary/efl_ui_clock.eo 
b/src/lib/elementary/efl_ui_clock.eo
index 9eaa212..54dd8b6 100644
--- a/src/lib/elementary/efl_ui_clock.eo
+++ b/src/lib/elementary/efl_ui_clock.eo
@@ -95,7 +95,7 @@ class Efl.Ui.Clock (Elm.Layout)
  */
  set {} get {}
  values {
-fmt: const(char)* @nullable; [[The clock format.]]
+fmt: string @nullable; [[The clock format.]]
  }
   }
   @property pause {
@@ -139,7 +139,7 @@ class Efl.Ui.Clock (Elm.Layout)
  }
 
  keys {
-mintime: Efl.Time*; [[Time structure containing the minimum time 
value.]]
+mintime: ptr(Efl.Time); [[Time structure containing the minimum 
time value.]]
  }
   }
   @property value_max {
@@ -166,7 +166,7 @@ class Efl.Ui.Clock (Elm.Layout)
  }
 
  keys {
-maxtime: Efl.Time*; [[Time structure containing the minimum time 
value.]]
+maxtime: ptr(Efl.Time); [[Time structure containing the minimum 
time value.]]
  }
   }
   @property value {
@@ -192,7 +192,7 @@ class Efl.Ui.Clock (Elm.Layout)
 return: bool; [[$true on success, $false otherwise]]
  }
  keys {
-curtime: Efl.Time*; [[Time structure containing the minimum time 
value.]]
+curtime: ptr(Efl.Time); [[Time structure containing the minimum 
time value.]]
  }
   }
   @property field_visible {
diff --git a/src/lib/elementary/efl_ui_text.eo 
b/src/lib/elementary/efl_ui_text.eo
index e71948c..0c92144 100644
--- a/src/lib/elementary/efl_ui_text.eo
+++ b/src/lib/elementary/efl_ui_text.eo
@@ -25,7 +25,7 @@ struct Efl.Ui.Text.Hover_Parent
 struct Efl.Ui.Text.Anchor_Hover_Info
 {
[[EFL text anchor hover information]]
-   anchor_info: const(Efl.Ui.Text.Anchor_Info)*; [[The actual anchor info.]]
+   anchor_info: ptr(const(Efl.Ui.Text.Anchor_Info)); [[The actual anchor 
info.]]
hover: Elm.Hover; [[The hover object to use for the popup.]]
hover_parent: Efl.Ui.Text.Hover_Parent; [[Hover parent widget]]
hover_left : bool; [[Hint indicating if there's space

-- 




[EGIT] [core/efl] master 02/08: elm_map: remove pointers

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit b0c6fb99006999789266955cfcdd5e7c71947769
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:41:43 2016 +0100

elm_map: remove pointers
---
 src/lib/elementary/elm_map.eo | 26 +-
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/lib/elementary/elm_map.eo b/src/lib/elementary/elm_map.eo
index 298326a..fb61d2d 100644
--- a/src/lib/elementary/elm_map.eo
+++ b/src/lib/elementary/elm_map.eo
@@ -264,7 +264,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
 
   @since 1.7
 ]]
-return: list; [[The list of all overlays or 
$null upon failure.]]
+return: list; [[The list of all overlays or 
$null upon failure.]]
  }
   }
   @property tile_load_status {
@@ -334,7 +334,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
\@ref elm_map_route_del and distance can be get with
\@ref elm_map_route_distance_get.
  ]]
- return: Elm_Map_Route *; [[The created route or $null upon failure.]]
+ return: ptr(Elm_Map_Route); [[The created route or $null upon 
failure.]]
  params {
 @in type: Elm.Map.Route_Type; [[The type of transport to be 
considered when tracing a route.]]
 @in method: Elm.Map.Route_Method; [[The routing method, what 
should be prioritized.]]
@@ -375,7 +375,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
\@ref elm_map_overlay_del.
  ]]
 
- return: Elm_Map_Overlay *; [[The created overlay or $null upon 
failure.]]
+ return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon 
failure.]]
  params {
 @in lon: double; [[The center longitude.]]
 @in lat: double; [[The center latitude.]]
@@ -399,7 +399,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
Also these changes have a influence on the overlays in the
same class even if each overlay is alone and is not grouped.
  ]]
- return: Elm_Map_Overlay *; [[The created overlay or $null upon 
failure.]]
+ return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon 
failure.]]
   }
   overlay_bubble_add {
  [[Add a new bubble overlay to the map object.
@@ -414,7 +414,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
Overlay created with this method can be deleted with
\@ref elm_map_overlay_del.
  ]]
- return: Elm_Map_Overlay *; [[The created overlay or $null upon 
failure.]]
+ return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon 
failure.]]
   }
   sources_get @const {
  [[Get the names of available sources for a specific type.
@@ -430,7 +430,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
 
At least available sources of name type are "Nominatim".
  ]]
- return: string*; [[The char pointer array of source names.]]
+ return: ptr(string); [[The char pointer array of source names.]]
  params {
 @in type: Elm.Map.Source_Type; [[Source type.]]
  }
@@ -444,7 +444,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
Overlay created with this method can be deleted with
\@ref elm_map_overlay_del.
  ]]
- return: Elm_Map_Overlay *; [[The created overlay or $null upon 
failure.]]
+ return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon 
failure.]]
   }
   overlay_line_add {
  [[Add a new line overlay to the map object.
@@ -453,7 +453,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
Overlay created with this method can be deleted with 
\@ref elm_map_overlay_del.
  ]]
- return: Elm_Map_Overlay *; [[The created overlay or $null upon 
failure.]]
+ return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon 
failure.]]
  params {
 @in flon: double; [[The start longitude.]]
 @in flat: double; [[The start latitude.]]
@@ -489,7 +489,7 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
To get the longitude and latitude, \@ref elm_map_region_get
should be used.
  ]]
- return: Elm_Map_Name *; [[A #Elm_Map_Name handle for this 
coordinate.]]
+ return: ptr(Elm_Map_Name); [[A #Elm_Map_Name handle for this 
coordinate.]]
  params {
 @in address: string @optional; [[The address.]]
 @in lon: double; [[The longitude.]]
@@ -563,9 +563,9 @@ class Elm.Map (Elm.Widget, Elm.Interface_Scrollable,
Overlay created with this method can be deleted with
\@ref elm_map_overlay_del.
  ]]
- return: Elm_Map_Overlay *; [[The 

Re: [E-devel] eina freeq?

2016-11-10 Thread Mike Blumenkrantz
I see that this has been pushed and is already being used despite some
objections being raised? I guess I probably missed IRC discussions.

The reasoning for needing this sounds like we should probably just use
jemalloc (
https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919/),
which does more, has more people actively devoted to improving/developing
it, and has been widely tested and benchmarked so we know it will
definitely have the effect that we want while also reducing our
maintenance+development overhead.

On Fri, Nov 4, 2016 at 10:08 AM Carsten Haitzler 
wrote:

> On Fri, 4 Nov 2016 10:18:33 -0200 Gustavo Sverzut Barbieri <
> barbi...@gmail.com>
> said:
>
> > On Thu, Nov 3, 2016 at 9:27 PM, Carsten Haitzler 
> wrote:
> > > On Thu, 3 Nov 2016 11:24:14 -0200 Gustavo Sverzut Barbieri
> > >  said:
> > >
> > >> I guessed mempool and eina_trash did that
> > >
> > > nah - mempool i don't think has a "purgatory" for pointers.
> > > they are released back into the pool.
> >
> > well, it could... OTOH it's just for "empty blocks", since if it's in
> > a mempool that has memory blocks and they're still in use, it will
> > just flag as unused.
> >
> > also, it simplifies bookkeeping of the memory if they are all of the
> > same size, like you said Eina_List, it knows the size of each entry,
> > thus just need to mark each position that is usable, not try to
> > allocate based on size or similar -- much more efficient.
>
> yah. that's what mempool does... but it doesnt have 2 states for an
> allocation.
> it doesnt have "in use" "freed but not able to be reused yet" and "free and
> able to be re-used". it just has 1. in use or not.
>
> > > trash is actually a cache for storing ptrs but it never
> > > actually frees anything. it doesn't know how to. you have to manually
> clean
> > > trash yourself and call some kind of free func when you do the clean.
> trash
> > > doesn't store free funcs at all.
> >
> > I don't see why it couldn't.
>
> but it doesn't, and eina_trash is all static inlines with structs exposed
> so
> we'd break struct definition, memory layout and api to do this. if an
> eina_trash is exposed from a lib compiled against efl 1.18 against other
> code
> compiled against 1.19 - it'd break. even worse eina_trash is a single
> linked
> list so walking through it is scattered through memory thus basically
> likely a
> cache miss each time.
>
> > but I find this is trying to replace malloc's internal structures,
> > which is not so nice. As you know, malloc implementation can
> > postpone/defer actual flushes, it's not 1:1 with brk() and munmap()
> > since like our mempools the page or stack may have used bits that
> > prevents that to be given back to the kernel.
>
> i know. but it's out of our control. we can't change what and how malloc
> does
> this. we can't do smarter overwrite detection. malloc has options for
> filling
> freed memory with a pattern - but it will do it to any sized allocation. 1
> byte
> or 1 gigabyte. with a custom implementation WE can decide eg only fill in
> up to
> 256 bytes as this is what might be sued for small objects/list nodes but
> leave
> big allocations untouched or .. only fill in the FIRST N bytes of an
> allocation with a pattern. if the pattern has been overwritten between
> submission to a free queue AND when it is actually freed then we have a
> bug in
> code somewhere scribbling over freed memory. at least we know it and know
> what
> to be looking for. malloc is far more limited in this way.
>
> also we can defer freeing until when WE want. e.g. after having gone idle
> and
> we would otherwise sleep. malloc really doesnt have any way to do this
> nicely.
> it's totally non-portable, libc specific (eg glibc) etc. and even then very
> "uncontrollable". a free queue of our own is portable AND controllable.
>
> > what usually adds overhead are mutexes and the algorithms trying to
> > find an empty block... if we say freeq/trash are TLS/single-thread,
> > then we could avoid the mutex (but see malloc(3) docs on how they try
> > to minimize that contention), but adding a list of entries to look for
> > a free spot is likely worse than malloc's own tuned algorithm.
>
> no no. i'm not talking about making a CACHE of memory blocks. simply a
> fifo.
> put a ptr on the queue with a free func. it sits there for some time and
> then
> something walks this from beginning to end actually freeing. e.g. once we
> have
> reached and idle sleep state. THEN the frees really happen. once on the
> free
> queue there is no way off. you are freed. or to be freed. only a question
> of
> when.
>
> if there is buggy code that does something like:
>
> x = malloc(10);
> x[2] = 10;
> free(x);
> y = malloc(10);
> y[2] = 10;
> x[2] = 5;
>
> ... there is a very good chance y is a recycled pointer - same mem
> location as
> x. when we do x[2] = 5 we overwrite y[2] with 5 

[EGIT] [core/efl] master 01/01: efl_net_control: remove pointer

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 5c54c53975b3bb8f4d7ea55ba33bee6d7dcabbe4
Author: Daniel Kolesa 
Date:   Thu Nov 10 16:02:44 2016 +0100

efl_net_control: remove pointer
---
 src/lib/ecore_con/efl_net_control.eo | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/ecore_con/efl_net_control.eo 
b/src/lib/ecore_con/efl_net_control.eo
index 14b7ceb..e1fd4f6 100644
--- a/src/lib/ecore_con/efl_net_control.eo
+++ b/src/lib/ecore_con/efl_net_control.eo
@@ -197,7 +197,7 @@ class Efl.Net.Control (Efl.Loop_User) {
 [[If event "agent_request_input" was emitted, this will reply with 
the requested data]]
 params {
 name: string @nullable; [[If 
@Efl.Net.Control.Agent_Request_Input.Field.name was present, this should 
contain the network name or the 'ssid' parameter should be used.]]
-ssid: const(Eina.Slice)* @nullable; [[If 
@Efl.Net.Control.Agent_Request_Input.Field.ssid was present, this should 
contain the network SSID or the 'name' parameter should be used.]]
+ssid: ptr(const(Eina.Slice)) @nullable; [[If 
@Efl.Net.Control.Agent_Request_Input.Field.ssid was present, this should 
contain the network SSID or the 'name' parameter should be used.]]
 username: string @nullable; [[If 
@Efl.Net.Control.Agent_Request_Input.Field.username was present, this should 
contain the identity or username]]
 passphrase: string @nullable; [[If 
@Efl.Net.Control.Agent_Request_Input.Field.passphrase was present, this should 
contain the password or passphrase, more details on how it should be 
interpreted was given in Efl.Net.Control.Agent_Request_Input.passphrase_type.]]
 wps: string @nullable; [[If 
@Efl.Net.Control.Agent_Request_Input.Field.wps was present, this should contain 
the WPS PIN or an empty string "" to use the WPS push button instead.]]

-- 




[EGIT] [core/efl] master 03/08: elm radio, scroller, sys_notify: remove pointers

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit bacbb1e5bdd693cc8cfbbc95fc8ad8851dbc0a64
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:43:15 2016 +0100

elm radio, scroller, sys_notify: remove pointers
---
 src/lib/elementary/elm_radio.eo  | 2 +-
 src/lib/elementary/elm_scroller.eo   | 4 ++--
 src/lib/elementary/elm_sys_notify.eo | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_radio.eo b/src/lib/elementary/elm_radio.eo
index 893af6d..44f36da 100644
--- a/src/lib/elementary/elm_radio.eo
+++ b/src/lib/elementary/elm_radio.eo
@@ -51,7 +51,7 @@ class Elm.Radio (Elm.Check, Elm.Interface.Atspi_Widget_Action)
 ]]
  }
  values {
-valuep: int * @nullable; [[Pointer to the integer to modify]]
+valuep: ptr(int) @nullable; [[Pointer to the integer to modify]]
  }
   }
   @property selected_object {
diff --git a/src/lib/elementary/elm_scroller.eo 
b/src/lib/elementary/elm_scroller.eo
index 8b9fe46..2dcfd90 100644
--- a/src/lib/elementary/elm_scroller.eo
+++ b/src/lib/elementary/elm_scroller.eo
@@ -52,8 +52,8 @@ class Elm.Scroller (Elm.Layout, Elm.Interface_Scrollable,
@since 1.8
  ]]
  params {
-@in page_limit_h: int *; [[The maximum of the movable horizontal 
page]]
-@in page_limit_v: int *; [[The maximum of the movable vertical 
page]]
+@in page_limit_h: ptr(int); [[The maximum of the movable 
horizontal page]]
+@in page_limit_v: ptr(int); [[The maximum of the movable vertical 
page]]
  }
   }
}
diff --git a/src/lib/elementary/elm_sys_notify.eo 
b/src/lib/elementary/elm_sys_notify.eo
index 5282db5..881a5ef 100644
--- a/src/lib/elementary/elm_sys_notify.eo
+++ b/src/lib/elementary/elm_sys_notify.eo
@@ -37,7 +37,7 @@ struct Elm.Sys_Notify.Action_Invoked
  @since 1.8
]]
id: uint; [[ID of the notification]]
-   action_key: char *; [[The key of the action invoked. These match the
+   action_key: ptr(char); [[The key of the action invoked. These match the
 keys sent over in the list of actions]]
 }
 

-- 




[EGIT] [core/efl] master 05/08: elm gengrid_item toolbar_item: remove pointers

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 8fe9fcf9d8e1e75e21d14c0b270e2e61250b7321
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:47:31 2016 +0100

elm gengrid_item toolbar_item: remove pointers
---
 src/lib/elementary/elm_gengrid_item.eo |  4 ++--
 src/lib/elementary/elm_toolbar_item.eo | 10 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/lib/elementary/elm_gengrid_item.eo 
b/src/lib/elementary/elm_gengrid_item.eo
index a2c2e94..15ceb49 100644
--- a/src/lib/elementary/elm_gengrid_item.eo
+++ b/src/lib/elementary/elm_gengrid_item.eo
@@ -77,7 +77,7 @@ class Elm.Gengrid.Item(Elm.Widget.Item)
the function pointers and item_style.]]
 }
 values {
- itc: const (Elm.Gengrid.Item.Class) *; [[Gengrid Item 
class for the given item]]
+ itc: ptr(const(Elm.Gengrid.Item.Class)); [[Gengrid Item 
class for the given item]]
 }
}
@property index {
@@ -216,7 +216,7 @@ class Elm.Gengrid.Item(Elm.Widget.Item)
   displayed. After changing the item class, 
elm_gengrid_item_update() is
   called on the item $it.]]
 params {
- @in itc: const (Elm.Gengrid.Item.Class) *; [[The gengrid 
item class describing the function pointers and the item style.]]
+ @in itc: ptr(const(Elm.Gengrid.Item.Class)); [[The 
gengrid item class describing the function pointers and the item style.]]
 }
}
all_contents_unset{
diff --git a/src/lib/elementary/elm_toolbar_item.eo 
b/src/lib/elementary/elm_toolbar_item.eo
index 5950c65..071d397 100644
--- a/src/lib/elementary/elm_toolbar_item.eo
+++ b/src/lib/elementary/elm_toolbar_item.eo
@@ -179,7 +179,7 @@ class Elm.Toolbar.Item(Elm.Widget.Item)
  return: bool;
 }
 values {
- state: Elm.Toolbar.Item.State * @nullable;
+ state: ptr(Elm.Toolbar.Item.State) @nullable;
 }
}
/*  init { FIXME
@@ -231,12 +231,12 @@ class Elm.Toolbar.Item(Elm.Widget.Item)
  @in func: Evas_Smart_Cb @optional; [[The function to call 
when the item is clicked when this state is selected.]]
  @in data: const(void_ptr) @optional; [[The data to 
associate with the state.]]
 }
-return: Elm.Toolbar.Item.State *; [[The toolbar item state, or 
$null upon failure.]]
+return: ptr(Elm.Toolbar.Item.State); [[The toolbar item state, 
or $null upon failure.]]
}
state_del {
 [[Delete a previously added state to $item.]]
 params {
- @in state: Elm.Toolbar.Item.State *; [[The state to be 
deleted.]]
+ @in state: ptr(Elm.Toolbar.Item.State); [[The state to be 
deleted.]]
 }
 return: bool; [[$true on success or $false on failure.]]
}
@@ -246,7 +246,7 @@ class Elm.Toolbar.Item(Elm.Widget.Item)
   If last state is selected, this function will return first
   state.
 ]]
-return: Elm.Toolbar.Item.State *; [[The state after current 
state, or $null on failure.]]
+return: ptr(Elm.Toolbar.Item.State); [[The state after current 
state, or $null on failure.]]
}
state_prev {
 [[Get the state before selected state in toolbar's $item.
@@ -254,7 +254,7 @@ class Elm.Toolbar.Item(Elm.Widget.Item)
   If first state is selected, this function will return last
   state.
 ]]
-return: Elm.Toolbar.Item.State *; [[The state before current 
state, or $null on failure.]]
+return: ptr(Elm.Toolbar.Item.State); [[The state before 
current state, or $null on failure.]]
}
show {
 [[Show a specific item, when the toolbar can be scrolled.

-- 




[EGIT] [core/efl] master 06/08: elm_code_widget: remove pointers

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit f459e885ef83540cd04604fc4e689007889541c8
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:49:12 2016 +0100

elm_code_widget: remove pointers
---
 src/lib/elementary/elm_code_widget.eo | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/lib/elementary/elm_code_widget.eo 
b/src/lib/elementary/elm_code_widget.eo
index 9589dc3..471eef1 100644
--- a/src/lib/elementary/elm_code_widget.eo
+++ b/src/lib/elementary/elm_code_widget.eo
@@ -22,7 +22,7 @@ class Elm.Code_Widget (Elm.Layout, Elm.Interface.Atspi.Text)
 [[Get the underlying code object we are rendering]]
  }
  values {
-code: Elm_Code *; [[Our underlying Elm_Code object]]
+code: ptr(Elm_Code); [[Our underlying Elm_Code object]]
  }
   }
   @property font {
@@ -35,7 +35,7 @@ class Elm.Code_Widget (Elm.Layout, Elm.Interface.Atspi.Text)
 The font name is a copy ad should be freed once it is no longer 
needed]]
  }
  values {
-name: const(char) *; [[The name of the font to load]]
+name: string; [[The name of the font to load]]
 size: Evas.Font.Size; [[The font size for the widget]]
  }
   }
@@ -175,13 +175,13 @@ class Elm.Code_Widget (Elm.Layout, 
Elm.Interface.Atspi.Text)
   line_refresh {
 [[Refresh code line in widget]]
  params {
-line: Elm_Code_Line *; [[The line to refresh.]]
+line: ptr(Elm_Code_Line); [[The line to refresh.]]
  }
   }
   line_visible_get {
  [[Check if the code line is currently visible]]
  params {
-line: Elm_Code_Line *; [[The line to test for visibility.]]
+line: ptr(Elm_Code_Line); [[The line to test for visibility.]]
  }
  return: bool; [[$true if the line specified is currently visible 
within the scroll region.]]
   }
@@ -194,8 +194,8 @@ class Elm.Code_Widget (Elm.Layout, Elm.Interface.Atspi.Text)
  params {
 x: Evas.Coord; [[The x coordinate in the widget]]
 y: Evas.Coord; [[The y coordinate in the widget]]
-row: uint *; [[The row for the coordinates]]
-col: int *; [[The column for the coordinates]]
+row: ptr(uint); [[The row for the coordinates]]
+col: ptr(int); [[The column for the coordinates]]
  }
  return: bool; [[$true if a line exists at these coordinates]]
   }
@@ -216,13 +216,13 @@ class Elm.Code_Widget (Elm.Layout, 
Elm.Interface.Atspi.Text)
 end_col: uint; [[The widget column of the last character to get]]
 end_line: uint; [[The line of the last character to get]]
  }
- return: char *; [[The text content between start and end positions]]
+ return: ptr(char); [[The text content between start and end 
positions]]
   }
 
   line_text_column_width_to_position {
 [[Get text column width at given position]]
  params {
-line: Elm_Code_Line *; [[Code line]]
+line: ptr(Elm_Code_Line); [[Code line]]
 position: uint; [[Code position]]
  }
  return: uint; [[Text column width]]
@@ -230,14 +230,14 @@ class Elm.Code_Widget (Elm.Layout, 
Elm.Interface.Atspi.Text)
   line_text_column_width_get {
 [[Get text column width for code line]]
  params {
-line: Elm_Code_Line *; [[Code line]]
+line: ptr(Elm_Code_Line); [[Code line]]
  }
  return: uint; [[Text column width]]
   }
   line_text_position_for_column_get {
 [[Get position from column]]
  params {
-line: Elm_Code_Line *; [[Code line]]
+line: ptr(Elm_Code_Line); [[Code line]]
 column: uint; [[Column]]
  }
  return: uint; [[Position]]

-- 




[EGIT] [core/efl] master 01/01: efl_ui_win: temporarily use terminated_array to remove a pointer

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 596a3968871d0d4d6b18cf05df836323f99597fa
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:59:47 2016 +0100

efl_ui_win: temporarily use terminated_array to remove a pointer

see FIXME.
---
 src/lib/elementary/efl_ui_win.eo | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index 4de6a2b..d7f12d6 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -646,13 +646,19 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, 
Elm.Interface.Atspi.Window,
  }
   }
   @property available_profiles {
+ /* FIXME: terminated_array is actually wrong here (the "count" 
argument
+  * provides the size, not a NULL at the end of it), but we have no way
+  * to represent this in Eolian correctly, it will work fine for C but
+  * will break for other languages; we probably want to re-do this API
+  * completely though, so that it can bind nicely
+  */
  set {
 [[Set the array of available profiles to a window.
 
   @since 1.8
 ]]
 values {
-   profiles: ptr(string); [[The string array of available 
profiles.]]
+   profiles: terminated_array; [[The string array of 
available profiles.]]
count: uint; [[The number of members in profiles.]]
 }
  }
@@ -662,7 +668,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, 
Elm.Interface.Atspi.Window,
   @since 1.8
 ]]
 values {
-   profiles: char**; [[The string array of available profiles.]]
+   profiles: terminated_array; [[The string array of 
available profiles.]]
count: uint; [[The number of members in profiles.]]
 }
 return: bool;

-- 




[EGIT] [core/efl] master 01/08: elm dayselector, entry, glview: remove pointers

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 50884a139b16770895f548b2b2f3b17221265d58
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:38:53 2016 +0100

elm dayselector, entry, glview: remove pointers
---
 src/lib/elementary/elm_dayselector.eo | 2 +-
 src/lib/elementary/elm_entry.eo   | 2 +-
 src/lib/elementary/elm_glview.eo  | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_dayselector.eo 
b/src/lib/elementary/elm_dayselector.eo
index abcb8bb..0fe2f5c 100644
--- a/src/lib/elementary/elm_dayselector.eo
+++ b/src/lib/elementary/elm_dayselector.eo
@@ -106,7 +106,7 @@ class Elm.Dayselector (Elm.Layout)
 */
 
  params {
-@in weekdays: string * @nullable; [[Array of seven strings to be 
used as weekday names.
+@in weekdays: ptr(string) @nullable; [[Array of seven strings to 
be used as weekday names.
 Warning: It must have 7 elements, or it will access invalid memory.
 Warning: The strings must be NULL terminated ('@\0').]]
  }
diff --git a/src/lib/elementary/elm_entry.eo b/src/lib/elementary/elm_entry.eo
index 9ae2f85..a15be39 100644
--- a/src/lib/elementary/elm_entry.eo
+++ b/src/lib/elementary/elm_entry.eo
@@ -633,7 +633,7 @@ class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, 
Efl.Ui.Clickable,
   Only the text is returned, any format that may exist will not be 
part
   of the return value. You must free the string when done with 
\@ref free.
 ]]
-return: own(char *) @warn_unused;
+return: own(ptr(char)) @warn_unused;
  }
   }
   @property selection {
diff --git a/src/lib/elementary/elm_glview.eo b/src/lib/elementary/elm_glview.eo
index ae39cca..fcf80d1 100644
--- a/src/lib/elementary/elm_glview.eo
+++ b/src/lib/elementary/elm_glview.eo
@@ -146,7 +146,7 @@ class Elm.Glview (Elm.Widget, Efl.Gfx.View)
   @property gl_api {
  get {
 [[Get the gl api struct for gl rendering.]]
-return: Evas_GL_API *;
+return: ptr(Evas_GL_API);
  }
   }
   @property evas_gl {
@@ -159,7 +159,7 @@ class Elm.Glview (Elm.Widget, Efl.Gfx.View)
 
   @since 1.12
 ]]
-return: Evas_GL *;
+return: ptr(Evas_GL);
  }
   }
   @property rotation {

-- 




[EGIT] [core/efl] master 04/08: efl_ui_win: remove most pointers

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 6b156ad6c68269d9af89afbb6d5a748a04c53e60
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:44:57 2016 +0100

efl_ui_win: remove most pointers
---
 src/lib/elementary/efl_ui_win.eo | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index 259b472..4de6a2b 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -213,7 +213,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, 
Elm.Interface.Atspi.Window,
 ]]
 legacy: elm_win_wm_rotation_available_rotations_set;
 values {
-   rotations: const(int)*; [[The array of rotation value.]]
+   rotations: ptr(const(int)); [[The array of rotation value.]]
count: uint; [[The size of the rotations array.]]
 }
  }
@@ -226,7 +226,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, 
Elm.Interface.Atspi.Window,
 ]]
 legacy: elm_win_wm_rotation_available_rotations_get;
 values {
-   rotations: int*; [[The array of rotation value.]]
+   rotations: ptr(int); [[The array of rotation value.]]
count: uint; [[The size of the rotations array.]]
 }
 return: bool;
@@ -652,7 +652,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, 
Elm.Interface.Atspi.Window,
   @since 1.8
 ]]
 values {
-   profiles: string*; [[The string array of available profiles.]]
+   profiles: ptr(string); [[The string array of available 
profiles.]]
count: uint; [[The number of members in profiles.]]
 }
  }

-- 




[EGIT] [core/efl] master 08/08: elm_prefs, elm_slideshow: remove pointers

2016-11-10 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 308aea36834e724fc093a526321d74ec9fdc062f
Author: Daniel Kolesa 
Date:   Thu Nov 10 15:53:25 2016 +0100

elm_prefs, elm_slideshow: remove pointers
---
 src/lib/elementary/elm_prefs.eo | 4 ++--
 src/lib/elementary/elm_slideshow.eo | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_prefs.eo b/src/lib/elementary/elm_prefs.eo
index 9df14d3..9ea1986 100644
--- a/src/lib/elementary/elm_prefs.eo
+++ b/src/lib/elementary/elm_prefs.eo
@@ -41,7 +41,7 @@ class Elm.Prefs (Elm.Widget, Efl.File)
  get {
  }
  values {
-data: Elm_Prefs_Data * @nullable; [[A valid prefs_data handle]]
+data: ptr(Elm_Prefs_Data) @nullable; [[A valid prefs_data handle]]
  }
   }
   @property autosave {
@@ -92,7 +92,7 @@ class Elm.Prefs (Elm.Widget, Efl.File)
  return: bool; [[$true, on success, $false otherwise]]
  params {
 @in name: string; [[The name of the item (as declared in the prefs 
collection)]]
-@in value: const(generic_value)*; [[The value to set on the item. 
It should be typed as the item expects, preferably, or a conversion will take 
place]]
+@in value: ptr(const(generic_value)); [[The value to set on the 
item. It should be typed as the item expects, preferably, or a conversion will 
take place]]
  }
   }
   item_value_get @const {
diff --git a/src/lib/elementary/elm_slideshow.eo 
b/src/lib/elementary/elm_slideshow.eo
index f072a18..76687fb 100644
--- a/src/lib/elementary/elm_slideshow.eo
+++ b/src/lib/elementary/elm_slideshow.eo
@@ -275,7 +275,7 @@ class Elm.Slideshow (Elm.Layout, 
Elm.Interface.Atspi_Widget_Action)
  ]]
  return: Elm.Widget.Item; [[A handle to the item added or $null on 
errors.]]
  params {
-@in itc: const(Elm_Slideshow_Item_Class)*; [[The item class for 
the item.]]
+@in itc: ptr(const(Elm_Slideshow_Item_Class)); [[The item class 
for the item.]]
 @in data: const(void_ptr); [[The item's data.]]
  }
   }
@@ -293,7 +293,7 @@ class Elm.Slideshow (Elm.Layout, 
Elm.Interface.Atspi_Widget_Action)
  return: Elm.Widget.Item; [[Returns The slideshow item handle,
   on success, or $null on errors.]]
  params {
-@in itc: const(Elm_Slideshow_Item_Class)*; [[The item class for 
the item.]]
+@in itc: ptr(const(Elm_Slideshow_Item_Class)); [[The item class 
for the item.]]
 @in data: const(void_ptr); [[The item's data.]]
 @in func: Eina_Compare_Cb; [[The comparing function to be used to 
sort the slideshow
  items by #Elm_Slideshow_Item_Class 
item handles.]]

-- 




[EGIT] [core/efl] master 01/03: elua: docgen: follow is_ref to is_ptr rename

2016-11-10 Thread Stefan Schmidt
stefan pushed a commit to branch master.

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

commit 299338a55065c31f88d5ac87bbe1249f5255f3fa
Author: Stefan Schmidt 
Date:   Thu Nov 10 15:13:24 2016 +0100

elua: docgen: follow is_ref to is_ptr rename

Docgen was broken after this rename.
---
 src/scripts/elua/apps/docgen/doctree.lua | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/scripts/elua/apps/docgen/doctree.lua 
b/src/scripts/elua/apps/docgen/doctree.lua
index 699cb1c..0f835c5 100644
--- a/src/scripts/elua/apps/docgen/doctree.lua
+++ b/src/scripts/elua/apps/docgen/doctree.lua
@@ -585,8 +585,8 @@ local wrap_type_attrs = function(tp, str)
 if ffunc then
 str = "free(" .. str .. ", " .. ffunc .. ")"
 end
-if tp:is_ref() then
-str = "ref(" .. str .. ")"
+if tp:is_ptr() then
+str = "ptr(" .. str .. ")"
 end
 return str
 end
@@ -663,8 +663,8 @@ M.Type = Node:clone {
 return self.type:is_const()
 end,
 
-is_ref = function(self)
-return self.type:is_ref()
+is_ptr = function(self)
+return self.type:is_ptr()
 end,
 
 c_type_get = function(self)

-- 




[EGIT] [core/efl] master 03/03: docs: emotion: add last missing docs for emotion eo file

2016-11-10 Thread Stefan Schmidt
stefan pushed a commit to branch master.

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

commit 318bf22a99c15cdc58234ca94b8df19df70a9bef
Author: Stefan Schmidt 
Date:   Thu Nov 10 14:40:15 2016 +0100

docs: emotion: add last missing docs for emotion eo file
---
 src/lib/emotion/efl_canvas_video.eo | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/emotion/efl_canvas_video.eo 
b/src/lib/emotion/efl_canvas_video.eo
index b7be070..4989a72 100644
--- a/src/lib/emotion/efl_canvas_video.eo
+++ b/src/lib/emotion/efl_canvas_video.eo
@@ -1,4 +1,6 @@
-class Efl.Canvas.Video (Efl.Canvas.Group, Efl.File, Efl.Player, Efl.Image, 
Efl.Image.Load) {
+class Efl.Canvas.Video (Efl.Canvas.Group, Efl.File, Efl.Player, Efl.Image, 
Efl.Image.Load)
+{
+   [[Efl canvas video class]]
methods {
 @property option {
  set {

-- 




[EGIT] [core/efl] master 02/03: docs: eo: finish up docs for eo

2016-11-10 Thread Stefan Schmidt
stefan pushed a commit to branch master.

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

commit 8e88ff7487884b7b5aca50a1b32bb590e179334a
Author: Stefan Schmidt 
Date:   Thu Nov 10 14:38:06 2016 +0100

docs: eo: finish up docs for eo

Add some mising docs, fix some typos and align with other docs.
---
 src/lib/eo/efl_class.eo  |  1 +
 src/lib/eo/efl_object.eo | 79 +++-
 2 files changed, 39 insertions(+), 41 deletions(-)

diff --git a/src/lib/eo/efl_class.eo b/src/lib/eo/efl_class.eo
index 367848a..b40674d 100644
--- a/src/lib/eo/efl_class.eo
+++ b/src/lib/eo/efl_class.eo
@@ -1,4 +1,5 @@
 abstract Efl.Class ()
 {
+[[Abstract Efl class]]
 data: null;
 }
diff --git a/src/lib/eo/efl_object.eo b/src/lib/eo/efl_object.eo
index 3192061..5866cac 100644
--- a/src/lib/eo/efl_object.eo
+++ b/src/lib/eo/efl_object.eo
@@ -44,6 +44,7 @@ type Efl.Callback_Priority: short; [[Callback priority value. 
Range is -32k - 32
 
 abstract Efl.Object ()
 {
+   [[Abstract Efl object class]]
eo_prefix: efl;
 
methods {
@@ -69,7 +70,7 @@ abstract Efl.Object ()
  get {
  }
  values {
-parent: Efl.Object @nullable; [[the new parent]]
+parent: Efl.Object @nullable; [[The new parent]]
  }
   }
   del @const {
@@ -96,7 +97,7 @@ abstract Efl.Object ()
  get {
  }
  values {
-   name: string @nullable; [[the name]]
+   name: string @nullable; [[The name]]
  }
   }
   @property comment {
@@ -111,7 +112,7 @@ abstract Efl.Object ()
  get {
  }
  values {
-   comment: string @nullable; [[the comment]]
+   comment: string @nullable; [[The comment]]
  }
   }
   @property event_global_freeze_count @class {
@@ -141,7 +142,7 @@ abstract Efl.Object ()
  get {
  }
  values {
-finalized: bool;
+finalized: bool; [[$true if the object is finalized, $false 
otherwise]]
  }
   }
   provider_find {
@@ -149,7 +150,7 @@ abstract Efl.Object ()
 
   The object from the provider will then be returned.
   The base implementation calls the provider_find function on the 
object parent,
-  and returnes its result. If no parent is present NULL is returned.
+  and returns its result. If no parent is present NULL is returned.
   Each implementation has to support this function by overriding
   it and returning itself if the interface matches the parameter.
   If this is not done the class cannot be found up in the object tree.
@@ -157,7 +158,7 @@ abstract Efl.Object ()
 params {
   klass : const(Efl.Object); [[The class identifier to search for]]
 }
-return : Efl.Object;
+return : Efl.Object; [[Object from the provider list]]
   }
   constructor {
  [[Call the object's constructor.
@@ -185,9 +186,9 @@ abstract Efl.Object ()
the search will match any object of that class.
  ]]
  params {
-@in search: string; [[the name search string]]
+@in search: string; [[The name search string]]
  }
- return: Efl.Object; [[the first object found]]
+ return: Efl.Object; [[The first object found]]
   }
   wref_add {
  [[Add a new weak reference to obj.
@@ -199,13 +200,13 @@ abstract Efl.Object ()
being freed.
  ]]
  params {
-@in wref: ptr(Efl.Object);
+@in wref: ptr(Efl.Object); [[The weak ref]]
  }
   }
   wref_del {
  [[Delete the weak reference passed.]]
  params {
-@in wref: ptr(Efl.Object);
+@in wref: ptr(Efl.Object); [[The weak ref]]
  }
   }
   @property key_data {
@@ -214,16 +215,16 @@ abstract Efl.Object ()
The user is in charge of freeing the data.
  ]]
  keys {
-key: string; [[the key associated with the data]]
+key: string; [[The key associated with the data]]
  }
  set {
 values {
-   data: const(void_ptr); [[the data to set]]
+   data: const(void_ptr); [[The data to set]]
 }
  }
  get {
 values {
-   data: void_ptr; [[the data to set]]
+   data: void_ptr; [[The data to set]]
 }
  }
   }
@@ -239,16 +240,16 @@ abstract Efl.Object ()
are shared and can store only one thing
  ]]
  keys {
-key: string; [[the key associated with the object ref]]
+key: string; [[The key associated with the object ref]]
  }
  set {
 values {
-   objdata: const(Efl.Object); [[the object to set]]
+   objdata: 

Re: [E-devel] eolian/c request: enums

2016-11-10 Thread marcel-hollerbach
Hi

On Thu, Nov 10, 2016 at 09:15:42PM +0900, Jean-Philippe André wrote:
> On 10 November 2016 at 18:49, Carsten Haitzler  wrote:
> 
> > On Wed, 9 Nov 2016 12:14:36 -0200 Gustavo Sverzut Barbieri <
> > barbi...@gmail.com>
> > said:
> >
> > > Hi all,
> > >
> > > I'm using Eo extensively and its Eolian works well, great work.
> > >
> > > But one thing that I struggle in my examples is to translate
> > > enumerations to string and back. I have to repeat that similar code in
> > > my examples and I wonder if Eolian should generate them for me... I
> > > guess so, what's your take on that?
> > >
> > > Also, please add another marker for "enum" that informs it's a
> > > bitwise, we just document that, but would be nice to have a formal way
> > > to inform. Maybe also something in the pass/return of values, to
> > > specify if it takes a single or multiple. Like this:
> > >
> > > enum @bitwise Mode {
> > > read, [[ being bitwise, no values means (1 << 0)]]
> > > write, [[ 1<<1 is automatic]]
> > > }
> > >
> > > generates:
> > > const char *mode_str_to(enum Mode); // for single entry
> > > enum Mode mode_str_from(const char *Mode); // for single entry
> > >
> > > const char *mode_bitmask_str_to(unsigned Mode); // for many entry
> >
> > this one above is going to suck for bitwise. you'd have to generate a
> > biffer -
> > you couldn't sanely generate "all combinations" and compile theme except
> > for
> > very trivial examples. then the q is - what buffer is this? a single one
> > isnt
> > very usable. :(
> >
> > jpeg brought this up today. he might expand on this. :)
> >
> 
> Yes. Based on raster's eina_freeq, we could create a temporary string API.
> 
> An API that, unlike eina_tmpstr, does not require any manual free. By
> definition, a string would be valid only for the current scope. (with a
> small gotcha if ecore_main_loop_iterate is called).

As far as i remember ecore_main_loop_iterate will not execute normal
idlers, so if this freeing is done in normal idlers, it wont be executed
even if ecore_main_loop_iterate was called. So this is not a issue.

> 
> At the moment, eina_freeq is used for "safety" but I think some kind of
> garbage collected objects API could be useful, especially for strings. That
> way we could simply return const char* in many places without having to
> worry about static allocation, or requiring the user to free each string.
> 
> 
> >
> > > unsigned mode_bitmask_str_from (const char *Mode); // for many entry
> > >
> > >
> > > the bitmask_str_to() as 'const char*' may be painful since we'd have
> > > to generate all combinations as static const char, but it's easier to
> > > use. Allocating and returning a value could be an alternative.
> 
> 
> > and this is pretty "UGH" unless we have a sane way of dealing with returns
> > -
> > freeing is posible but makes usage a pain. :(
> >
> > printf("have: %s\n", bitmask_str_from(x));
> >
> > :( cant do. need to store and free every time. :(
> >
> > > For methods we could use:
> > >
> > > class C () {
> > >  methods  {
> > >  open {
> > >   params {
> > >  mode: bitmask;
> > >   }
> > >  }
> > >  mode_get {
> > >return: bitmask;
> > >  }
> > >  }
> > > }
> > >
> > > This would generate functions that hints about mode to use but will
> > > take/return unsigned integers to avoid compilers saying the value
> > > doesn't exist in enum.
> > >
> > >
> > > --
> > > 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
> > >
> >
> >
> > --
> > - 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
> >
> >
> 
> 
> -- 
> Jean-Philippe André
> 

Re: [E-devel] eolian/c request: enums

2016-11-10 Thread Gustavo Sverzut Barbieri
On Thu, Nov 10, 2016 at 10:15 AM, Jean-Philippe André  wrote:
> On 10 November 2016 at 18:49, Carsten Haitzler  wrote:
>
>> On Wed, 9 Nov 2016 12:14:36 -0200 Gustavo Sverzut Barbieri <
>> barbi...@gmail.com>
>> said:
>>
>> > Hi all,
>> >
>> > I'm using Eo extensively and its Eolian works well, great work.
>> >
>> > But one thing that I struggle in my examples is to translate
>> > enumerations to string and back. I have to repeat that similar code in
>> > my examples and I wonder if Eolian should generate them for me... I
>> > guess so, what's your take on that?
>> >
>> > Also, please add another marker for "enum" that informs it's a
>> > bitwise, we just document that, but would be nice to have a formal way
>> > to inform. Maybe also something in the pass/return of values, to
>> > specify if it takes a single or multiple. Like this:
>> >
>> > enum @bitwise Mode {
>> > read, [[ being bitwise, no values means (1 << 0)]]
>> > write, [[ 1<<1 is automatic]]
>> > }
>> >
>> > generates:
>> > const char *mode_str_to(enum Mode); // for single entry
>> > enum Mode mode_str_from(const char *Mode); // for single entry
>> >
>> > const char *mode_bitmask_str_to(unsigned Mode); // for many entry
>>
>> this one above is going to suck for bitwise. you'd have to generate a
>> biffer -
>> you couldn't sanely generate "all combinations" and compile theme except
>> for
>> very trivial examples. then the q is - what buffer is this? a single one
>> isnt
>> very usable. :(
>>
>> jpeg brought this up today. he might expand on this. :)
>>
>
> Yes. Based on raster's eina_freeq, we could create a temporary string API.
>
> An API that, unlike eina_tmpstr, does not require any manual free. By
> definition, a string would be valid only for the current scope. (with a
> small gotcha if ecore_main_loop_iterate is called).
>
> At the moment, eina_freeq is used for "safety" but I think some kind of
> garbage collected objects API could be useful, especially for strings. That
> way we could simply return const char* in many places without having to
> worry about static allocation, or requiring the user to free each string.

full ACK on that.

also, I wish we could go systemd's route and simply rely on GCC
attribute cleanup on our code. Not sure it works for returns, but in
all other places it ditches half of the code, things like:

  x = open()
 if (!done(x)) goto error;
 other(x);
 close(x);
 return;
 error:
  close(x);

becomes simply:

  __attribute__(cleanup(close)) x = NULL;
  x = open();
  if (!done) return;
  other(x);

It's pretty much like C++ destructors that get called when variable go
out of scope...

Real example 
https://github.com/systemd/systemd/blob/master/src/core/load-fragment.c#L366







-- 
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: fix install on clean system

2016-11-10 Thread Andrii Kroitor
lorddrew pushed a commit to branch master.

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

commit fd646e79e32c37b2423bf750b1e41ec6ee6b620b
Author: Andrii Kroitor 
Date:   Thu Nov 10 14:06:04 2016 +0200

fix install on clean system

After 98fe627ca41f648e0dbf4e0072efa05057f273ca Ecore_Con depends on eldbus.
So we need eldbus to be installed before Ecore_Con.
---
 src/Makefile.am | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index 9e12fdc..32b70d4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -38,6 +38,7 @@ include Makefile_Eolian.am
 include Makefile_Ector.am
 include Makefile_Ecore.am
 include Makefile_Evas.am
+include Makefile_Eldbus.am
 include Makefile_Ecore_Con.am
 include Makefile_Ecore_Ipc.am
 include Makefile_Ecore_File.am
@@ -54,7 +55,6 @@ include Makefile_Ecore_Win32.am
 include Makefile_Ecore_X.am
 include Makefile_Ecore_IMF.am
 include Makefile_Ecore_IMF_Evas.am
-include Makefile_Eldbus.am
 include Makefile_Elput.am
 include Makefile_Ecore_Drm.am
 include Makefile_Ecore_Drm2.am

-- 




Re: [E-devel] eolian/c request: enums

2016-11-10 Thread Jean-Philippe André
On 10 November 2016 at 18:49, Carsten Haitzler  wrote:

> On Wed, 9 Nov 2016 12:14:36 -0200 Gustavo Sverzut Barbieri <
> barbi...@gmail.com>
> said:
>
> > Hi all,
> >
> > I'm using Eo extensively and its Eolian works well, great work.
> >
> > But one thing that I struggle in my examples is to translate
> > enumerations to string and back. I have to repeat that similar code in
> > my examples and I wonder if Eolian should generate them for me... I
> > guess so, what's your take on that?
> >
> > Also, please add another marker for "enum" that informs it's a
> > bitwise, we just document that, but would be nice to have a formal way
> > to inform. Maybe also something in the pass/return of values, to
> > specify if it takes a single or multiple. Like this:
> >
> > enum @bitwise Mode {
> > read, [[ being bitwise, no values means (1 << 0)]]
> > write, [[ 1<<1 is automatic]]
> > }
> >
> > generates:
> > const char *mode_str_to(enum Mode); // for single entry
> > enum Mode mode_str_from(const char *Mode); // for single entry
> >
> > const char *mode_bitmask_str_to(unsigned Mode); // for many entry
>
> this one above is going to suck for bitwise. you'd have to generate a
> biffer -
> you couldn't sanely generate "all combinations" and compile theme except
> for
> very trivial examples. then the q is - what buffer is this? a single one
> isnt
> very usable. :(
>
> jpeg brought this up today. he might expand on this. :)
>

Yes. Based on raster's eina_freeq, we could create a temporary string API.

An API that, unlike eina_tmpstr, does not require any manual free. By
definition, a string would be valid only for the current scope. (with a
small gotcha if ecore_main_loop_iterate is called).

At the moment, eina_freeq is used for "safety" but I think some kind of
garbage collected objects API could be useful, especially for strings. That
way we could simply return const char* in many places without having to
worry about static allocation, or requiring the user to free each string.


>
> > unsigned mode_bitmask_str_from (const char *Mode); // for many entry
> >
> >
> > the bitmask_str_to() as 'const char*' may be painful since we'd have
> > to generate all combinations as static const char, but it's easier to
> > use. Allocating and returning a value could be an alternative.


> and this is pretty "UGH" unless we have a sane way of dealing with returns
> -
> freeing is posible but makes usage a pain. :(
>
> printf("have: %s\n", bitmask_str_from(x));
>
> :( cant do. need to store and free every time. :(
>
> > For methods we could use:
> >
> > class C () {
> >  methods  {
> >  open {
> >   params {
> >  mode: bitmask;
> >   }
> >  }
> >  mode_get {
> >return: bitmask;
> >  }
> >  }
> > }
> >
> > This would generate functions that hints about mode to use but will
> > take/return unsigned integers to avoid compilers saying the value
> > doesn't exist in enum.
> >
> >
> > --
> > 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
> >
>
>
> --
> - 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
>
>


-- 
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] eolian/c request: enums

2016-11-10 Thread Gustavo Sverzut Barbieri
On Thu, Nov 10, 2016 at 7:49 AM, Carsten Haitzler  wrote:
> On Wed, 9 Nov 2016 12:14:36 -0200 Gustavo Sverzut Barbieri 
> 
> said:
>
>> Hi all,
>>
>> I'm using Eo extensively and its Eolian works well, great work.
>>
>> But one thing that I struggle in my examples is to translate
>> enumerations to string and back. I have to repeat that similar code in
>> my examples and I wonder if Eolian should generate them for me... I
>> guess so, what's your take on that?
>>
>> Also, please add another marker for "enum" that informs it's a
>> bitwise, we just document that, but would be nice to have a formal way
>> to inform. Maybe also something in the pass/return of values, to
>> specify if it takes a single or multiple. Like this:
>>
>> enum @bitwise Mode {
>> read, [[ being bitwise, no values means (1 << 0)]]
>> write, [[ 1<<1 is automatic]]
>> }
>>
>> generates:
>> const char *mode_str_to(enum Mode); // for single entry
>> enum Mode mode_str_from(const char *Mode); // for single entry
>>
>> const char *mode_bitmask_str_to(unsigned Mode); // for many entry
>
> this one above is going to suck for bitwise. you'd have to generate a biffer -
> you couldn't sanely generate "all combinations" and compile theme except for
> very trivial examples. then the q is - what buffer is this? a single one isnt
> very usable. :(

I know, as I wrote later down. Ideally return const is more helpful,
but it must be able to deliver more than one entry, like this:

   printf("%s x %s\n", bitmask_to_str(before), bitmask_to_str(after));

if we do an internal static char and print over it many times, they
will look the same in the printf.

Then I was thinking about either be simple and return non-const,
requires an intermediate variable and free, or use some freeq() like
system that will postpone to next mainloop iteration free.


> jpeg brought this up today. he might expand on this. :)

willing to read...



HOWEVER, implementation details aside, generating and having such
information would be good. In Python, for example, you could do a
simple number-to-object map and create an instance with proper
__str__/__repr__ methods so they print well and the language takes
care of ref/unref.

-- 
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] [tools/eflete] master 01/01: Fix genereation path to the eflete_exporter under Windows.

2016-11-10 Thread Mykyta Biliavskyi
rimmed pushed a commit to branch master.

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

commit eee8770309421c848988be6976f7c504fb932654
Author: Mykyta Biliavskyi 
Date:   Thu Nov 10 13:23:33 2016 +0200

Fix genereation path to the eflete_exporter under Windows.

Added extension macro EXT == ".exe". On Windows platform eflete_exporter
will replaced by eflete_exporter.exe.
Also expanded elm_app_info_set by add app_init function pointer and magic
file "layouts/eflete.edj". Both this arguments is helpful for more
accurate searching prefixes.

@fix
T4890
---
 src/bin/eflete.c | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/bin/eflete.c b/src/bin/eflete.c
index fd23084..4188ac5 100644
--- a/src/bin/eflete.c
+++ b/src/bin/eflete.c
@@ -21,7 +21,11 @@
 #include "main_window.h"
 #include "shortcuts.h"
 #include "config.h"
+
+#define EXT ""
 #ifdef _WIN32
+#undef EXT
+#define EXT ".exe"
 #include "win32.h"
 #endif
 
@@ -74,7 +78,7 @@ app_init()
 
if (!config_init()) return false;
 
-   elm_app_info_set(NULL, "eflete", NULL);
+   elm_app_info_set(app_init, "eflete", "layouts/eflete.edj");
 
 #define PATH_CHECK(LOCALE, CURRENT, DIR_PATH, MESSAGE) \
snprintf(buf, sizeof(buf), "%s/%s", DIR_PATH, LOCALE); \
@@ -100,7 +104,7 @@ app_init()
   elm_app_data_dir_get(), "Default layouts is missing");
ap.path.layout_edj = eina_stringshare_add(buf);
 
-   PATH_CHECK("eflete_exporter", "src/bin/eflete_exporter",
+   PATH_CHECK("eflete_exporter"EXT, "src/bin/eflete_exporter"EXT,
   elm_app_bin_dir_get(), "Eflete_exporter is missing");
ap.path.exporter = eina_stringshare_add(buf);
 

-- 




Re: [E-devel] EFL packaging on Debian

2016-11-10 Thread Stefan Schmidt
Hello.

On 14/10/16 15:46, Ross Vandegrift wrote:
> On Fri, Oct 14, 2016 at 09:58:39AM +0200, Stefan Schmidt wrote:
>> I just did my monthly round to update our packaging status and happily
>> saw that your packaging for efl 1.18.1 and e 0.21.2 hit experimental.
>> Congrats and thanks for your persistent work on getting this moved forward!
>
> Thanks Stefan!

I did my monthly packaging update again and was hoping this moved to 
unstable by now. It is still in experimental only as far as I can see. 
Is there an automatic way this packages get from experimental to 
unstable, testing stable? Or are you supposed to pursue Albin again to 
get it uploaded to unstable?

regards
Stefan Schmidt


--
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] eolian/c request: enums

2016-11-10 Thread The Rasterman
On Wed, 9 Nov 2016 12:14:36 -0200 Gustavo Sverzut Barbieri 
said:

> Hi all,
> 
> I'm using Eo extensively and its Eolian works well, great work.
> 
> But one thing that I struggle in my examples is to translate
> enumerations to string and back. I have to repeat that similar code in
> my examples and I wonder if Eolian should generate them for me... I
> guess so, what's your take on that?
> 
> Also, please add another marker for "enum" that informs it's a
> bitwise, we just document that, but would be nice to have a formal way
> to inform. Maybe also something in the pass/return of values, to
> specify if it takes a single or multiple. Like this:
> 
> enum @bitwise Mode {
> read, [[ being bitwise, no values means (1 << 0)]]
> write, [[ 1<<1 is automatic]]
> }
> 
> generates:
> const char *mode_str_to(enum Mode); // for single entry
> enum Mode mode_str_from(const char *Mode); // for single entry
> 
> const char *mode_bitmask_str_to(unsigned Mode); // for many entry

this one above is going to suck for bitwise. you'd have to generate a biffer -
you couldn't sanely generate "all combinations" and compile theme except for
very trivial examples. then the q is - what buffer is this? a single one isnt
very usable. :(

jpeg brought this up today. he might expand on this. :)

> unsigned mode_bitmask_str_from (const char *Mode); // for many entry
> 
> 
> the bitmask_str_to() as 'const char*' may be painful since we'd have
> to generate all combinations as static const char, but it's easier to
> use. Allocating and returning a value could be an alternative.

and this is pretty "UGH" unless we have a sane way of dealing with returns -
freeing is posible but makes usage a pain. :(

printf("have: %s\n", bitmask_str_from(x));

:( cant do. need to store and free every time. :(

> For methods we could use:
> 
> class C () {
>  methods  {
>  open {
>   params {
>  mode: bitmask;
>   }
>  }
>  mode_get {
>return: bitmask;
>  }
>  }
> }
> 
> This would generate functions that hints about mode to use but will
> take/return unsigned integers to avoid compilers saying the value
> doesn't exist in enum.
> 
> 
> -- 
> 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
> 


-- 
- 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] efl_event_callback_call() event_info as const?

2016-11-10 Thread The Rasterman
On Thu, 10 Nov 2016 00:49:01 -0200 Gustavo Sverzut Barbieri
 said:

> Hi,
> 
> event_callback_call() gets an 'event_info' that is currently defined
> as a `void *`, but when we pass some read-only value, such as a
> pointer to Eina_Error or some static const string, then we must cast
> and it's nasty.
> 
> Should we make it `const(void_ptr)`?

how do u plan to handle hold event flags then if these are then always const
(read only always)?


-- 
- 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