[EGIT] [tools/enventor] master 01/01: auto_comp: fix memory leak.

2016-08-26 Thread Hermet Park
hermet pushed a commit to branch master.

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

commit 755da93bffc99a0386dac96aa2878b55817cff79
Author: Hermet Park 
Date:   Sat Aug 27 15:58:12 2016 +0900

auto_comp: fix memory leak.
---
 src/lib/auto_comp.c | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/lib/auto_comp.c b/src/lib/auto_comp.c
index f99277b..223e0c7 100644
--- a/src/lib/auto_comp.c
+++ b/src/lib/auto_comp.c
@@ -328,7 +328,12 @@ context_lexem_thread_end_cb(void *data, Ecore_Thread 
*thread EINA_UNUSED)
 {
ctx_lexem_td *td = (ctx_lexem_td *)data;
 
-   if (!td->ad || (td->ad->cltd != td)) return;
+   if (!td->ad || (td->ad->cltd != td))
+ {
+free(td->utf8);
+free(td);
+return;
+ }
 
td->ad->lexem_ptr = td->result;
 

-- 




[EGIT] [tools/enventor] master 01/01: fix make distcheck errors.

2016-08-26 Thread Hermet Park
hermet pushed a commit to branch master.

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

commit c9ac1d8f50e9f62f0675f94c912850479a49cd96
Author: Hermet Park 
Date:   Sat Aug 27 15:45:58 2016 +0900

fix make distcheck errors.
---
 po/POTFILES.in  |   1 -
 po/en.po| 356 ++--
 po/enventor.pot | 358 ++--
 po/ru.po| 468 +++-
 src/include/Makefile.am |   5 +-
 5 files changed, 750 insertions(+), 438 deletions(-)

diff --git a/po/POTFILES.in b/po/POTFILES.in
index 982d79a..f8e371a 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -2,7 +2,6 @@ src/bin/base_gui.c
 src/bin/config_data.c
 src/bin/console.c
 src/bin/file_mgr.c
-src/bin/globals.c
 src/bin/goto.c
 src/bin/live_edit.c
 src/bin/main.c
diff --git a/po/en.po b/po/en.po
index 5e244a5..7c9dcda 100644
--- a/po/en.po
+++ b/po/en.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: enventor 0.6.0\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-06-05 13:38+0900\n"
+"POT-Creation-Date: 2016-08-27 15:43+0900\n"
 "PO-Revision-Date: 2015-11-17 17:37+\n"
 "Last-Translator: nikawhite belyavski...@gmail.com \n"
 "Language-Team: \n"
@@ -16,399 +16,481 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/bin/base_gui.c:67
+#: src/bin/base_gui.c:70
 #, c-format
 msgid "%s - Enventor"
 msgstr ""
 
-#: src/bin/config_data.c:72
+#: src/bin/config_data.c:76
 msgid "Failed to generate tmp folder!"
 msgstr ""
 
-#: src/bin/config_data.c:91 src/bin/config_data.c:104
+#: src/bin/config_data.c:97
 #, c-format
 msgid "Cannot create a config folder \"%s\""
 msgstr ""
 
-#: src/bin/config_data.c:115
+#: src/bin/config_data.c:111
+#, c-format
+msgid "Cannot create a enventor config folder \"%s\""
+msgstr ""
+
+#: src/bin/config_data.c:122
 #, c-format
 msgid "Cannot save a config file \"%s\""
 msgstr ""
 
-#: src/bin/config_data.c:157
+#: src/bin/config_data.c:161
 #, c-format
 msgid "Cannot load a config file \"%s\""
 msgstr ""
 
-#: src/bin/config_data.c:165 src/bin/file_mgr.c:193 src/bin/goto.c:136
-#: src/bin/menu.c:613 src/bin/newfile.c:144 src/bin/panes.c:321
-#: src/bin/search.c:337 src/bin/setting.c:187 src/bin/statusbar.c:312
-#: src/bin/text_setting.c:405 src/bin/text_setting.c:456
-#: src/bin/text_setting.c:487 src/bin/text_setting.c:956 src/bin/tools.c:186
+#: src/bin/config_data.c:169
 msgid "Failed to allocate Memory!"
 msgstr ""
 
-#: src/bin/file_mgr.c:71
+#: src/bin/file_mgr.c:89
 msgid "EDC has been changed on the file system."
 msgstr ""
 
-#: src/bin/file_mgr.c:73
+#: src/bin/file_mgr.c:91
 msgid "Do you want to replace the contents?"
 msgstr ""
 
-#: src/bin/file_mgr.c:84
+#: src/bin/file_mgr.c:102
 msgid "Save As"
 msgstr ""
 
-#: src/bin/file_mgr.c:92 src/bin/search.c:407
+#: src/bin/file_mgr.c:110 src/bin/search.c:421
 msgid "Replace"
 msgstr ""
 
-#: src/bin/file_mgr.c:98
+#: src/bin/file_mgr.c:116
 msgid "Ignore"
 msgstr ""
 
-#: src/bin/file_mgr.c:157
+#: src/bin/file_mgr.c:197
 #, c-format
 msgid "File saved. \"%s\""
 msgstr ""
 
-#: src/bin/file_mgr.c:159
+#: src/bin/file_mgr.c:199
 #, c-format
 msgid "Already saved. \"%s\""
 msgstr ""
 
-#: src/bin/goto.c:93
+#: src/bin/goto.c:78
 msgid "Invalid line number"
 msgstr ""
 
-#: src/bin/goto.c:142
+#: src/bin/goto.c:133
 msgid "Enventor Goto Line"
 msgstr ""
 
-#: src/bin/goto.c:146
+#: src/bin/goto.c:137
 msgid "Go to Line"
 msgstr ""
 
-#: src/bin/goto.c:168
+#: src/bin/goto.c:158
 #, c-format
 msgid "Enter line number [1..%d]:"
 msgstr ""
 
-#: src/bin/goto.c:192 src/bin/menu.c:150
+#: src/bin/goto.c:182 src/bin/menu.c:154
 msgid "Ok"
 msgstr ""
 
-#: src/bin/goto.c:204 src/bin/search.c:429
+#: src/bin/goto.c:194 src/bin/search.c:443
 msgid "Failed to grab key - Escape"
 msgstr ""
 
-#: src/bin/live_edit.c:2019 src/bin/live_edit.c:2063 src/bin/live_edit.c:2065
-#: src/bin/main.c:850 src/lib/auto_comp.c:369 src/lib/ctxpopup.c:766
+#: src/bin/live_edit.c:2020 src/bin/live_edit.c:2057 src/bin/live_edit.c:2059
+#: src/bin/main.c:870 src/lib/auto_comp.c:413 src/lib/ctxpopup.c:779
 #, c-format
 msgid "Failed to grab key - %s"
 msgstr ""
 
-#: src/bin/live_edit.c:2132
+#: src/bin/live_edit.c:2140
 msgid ""
-"Double click part to confirm. (Esc = cancel, Direction Key = move item per "
-"pixel, Ctrl = disable auto-aligning)"
+"Double click part to confirm.(Esc = cancel, Direction Key = move item per "
+"pixel,Ctrl = disable auto-aligning)"
 msgstr ""
 
-#: src/bin/live_edit.c:2280
-msgid "Faild to allocate Memory!"
+#: src/bin/live_edit.c:2160
+msgid ""
+"Add a Rect part to the live view.A Rect part is used as a solid "
+"colorcomponent or clipping other components."
+msgstr ""
+
+#: src/bin/live_edit.c:2166
+msgid ""
+"Add a Text part to the live view.A Text part is used for plain text."
 ms

[EGIT] [tools/enventor] master 01/01: update readme.

2016-08-26 Thread Hermet Park
hermet pushed a commit to branch master.

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

commit bf82057a78038ba2f4af11572bfe0fbf9aacf830
Author: Hermet Park 
Date:   Sat Aug 27 15:40:27 2016 +0900

update readme.

remove elementary package dependency
---
 README | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/README b/README
index 804b03c..d1e1952 100644
--- a/README
+++ b/README
@@ -7,9 +7,8 @@ When your application requires real-time changeable layouts 
like animated ones,
 [Requirements]
 
   efl (>= 1.18.0)
-  elementary (>= 1.18.0)
 
-Please note that some features may not quite function correctly or completely 
prior to EFL 1.17. Newer would be better.
+Please note that some features may not quite function correctly or completely 
prior to EFL 1.18. Newer would be better.
 
 Please see the following sites for more information.
 

-- 




[EGIT] [tools/enventor] master 01/01: updated Enventor introduction.

2016-08-26 Thread Hermet Park
hermet pushed a commit to branch master.

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

commit 64bd230f2c0b9c1caae6ca874d5f3c2a9d9b11c3
Author: Hermet Park 
Date:   Sat Aug 27 15:37:34 2016 +0900

updated Enventor introduction.
---
 README  | 4 ++--
 data/help/INTRO | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/README b/README
index ec2d0cf..804b03c 100644
--- a/README
+++ b/README
@@ -1,8 +1,8 @@
 [Enventor v1.0.0]
 
-Enventor, which is also known as EDC (Edje Data Collections) Editor, is a EDC 
script editor tool that supports text edit function and preview function for 
EDC source code.
+Enventor, which is also known as EDC (Edje Data Collections) Editor, is a EDC 
script editor tool that supports text editing and previewing functions for the 
EDC source code.
 
-When your application ral-time changeable layouts like animated ones, then you 
could write those layout design using EDC script, compile it to EDJ format file 
then import it into your application using an UI layout component. But not only 
for that, you can write any kinds of design layouts from simple to complex ones 
if you use EDC script with Enventor. Enventor helps you write EDC script code 
eaiser and finish your work faster. If you are not familiar with EDC 
programming, then please v [...]
+When your application requires real-time changeable layouts like animated 
ones, then you can write the layout design using EDC script, compile it into 
EDJ format file, and import it into your application using a UI layout 
component. You can also write design layouts from simple to complex ones using 
the EDC script with Enventor. Enventor helps you write EDC script code eaiser 
and finish your work faster. If you are not familiar with EDC programming, see 
Edje Programming Guide - https://w [...]
 
 [Requirements]
 
diff --git a/data/help/INTRO b/data/help/INTRO
index 084ad56..333c061 100644
--- a/data/help/INTRO
+++ b/data/help/INTRO
@@ -1,8 +1,8 @@
-1Enventor v1.0.0
+Enventor v1.0.0
 
-Enventor, which is also known as EDC (Edje Data Collections) Editor, is a EDC 
script editor tool that supports text edit function and preview function for 
EDC source code
+Enventor, which is also known as EDC (Edje Data Collections) Editor, is a EDC 
script editor tool that supports text editing and previewing functions for the 
EDC source code.
 
-When your application ral-time changeable layouts like animated ones, then you 
could write those layout design using EDC script, compile it to EDJ format file 
then import it into your application using an UI layout component. But not only 
for that, you can write any kinds of design layouts from simple to complex ones 
if you use EDC script with Enventor. Enventor helps you write EDC script code 
eaiser and finish your work faster. If you are not familiar with EDC 
programming, then please v [...]
+When your application requires real-time changeable layouts like animated 
ones, then you can write the layout design using EDC script, compile it into 
EDJ format file, and import it into your application using a UI layout 
component. You can also write design layouts from simple to complex ones using 
the EDC script with Enventor. Enventor helps you write EDC script code eaiser 
and finish your work faster. If you are not familiar with EDC programming, see 
Edje Programming Guide - https://w [...]
 
 Please see the following sites for more information.
 

-- 




Re: [E-devel] Callback arrays and callback invocation optimisations

2016-08-26 Thread Cedric BAIL
On Fri, Aug 26, 2016 at 5:44 PM, Carsten Haitzler  wrote:
> On Fri, 26 Aug 2016 12:15:57 -0700 Cedric BAIL  said:
>> On Fri, Aug 26, 2016 at 2:46 AM, Tom Hacohen  wrote:
>> > On 24/08/16 20:03, Cedric BAIL wrote:
>> >> On Wed, Aug 24, 2016 at 2:24 AM, Tom Hacohen  wrote:
>> >>> On 23/08/16 18:51, Cedric BAIL wrote:
>>  On Tue, Aug 23, 2016 at 3:31 AM, Tom Hacohen  
>>  wrote:



>> > We can also store a pointer to the array in a hash table with the key
>> > being some sort of a hash of the array in order to do some 
>> > deduplication
>> > afterwards (point to the same arrays, but obviously different private
>> > data, so that would still be duplicated) if we feel it's needed. It
>> > probably won't save as much though and will have some running costs.
>> 
>>  For anything < 16 entries, I bet that a hash table will be slower than
>>  walking an array. Don't forget you need to compute the hash key, jump
>>  in an array, walk down a rbtree and finally iterate over a list. Hash
>>  are good for very large number of object, not for small number.
>> >>>
>> >>> That was an optimisation that I just threw out there to the world, but I
>> >>> believe you misunderstood me. I didn't mean we create a hash table for
>> >>> calling events, it was for saving memory and deduplicating event
>> >>> callbacks (essentially callback arrays automatically). This is only done
>> >>> on callback add/del.
>> >>
>> >> Indeed I missunderstood your intent. Still this will increase the cost
>> >> of insertion for no benefit in my opinion. See below.
>> >
>> > Again, this is a side comment, not that important.
>>
>> I have discovered that this is an important use case actually. We do
>> insert and remove callback quite a lot now that animator is an event
>> on an object. We do already spend nearly as much time doing
>> efl_event_callback_priority_add (0.90% for 110 000 calls),
>> efl_event_callback_array_priority_add (0.49% for 110 000 calls),
>> efl_event_callback_array_del (0.27% for 40 000 calls) and
>> efl_event_callback_del (0.93% for 110 000 calls). The cost of adding
>> and destroying events is not negligeable. It is, cumulatively,
>> actually higher than our current cost for calling events.
>
> something to optimize. :) having priority doesn't help us a lot here as we 
> have
> to walk a lot of list nodes and pull in a lot of l1 cache pages to do the
> insert given priority. if we sort also by event ptr it wont really matter.
>
> if we move to an array of event ptrs for events then we likely will pull in 
> all
> existing event id's in 1 l1 cache line fetch and this will very likely make
> insert and remove a lot faster.

Uh ? Removing from an array is costly as you have to deal with hole !
That's why we rely on list so much. How do you think we can deal
faster with array ? Doing an sorted insert on priority add, should
actually help to make destruction faster... at likely the cost of
increasing insertion... Not so sure there is much to be done there. I
may be wrong, but maybe an easy way to speedup allocation/destruction
of single callback is to have an allocation cache using Eina_Trash,
will try that next week. I don't have the benchmark result at hand
anymore.

> to do this we have to redesign our internal structures. i think with callback
> arrays we should also have the callback array content duplicated internally in
> more optimal memory layout thus it no longer NEEDS to be "static const" and
> stay around for as long as the object does. we will spend some more cycles
> hashing the cb array and looking up an existing copy and refcounting it. yes
> this means it will be another l1 cache fetch possible, tho its a shared bit of
> mem so if use often it may be in l1 cache already unlike the per-object cb
> arrays.

Outch deduplication will make insertion and removal way more costly !
Right now, we just prepend in a short list, going with deduplication
will be imply hashing and compare. This is clearly going to have a
high cost for all add/del operation. We can't reduce the call to
registering events on object, we can on emitting events. This
prioritize the design decision we are making here.



>> As for the hash and compare, this is a reference to your previous
>> comment saying that you could deduplicate the callbacks after they are
>> inserted. I don't see how you can implement a deduplication without a
>> hash and compare. And this likely as to be done at insertion time (and
>> at removal too).
>
> the de-dup would likely use a hash to avoid larger more expensive "memcmp's"
> against several instances. also by duplicating we make this doable via 
> bindings
> which is currently is not (except c++). ALSO with a relayout we likely can 
> make
> insert and deletion faster.

Uh ? How ? Right now, it is just walking a short list and inserting
in. There is no hash computation, no memcmp, no memcpy, no additional
cost. Sure only C++ can easily leverage the array, but I am not su

[EGIT] [core/efl] master 01/01: elm focus: focus_auto_hide should be done with mouse_down

2016-08-26 Thread WooHyun Jung
woohyun pushed a commit to branch master.

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

commit d553a5a836d73927569d3449aeaa5e33f82663b6
Author: WooHyun Jung 
Date:   Sat Aug 27 13:48:35 2016 +0900

elm focus: focus_auto_hide should be done with mouse_down

Focus highlight can be on the air, when focused object in scroller is
moved by mouse down and move.
So, mouse up is not proper for executing focus_auto_hide.

@fix
---
 src/lib/elementary/elm_widget.c | 14 --
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index b73661c..136d67f 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -294,10 +294,15 @@ _obj_mouse_down(void *data,
 Evas_Object *obj EINA_UNUSED,
 void *event_info)
 {
+   Evas_Object *top;
+
ELM_WIDGET_DATA_GET(data, sd);
Evas_Event_Mouse_Down *ev = event_info;
-   if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
- sd->still_in = EINA_TRUE;
+   if ((ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)) return;
+
+   top = elm_widget_top_get(data);
+   if (top && efl_isa(top, EFL_UI_WIN_CLASS)) _elm_win_focus_auto_hide(top);
+   sd->still_in = EINA_TRUE;
 }
 
 static void
@@ -4059,12 +4064,9 @@ elm_widget_focus_mouse_up_handle(Evas_Object *obj)
 EOLIAN static void
 _elm_widget_focus_mouse_up_handle(Eo *obj, Elm_Widget_Smart_Data *_pd 
EINA_UNUSED)
 {
-   Evas_Object *top;
-
if (!obj) return;
if (!_is_focusable(obj)) return;
-   top = elm_widget_top_get(obj);
-   if (top && efl_isa(top, EFL_UI_WIN_CLASS)) _elm_win_focus_auto_hide(top);
+
elm_widget_focus_steal(obj, NULL);
 }
 

-- 




Re: [E-devel] E/ELM fdo icon config issues

2016-08-26 Thread Simon Lees


On 08/27/2016 11:46 AM, Carsten Haitzler (The Rasterman) wrote:
> On Fri, 26 Aug 2016 10:04:51 +0200 Davide Andreoli 
> said:
> 
>> Hi all (Andrew in particular)
>>
>> I really think we have 2 issue in the way we let the user configure the fdo
>> icon theme for their system.
>>
>> 1. In the E config we have a list of fdo themes and 2 checkbox:
>>   * Enable for applications
>>   * Enable for Enlightenment
>>
>> The first one will set the theme for GTK and ELM, I really think we need to
>> spit this in 2 different checks, one for ELM and one for non-efl apps.
>> Without this separation there are useful configuration that are really hard
>> to make.
> 
> that requires a new release of e... so for now tghis says "i'll tell apps to
> use icon theme X - but app may or may not listen"
> 
> elm will choose to listen based on elm config values. :)
> 
>> For example I use on my system the Mint-X theme for GTK app and the default
>> for ELM, to make this configuration I need to:
>>  * Open the E config and choose Mint-X (this also change ELM to use Mint-X)
>>  * Then open the ELM config and choose "Use elementary icons"
> 
> you have to change elm's config settings? is e messing with elm's config here?
> 
> you shouldnt have to change elm's config settings here (unless e  offered all
> the config options - as opposed to a subset
> 
>> After this every time I want to change the theme for gtk (maybe I want to
>> try a new theme) I need to go again in the ELM config and change it back.
>> So we really need a new checkbox "Enable for ELM" that, if checked will set
>> the fdo theme in the elm config, while if not checked will reset elm to use
>> the icons included in the theme.
>>
>>
>> 2. The Enlightenment-X fdo theme that we are providing is only meant to be
>> used with non-efl applications, using it with elm is an incredibly waste of
> 
> agreed.
> 
>> resource as they are exactly the same icons provided in the elm theme (full
>> fdo lookup instead of just pick from the edj file).
> 
> correct.
> 
>> We really need to automatically set elm to use internal icons when the user
>> select the Enlightenment-X theme in both the E config dialog and the ELM
>> one.
> 
> well enlightenment seemingly has to do this... then.

To do this properly the info about the corresponding icon theme needs to
be embedded in the edj file and read out, because for example I might
create a Elementary theme called "Bob" and then create the "Bob-X" icon
theme for non elementary apps. I more realistic scenario is that
openSUSE ships by default with a recolored version of the default theme
and I was going to look at also recoloring Enlightenment-X to match that
theme and calling it slightly different name. All my themes will
eventually have there own icon set and matching FDO icon set (that or
i'll pick someone else's that I like). So I don't think we should
explicitly hard code a solution just for the default theme and
Enlightenment-X but if we do something it should support all themes.

> 
>> As for the implementation of this one: maybe is enough to change the
>> ELM_CONFIG_ICON_THEME_ELEMENTARY define to "Enlightenment-X" ?
>>
>>
>> If no one have objections I would ask Andrew to implement/fix this 2 issues
>>
>> Thanks
>> davemds


-- 

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

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



signature.asc
Description: OpenPGP digital signature
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] E/ELM fdo icon config issues

2016-08-26 Thread The Rasterman
On Fri, 26 Aug 2016 10:04:51 +0200 Davide Andreoli 
said:

> Hi all (Andrew in particular)
> 
> I really think we have 2 issue in the way we let the user configure the fdo
> icon theme for their system.
> 
> 1. In the E config we have a list of fdo themes and 2 checkbox:
>   * Enable for applications
>   * Enable for Enlightenment
> 
> The first one will set the theme for GTK and ELM, I really think we need to
> spit this in 2 different checks, one for ELM and one for non-efl apps.
> Without this separation there are useful configuration that are really hard
> to make.

that requires a new release of e... so for now tghis says "i'll tell apps to
use icon theme X - but app may or may not listen"

elm will choose to listen based on elm config values. :)

> For example I use on my system the Mint-X theme for GTK app and the default
> for ELM, to make this configuration I need to:
>  * Open the E config and choose Mint-X (this also change ELM to use Mint-X)
>  * Then open the ELM config and choose "Use elementary icons"

you have to change elm's config settings? is e messing with elm's config here?

you shouldnt have to change elm's config settings here (unless e  offered all
the config options - as opposed to a subset

> After this every time I want to change the theme for gtk (maybe I want to
> try a new theme) I need to go again in the ELM config and change it back.
> So we really need a new checkbox "Enable for ELM" that, if checked will set
> the fdo theme in the elm config, while if not checked will reset elm to use
> the icons included in the theme.
> 
> 
> 2. The Enlightenment-X fdo theme that we are providing is only meant to be
> used with non-efl applications, using it with elm is an incredibly waste of

agreed.

> resource as they are exactly the same icons provided in the elm theme (full
> fdo lookup instead of just pick from the edj file).

correct.

> We really need to automatically set elm to use internal icons when the user
> select the Enlightenment-X theme in both the E config dialog and the ELM
> one.

well enlightenment seemingly has to do this... then.

> As for the implementation of this one: maybe is enough to change the
> ELM_CONFIG_ICON_THEME_ELEMENTARY define to "Enlightenment-X" ?
> 
> 
> If no one have objections I would ask Andrew to implement/fix this 2 issues
> 
> Thanks
> davemds
> --
> ___
> 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


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


Re: [E-devel] Callback arrays and callback invocation optimisations

2016-08-26 Thread The Rasterman
On Fri, 26 Aug 2016 12:15:57 -0700 Cedric BAIL  said:

> On Fri, Aug 26, 2016 at 2:46 AM, Tom Hacohen  wrote:
> > On 24/08/16 20:03, Cedric BAIL wrote:
> >> On Wed, Aug 24, 2016 at 2:24 AM, Tom Hacohen  wrote:
> >>> On 23/08/16 18:51, Cedric BAIL wrote:
>  On Tue, Aug 23, 2016 at 3:31 AM, Tom Hacohen  
>  wrote:
> >>
> >> 
> >>
> > However, while they provide a nice memory improvement, they have been
> > hampering many optimisation strategies that would make callback
> > invocation significantly faster. Furthermore, maybe (not sure), we can
> > automatically de-duplicate event lists internally (more on that in a
> > moment). With that being said, there is a way we can maybe keep array
> > callbacks with some limitations.
> 
>  Do you have a case where performance are impacted by callback today ?
>  I have found that we usually have a very small number of callbacks
>  (likely in an array this days) and when speed did really matter it was
>  just best to not trigger the callback at all (That's why we have this
>  code in many place that count if any callback has been registered).
> >>>
> >>> It always showed up in callgrind. Obviously after you did your changes
> >>> that improved things, because you essentially just don't call that code,
> >>> but having to do this everywhere is a bit of a pain, especially if we
> >>> can just make callbacks fast on their own.
> >>>
> >>> Callback_call takes around 1.5% in the efl atm. Though if we remove the
> >>> not-call optimisations it would be much more again. I wonder if we can
> >>> reach good results without it.
> >>
> >> When genlist is scrolling, just calling a function is costly as we end
> >> up calling it million times, litterally. I seriously doubt it is
> >> possible.
> >
> > And yet, this is one of the functions that stand out and not others that
> > are "just called".
> 
> Can you share your test case ? I can't reproduce a way where it does
> stand out. It barelly register at 1% in my benchmark. It is maybe in
> position 20 of the most costly function call. After malloc, free,
> mutex_lock/unlock, eina_hash_superfast (I think I can optimize that
> one easily).

speaking of malloc/free overhead:

https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919/

scroll to the bottom for some graphs. and the graphs are not the raw
malloc/free performance itself but overall "webserver throughput" as a result
of switching malloc implementations. we might not get as much a boost...

it smells like it'd be good to have our own allocators for as much memory as we
can and maybe ship jemalloc with eina. no - don't REPLACE libc malloc/free
entirely for a process, but at least our own usage of it where our external
api doesn't require someone free something with libc free().


> >>>  From my tests back when I was optimising callback invocation, we had
> >>> around 5 callbacks on average on objects with non-zero number of
> >>> registered callbacks with a maximum number of around 12 if my memory
> >>> serves, so this could potentially make callback calls so fast any
> >>> optimisations won't matter.
> >>
> >> This number where from before callbacks array. I am seriously
> >> interested to know todays number. Also an improved statistic would be
> >> to know how many callbacks are walked over in the most called case and
> >> how many of those callbacks are actually in an array already.
> >>
> >> 
> >
> > Callback array or not, you still end up walking all of the callbacks...
> 
> Sure, but if you only have mostly one sorted callbacks array, that
> doesn't really matter. You will be faster in the main use case.
> 
> > We can also store a pointer to the array in a hash table with the key
> > being some sort of a hash of the array in order to do some deduplication
> > afterwards (point to the same arrays, but obviously different private
> > data, so that would still be duplicated) if we feel it's needed. It
> > probably won't save as much though and will have some running costs.
> 
>  For anything < 16 entries, I bet that a hash table will be slower than
>  walking an array. Don't forget you need to compute the hash key, jump
>  in an array, walk down a rbtree and finally iterate over a list. Hash
>  are good for very large number of object, not for small number.
> >>>
> >>> That was an optimisation that I just threw out there to the world, but I
> >>> believe you misunderstood me. I didn't mean we create a hash table for
> >>> calling events, it was for saving memory and deduplicating event
> >>> callbacks (essentially callback arrays automatically). This is only done
> >>> on callback add/del.
> >>
> >> Indeed I missunderstood your intent. Still this will increase the cost
> >> of insertion for no benefit in my opinion. See below.
> >
> > Again, this is a side comment, not that important.
> 
> I have discovered that this is an importan

Re: [E-devel] [EGIT] [core/efl] master 01/01: efreet - fix mime file path messing with short paths like /

2016-08-26 Thread The Rasterman
On Fri, 26 Aug 2016 14:15:46 + Mike Blumenkrantz
 said:

> I just noticed this while doing some bisecting...was it intentional that
> you included undocumented evas engine changes in your efreet commit?

wtf? i... what? i haven't even opened evas_gl_cocoa_main.m in like... months and
months - i think i edited then once before 1.18 release to fix a bug... wtf?
how? i didn't touch these! i haven't been looking at anything in evas engines
for a while... certainly not int he last week or 2.

WTH?

> On Tue, Jul 5, 2016 at 3:29 AM Carsten Haitzler 
> wrote:
> 
> > raster pushed a commit to branch master.
> >
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=2ca5075193e27dbc30f26e478019719a5360cc84
> >
> > commit 2ca5075193e27dbc30f26e478019719a5360cc84
> > Author: Carsten Haitzler (Rasterman) 
> > Date:   Tue Jul 5 15:56:43 2016 +0900
> >
> > efreet - fix mime file path messing with short paths like /
> >
> > this fixes T4015
> >
> > @fix
> > ---
> >  src/lib/efreet/efreet_mime.c   | 7 +--
> >  src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m | 1 +
> >  src/modules/evas/engines/gl_x11/evas_x_main.c  | 2 ++
> >  src/modules/evas/engines/wayland_egl/evas_wl_main.c| 1 +
> >  4 files changed, 9 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/lib/efreet/efreet_mime.c b/src/lib/efreet/efreet_mime.c
> > index adfa790..87ca8ef 100644
> > --- a/src/lib/efreet/efreet_mime.c
> > +++ b/src/lib/efreet/efreet_mime.c
> > @@ -711,10 +711,13 @@ efreet_mime_special_check(const char *file)
> > parent[PATH_MAX - 1] = '\0';
> >
> > /* Kill any trailing slash */
> > -   parent[--path_len] = '\0';
> > +   if (parent[path_len - 1] == '/')
> > + parent[--path_len] = '\0';
> >
> > /* Truncate to last slash */
> > -   while (parent[--path_len] != '/') parent[path_len] = '\0';
> > +   while ((path_len > 0) &&
> > +  (parent[--path_len] != '/'))
> > + parent[path_len] = '\0';
> >
> >  #ifdef _WIN32
> > if (!stat(file, &s2))
> > diff --git a/src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m
> > b/src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m
> > index 15dc218..7df919f 100644
> > --- a/src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m
> > +++ b/src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m
> > @@ -120,6 +120,7 @@ eng_window_free(Evas_GL_Cocoa_Window *gw)
> >  void
> >  eng_window_use(Evas_GL_Cocoa_Window *gw)
> >  {
> > +   if ((gw) && (!gw->gl_context)) return;
> > if (_evas_gl_cocoa_window != gw)
> >   {
> >  [[(NSOpenGLView*)gw->view openGLContext] makeCurrentContext];
> > diff --git a/src/modules/evas/engines/gl_x11/evas_x_main.c
> > b/src/modules/evas/engines/gl_x11/evas_x_main.c
> > index 59361e1..f5e2edf 100644
> > --- a/src/modules/evas/engines/gl_x11/evas_x_main.c
> > +++ b/src/modules/evas/engines/gl_x11/evas_x_main.c
> > @@ -676,6 +676,8 @@ eng_window_use(Outbuf *gw)
> > xwin = _tls_outbuf_get();
> >
> > glsym_evas_gl_preload_render_lock(eng_window_make_current, gw);
> > +   if ((gw) && (!gw->gl_context)) return;
> > +
> >  #ifdef GL_GLES
> > if (xwin)
> >   {
> > diff --git a/src/modules/evas/engines/wayland_egl/evas_wl_main.c
> > b/src/modules/evas/engines/wayland_egl/evas_wl_main.c
> > index 489a475..14e13ff 100644
> > --- a/src/modules/evas/engines/wayland_egl/evas_wl_main.c
> > +++ b/src/modules/evas/engines/wayland_egl/evas_wl_main.c
> > @@ -233,6 +233,7 @@ eng_window_use(Outbuf *gw)
> > Eina_Bool force = EINA_FALSE;
> >
> > glsym_evas_gl_preload_render_lock(eng_preload_make_current, gw);
> > +   if ((gw) && (!gw->gl_context)) return;
> >
> > if (_evas_gl_wl_window)
> >   {
> >
> > --
> >
> >
> >
> --
> ___
> 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


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


Re: [E-devel] [EGIT] [core/efl] master 02/02: efreet - save about 240-300k or so of memory used by efreet mime

2016-08-26 Thread The Rasterman
On Fri, 26 Aug 2016 17:34:25 +0200 marcel-hollerb...@t-online.de said:

> Hello,
> 
> On Mon, Aug 22, 2016 at 08:04:09PM -0700, Carsten Haitzler wrote:
> > raster pushed a commit to branch master.
> > 
> > http://git.enlightenment.org/core/efl.git/commit/?id=561f8eaa8faebe32b9a03cf9674c147cf0d6d9ab
> > 
> > commit 561f8eaa8faebe32b9a03cf9674c147cf0d6d9ab
> > Author: Carsten Haitzler (Rasterman) 
> > Date:   Tue Aug 23 11:59:37 2016 +0900
> > 
> > efreet - save about 240-300k or so of memory used by efreet mime
> > 
> > so efreet mime was loading a bunch of mime type info files, parsing
> > them on startup and allocating memory to store all this mime info -
> > globs, mimetype strings and more. all a big waste of memory as its
> > allocated on the heap per process where its the SAME data files loaded
> > every time.
> > 
> > so make an efreet mime cache file and a tool to create it from mime
> > files. mmap this file with all the hashes/strings in it so all that
> > data is mmaped once in memory and shared between all processes and it
> > is only paged in on demand - as actually read/needed so if your
> > process doesnt need to know about mime stuff.. it wont touch it anyway.
> > 
> > this saves about 240-300k or so of memory in my tests. this has not
> > covered the mime MAGIC files which still consume memory and are on the
> > heap. this is more complex so it will take more time to come up with a
> > nice file format for the data that is nicely mmaped etc.
> > 
> > @optimize
> > ---
> 
> [snip]
> 
> > +
> >  EAPI int
> >  efreet_mime_init(void)
> >  {
> > @@ -194,14 +386,15 @@ efreet_mime_init(void)
> >   }
> >  
> > efreet_mime_endianess = efreet_mime_endian_check();
> > -
> > -   monitors = eina_hash_string_superfast_new(EINA_FREE_CB
> > (ecore_file_monitor_del)); -
> > efreet_mime_type_cache_clear();
> >  
> > +   _efreet_mimedb_update();
> > +
> > if (!efreet_mime_init_files())
> >   goto unregister_log_domain;
> >  
> > +   _efreet_mime_update_func = _efreet_mimedb_update;
> > +
> > return _efreet_mime_init_count;
> >  
> >  unregister_log_domain:
> > @@ -228,6 +421,9 @@ efreet_mime_shutdown(void)
> > if (--_efreet_mime_init_count != 0)
> >   return _efreet_mime_init_count;
> >  
> > +   _efreet_mimedb_shutdown();
> > +   _efreet_mime_update_func = NULL;
> > +
> > efreet_mime_icons_debug();
> >  
> > IF_RELEASE(_mime_inode_symlink);
> > @@ -241,10 +437,7 @@ efreet_mime_shutdown(void)
> > IF_RELEASE(_mime_application_octet_stream);
> > IF_RELEASE(_mime_text_plain);
> >  
> > -   IF_FREE_LIST(globs, efreet_mime_glob_free);
> > IF_FREE_LIST(magics, efreet_mime_magic_free);
> > -   IF_FREE_HASH(monitors);
> > -   IF_FREE_HASH(wild);
> > IF_FREE_HASH(mime_icons);
> > eina_log_domain_unregister(_efreet_mime_log_dom);
> > _efreet_mime_log_dom = -1;
> > @@ -387,11 +580,10 @@ efreet_mime_magic_type_get(const char *file)
> >  EAPI const char *
> >  efreet_mime_globs_type_get(const char *file)
> >  {
> > -   Eina_List *l;
> > -   Efreet_Mime_Glob *g;
> > char *sl, *p;
> > -   const char *s;
> > -   char *ext, *mime;
> > +   const char *s, *mime;
> > +   char *ext;
> > +   unsigned int i, n;
> >  
> > EINA_SAFETY_ON_NULL_RETURN_VAL(file, NULL);
> >  
> > @@ -406,25 +598,27 @@ efreet_mime_globs_type_get(const char *file)
> >  while (p)
> >{
> >   p++;
> > - if (p && (mime = eina_hash_find(wild, p))) return mime;
> > + if (p && (mime = _efreet_mimedb_extn_find(p))) return mime;
> >   p = strchr(p, '.');
> >}
> >   }
> >  
> > -   /* Fallback to the other globs if not found */
> > -   EINA_LIST_FOREACH(globs, l, g)
> > +   // Fallback to the other globs if not found
> > +   n = _efreet_mimedb_glob_count();
> > +   for (i = 0; i < n; i++)
> >   {
> > -if (efreet_mime_glob_match(file, g->glob))
> > -  return g->mime;
> > +s = _efreet_mimedb_glob_get(i);
> > +if (efreet_mime_glob_match(file, s))
> > +  return _efreet_mimedb_glob_mime_get(i);
> 
> The upper line is introducing a problem.
> 
> Before the return was a stringshare, now it is not anymore.
> I am not so sure if it is a good idea to fix it with 

the api docs do not say it is a stringshare string, thus relying on this is a
violation of api contract ... for exactly the kind of optimizations i've done
here. efreet returns lots of strings. all except 2 are NOT defined to be
stringshare strings. :) this is because freet gets a lot of strings DIRECTLY
from mmaped cache files for desktop files, icon search databases and so on.
this is "regular how efreet works" stuff. so it's also not a design pattern in
efreet. in fact the design pattern has ben the opposite. efreet has been
returning strings to mmaped files for a huge number of it's apis for a long
time. but to specs...

from the api spe

[EGIT] [core/efl] master 01/01: fix filselector legacy cb call order and entry set - fix file, chosen

2016-08-26 Thread Carsten Haitzler
raster pushed a commit to branch master.

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

commit 6256978b61ca1ecf0bcc29ead3729c8c6484421e
Author: Carsten Haitzler (Rasterman) 
Date:   Sat Aug 27 09:06:49 2016 +0900

fix filselector legacy cb call order and entry set - fix file,chosen

The visible bug for this issue is that the Elm External Video example
is broken:

elementary_test -to "ExtVideo"
The root cause is that the "file,choose" event of the
FileselectorEntry is (wrongly) not listed by the function:
evas_object_smart_callbacks_descriptions_get()
This evas functions is used in elm_external to forward all the widget
events to edje, but it cannot forward the "file,chosen" event because
it's not listed.
Thus the video test is not working for the lacks of that event.

I think the fix should be somewhere in elc_fileselector_entry.c, there
are some hacks there for the incriminated signal, but I don't know how
to properly fix.

as pointed out by dave:

DaveMDS added a comment.Fri, Aug 26, 5:19 PM
I think the problem is in this function: (elc_fileselector_entry.c)

...

this fixes T4337
---
 src/lib/elementary/elc_fileselector_entry.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elc_fileselector_entry.c 
b/src/lib/elementary/elc_fileselector_entry.c
index bb18979..c062ec3 100644
--- a/src/lib/elementary/elc_fileselector_entry.c
+++ b/src/lib/elementary/elc_fileselector_entry.c
@@ -75,11 +75,11 @@ _file_chosen_path_then(void *data, void *v)
if (!file) return;
ELM_FILESELECTOR_ENTRY_DATA_GET(data, sd);
 
-   evas_object_smart_callback_call(data, "file,chosen", (void *) file);
-
s = elm_entry_utf8_to_markup(file);
elm_object_text_set(sd->entry, s);
free(s);
+
+   evas_object_smart_callback_call(data, "file,chosen", (void *) file);
 }
 
 static void

-- 




[EGIT] [core/efl] master 01/01: elm fileselector: fix possible premature deletion of Listing_Request struct

2016-08-26 Thread Vitor Sousa
vitorsousa pushed a commit to branch master.

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

commit 5d2948b016955410ca8137ec944b8b91b169dc07
Author: Vitor Sousa 
Date:   Wed Aug 24 19:43:51 2016 -0300

elm fileselector: fix possible premature deletion of Listing_Request struct

In a case where eina_promise_then is executed immediately (like with some
quick and light Efl.Model), the Listing_Request struct will be prematurely
freed in the first iteration of the child processing loop, because the
item_total counter had not accumulated the right number of items yet.

With this commit, we traverse the children accessor first, so we can know
the number of items.

Also, no longer use the Listing_Request pointer after the loop, once it
may have been deallocate already.
And put a note about this too.
---
 src/lib/elementary/elc_fileselector.c | 32 ++--
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/src/lib/elementary/elc_fileselector.c 
b/src/lib/elementary/elc_fileselector.c
index ec30015..21bf9c4 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -774,7 +774,17 @@ _process_child_error_cb(void *data, Eina_Error err 
EINA_UNUSED)
 
ERR("Failed to access to a model property");
 
-   lreq->item_total--;
+   ++(lreq->item_processed_count);
+   if (lreq->item_processed_count >= lreq->item_total)
+ {
+if (!lreq->valid)
+  {
+ _listing_request_cleanup(lreq);
+ return;
+  }
+_signal_first(lreq);
+_process_last(lreq);
+ }
 }
 
 static void
@@ -800,8 +810,7 @@ _process_children_cb(void *data, void *values)
Elm_Fileselector_Item_Data *it_data = NULL;
const char *path = NULL;
const char *selected_path = NULL;
-   void *child = NULL;
-   unsigned int i = 0;
+   unsigned int count = 0;
Elm_Fileselector_Data *sd = lreq->sd;
 
if (!lreq->valid)
@@ -829,7 +838,16 @@ _process_children_cb(void *data, void *values)
 lreq->path = eina_stringshare_add(path);
 if (children_accessor)
   {
- EINA_ACCESSOR_FOREACH(children_accessor, i, child)
+ Eina_List *children = NULL;
+ void *child = NULL;
+ EINA_ACCESSOR_FOREACH(children_accessor, count, child)
+   {
+  children = eina_list_append(children, child);
+   }
+
+ lreq->item_total = count;
+
+ EINA_LIST_FREE(children, child)
{
   Eina_Promise *promises[7];
   Eina_Promise *promise_all = NULL;
@@ -862,11 +880,13 @@ _process_children_cb(void *data, void *values)
   promises[6] = NULL;
 
   promise_all = 
eina_promise_all(eina_carray_iterator_new((void**)promises));
-  ++(lreq->item_total);
   eina_promise_then(promise_all, _process_child_cb, 
_process_child_error_cb, it_data);
}
+
+ // NOTE: lreq may have been deallocated in the previous loop
+ lreq = NULL;
   }
-if (lreq->item_total == 0)
+if (count == 0)
   {
  _signal_first(lreq);
  _process_last(lreq);

-- 




[EGIT] [apps/ephoto] master 01/01: Ephoto: Don't warn, as this behavior is perfectly normal.

2016-08-26 Thread Stephen okra Houston
okra pushed a commit to branch master.

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

commit 4a5cb632ec8145d6b89e42740477bea7d08facd2
Author: Stephen okra Houston 
Date:   Fri Aug 26 16:30:27 2016 -0500

Ephoto: Don't warn, as this behavior is perfectly normal.
---
 src/bin/ephoto_directory_browser.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/ephoto_directory_browser.c 
b/src/bin/ephoto_directory_browser.c
index c09540f..4b38b13 100644
--- a/src/bin/ephoto_directory_browser.c
+++ b/src/bin/ephoto_directory_browser.c
@@ -87,8 +87,8 @@ static Eina_Bool
 _drop_dropcb(void *data EINA_UNUSED, Evas_Object *obj, Elm_Object_Item *it,
 Elm_Selection_Data *ev, int xposret EINA_UNUSED, int yposret EINA_UNUSED)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(it, EINA_TRUE);
-
+   if (!it)
+ return EINA_FALSE;
Ephoto_Entry *entry = elm_object_item_data_get(it);
const char *path = entry->path;
Eina_List *files = NULL;

-- 




[EGIT] [core/efl] master 04/05: elementary: better error handling of fileselector

2016-08-26 Thread Jean Guyomarc'h
jayji pushed a commit to branch master.

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

commit 92d3fc8f4ffec07668621e71c3ad5d6875fc06c2
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 15:43:16 2016 +0200

elementary: better error handling of fileselector
---
 src/lib/elementary/elc_fileselector.c | 26 ++
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/lib/elementary/elc_fileselector.c 
b/src/lib/elementary/elc_fileselector.c
index 8ed2894..ec30015 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -772,7 +772,7 @@ _process_child_error_cb(void *data, Eina_Error err 
EINA_UNUSED)
efl_unref(it_data->model);
free(it_data);
 
-   WRN("could not get data from child Efl.Model");
+   ERR("Failed to access to a model property");
 
lreq->item_total--;
 }
@@ -831,8 +831,14 @@ _process_children_cb(void *data, void *values)
   {
  EINA_ACCESSOR_FOREACH(children_accessor, i, child)
{
-  Eina_Promise *promises[7] = {NULL,};
+  Eina_Promise *promises[7];
   Eina_Promise *promise_all = NULL;
+  const char *prop[6] = {
+ "path", "filename", "is_dir", "size", "mtime", "mime_type"
+  };
+  unsigned int i;
+  Eina_Error error;
+
   it_data = calloc(1, sizeof(Elm_Fileselector_Item_Data));
   if (!it_data)
 {
@@ -843,12 +849,16 @@ _process_children_cb(void *data, void *values)
   it_data->model = efl_ref(child);
   it_data->user_data = lreq;
 
-  promises[0] = efl_model_property_get(child, "path");
-  promises[1] = efl_model_property_get(child, "filename");
-  promises[2] = efl_model_property_get(child, "is_dir");
-  promises[3] = efl_model_property_get(child, "size");
-  promises[4] = efl_model_property_get(child, "mtime");
-  promises[5] = efl_model_property_get(child, "mime_type");
+  for (i = 0; i <= 5; i++)
+{
+   promises[i] = efl_model_property_get(child, prop[i]);
+   error = eina_promise_error_get(promises[i]);
+   if (error)
+ {
+ERR("Error with property \"%s\": %s", prop[i],
+eina_error_msg_get(error));
+ }
+}
   promises[6] = NULL;
 
   promise_all = 
eina_promise_all(eina_carray_iterator_new((void**)promises));

-- 




[EGIT] [core/efl] master 02/05: elementary: make sure we don't iterate out of bounds

2016-08-26 Thread Jean Guyomarc'h
jayji pushed a commit to branch master.

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

commit 322adb2e035fec05de109568934a013afe0b9edb
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 15:00:52 2016 +0200

elementary: make sure we don't iterate out of bounds

The carray iterator will end iterating only when it finds a NULL
object. We must make sure the last element of the array is NULL
to avoid out of bounds access.
---
 src/lib/elementary/elc_fileselector.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/elementary/elc_fileselector.c 
b/src/lib/elementary/elc_fileselector.c
index 414bb85..81b6ba2 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -859,6 +859,7 @@ _process_children_cb(void *data, void *values)
   promises[3] = efl_model_property_get(child, "size");
   promises[4] = efl_model_property_get(child, "mtime");
   promises[5] = efl_model_property_get(child, "mime_type");
+  promises[6] = NULL;
 
   promise_all = 
eina_promise_all(eina_carray_iterator_new((void**)promises));
   ++(lreq->item_total);

-- 




[EGIT] [core/efl] master 05/05: efreet: mime types database can be empty

2016-08-26 Thread Jean Guyomarc'h
jayji pushed a commit to branch master.

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

commit 1ab1e3697dc4dfead65fadc02747d876c993f935
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 15:53:05 2016 +0200

efreet: mime types database can be empty

When the mime types database is empty, the file will
be exactly 28 bytes.

Fixes T4426
---
 src/lib/efreet/efreet_mime.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/efreet/efreet_mime.c b/src/lib/efreet/efreet_mime.c
index 6cb331b..63e6b15 100644
--- a/src/lib/efreet/efreet_mime.c
+++ b/src/lib/efreet/efreet_mime.c
@@ -204,7 +204,7 @@ _efreet_mimedb_update(void)
 if (mimedb_ptr)
   {
  mimedb_size = eina_file_size_get(mimedb);
- if ((mimedb_size > (16 + 4  + 4  + 4) &&
+ if ((mimedb_size >= (16 + 4  + 4  + 4) &&
  (!strncmp((char *)mimedb_ptr, "EfrEeT-MiMeS-001", 16
{
   // load ok - magic fine. more sanity checks?

-- 




[EGIT] [core/efl] master 01/05: eina: overhaul Mac OS X semaphores

2016-08-26 Thread Jean Guyomarc'h
jayji pushed a commit to branch master.

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

commit 5db3357f4029ad88b14ceb7b125d981e23889ec8
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 17:41:20 2016 +0200

eina: overhaul Mac OS X semaphores

Mac OS X does not support POSIX unnamed semaphores, only named
semaphores, which are persistant IPC: when the program exits,
and if semaphores where not released, they stay forever...

All EFL programs were "leaking" a semaphore, due to how
eina_log_monitor manages its resources. Therefore, after building
EFL a lot (which run eolian_gen, eolian_cxx, elua, edje_cc, ...)
we were not able to create any semaphore...

Now, we get rid of these semaphores and use Mac OS X's own
semaphores. Code is less cumbersome, and we don't have any
disavantage of the named semaphores.

Fixes T4423

@fix
---
 src/lib/eina/eina_inline_lock_posix.x | 34 +-
 1 file changed, 13 insertions(+), 21 deletions(-)

diff --git a/src/lib/eina/eina_inline_lock_posix.x 
b/src/lib/eina/eina_inline_lock_posix.x
index b52a647..d2e4b95 100644
--- a/src/lib/eina/eina_inline_lock_posix.x
+++ b/src/lib/eina/eina_inline_lock_posix.x
@@ -42,6 +42,10 @@
 # include 
 #endif
 
+#ifdef EINA_HAVE_OSX_SEMAPHORE
+# include 
+#endif
+
 #include 
 
 #include 
@@ -94,15 +98,7 @@ typedef Eina_Lock Eina_Spinlock;
 #endif
 
 #if defined(EINA_HAVE_OSX_SEMAPHORE)
-/* OSX supports only named semaphores.
- * So, we need to be able to generate a unique string identifier for each
- * semaphore we want to create. */
-struct _Eina_Semaphore
-{
-   sem_t   *sema;
-   char name[32];
-};
-typedef struct _Eina_Semaphore Eina_Semaphore;
+typedef semaphore_t Eina_Semaphore;
 #else
 typedef sem_t Eina_Semaphore;
 #endif
@@ -838,13 +834,10 @@ eina_semaphore_new(Eina_Semaphore *sem, int count_init)
  return EINA_FALSE;
 
 #if defined(EINA_HAVE_OSX_SEMAPHORE)
-   /* Atomic increment to generate the unique identifier */
-   snprintf(sem->name, sizeof(sem->name), "/eina%x%x%x",
-(unsigned int)getpid(), (unsigned int)rand(), (unsigned 
int)rand());
-   sem->name[sizeof(sem->name) - 1] = '\0';
-   sem_unlink(sem->name);
-   sem->sema = sem_open(sem->name, O_CREAT | O_EXCL, 0600, count_init);
-   return (sem->sema == SEM_FAILED) ? EINA_FALSE : EINA_TRUE;
+   kern_return_t kr;
+
+   kr = semaphore_create(mach_task_self(), sem, SYNC_POLICY_FIFO, count_init);
+   return (kr == KERN_SUCCESS) ? EINA_TRUE : EINA_FALSE;
 #else
return (sem_init(sem, 0, count_init) == 0) ? EINA_TRUE : EINA_FALSE;
 #endif
@@ -857,9 +850,8 @@ eina_semaphore_free(Eina_Semaphore *sem)
  return EINA_FALSE;
 
 #if defined(EINA_HAVE_OSX_SEMAPHORE)
-   const int closed = sem_close(sem->sema);
-   const int unlinked = sem_unlink(sem->name);
-   return ((closed == 0) && (unlinked == 0)) ? EINA_TRUE : EINA_FALSE;
+   return (semaphore_destroy(*sem, mach_task_self()) == KERN_SUCCESS)
+  ? EINA_TRUE : EINA_FALSE;
 #else
return (sem_destroy(sem) == 0) ? EINA_TRUE : EINA_FALSE;
 #endif
@@ -877,7 +869,7 @@ eina_semaphore_lock(Eina_Semaphore *sem)
  {
 if (
 #if defined(EINA_HAVE_OSX_SEMAPHORE)
-sem_wait(sem->sema)
+semaphore_wait(*sem)
 #else
 sem_wait(sem)
 #endif
@@ -906,7 +898,7 @@ eina_semaphore_release(Eina_Semaphore *sem, int 
count_release EINA_UNUSED)
  return EINA_FALSE;
 
 #if defined(EINA_HAVE_OSX_SEMAPHORE)
-   return (sem_post(sem->sema) == 0) ? EINA_TRUE : EINA_FALSE;
+   return (semaphore_signal(*sem) == KERN_SUCCESS) ? EINA_TRUE : EINA_FALSE;
 #else
return (sem_post(sem) == 0) ? EINA_TRUE : EINA_FALSE;
 #endif

-- 




[EGIT] [core/efl] master 03/05: elementary: prevent double free

2016-08-26 Thread Jean Guyomarc'h
jayji pushed a commit to branch master.

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

commit 0874c4da3823ceae0dfcda44b0e0d5e6251e39a9
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 15:04:37 2016 +0200

elementary: prevent double free

This one is a bit tricky... When we create the aggregated
promise, if one of the properties of the model returns an
error, the eina_promise_then() will immediately call the
error callback. In this happened for the first item, the
total items in the listing request would be 1.

Before this commit, we tested for incremented the processed
counter and compared it to this total count. If it was
greater or equal, we would free the common listing request.
But in the case of successive failures, we would set the
total counter to 1, then the processed counter to 1 and
therefore free. Then increment the total counter to 2, then
then processed counter to 2, and free again... which would
cause an abort() from the libc or something else nasty.

Now we just decrease the total count of items. We avoid
the cases and double frees, without leaking.
---
 src/lib/elementary/elc_fileselector.c | 12 +---
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/src/lib/elementary/elc_fileselector.c 
b/src/lib/elementary/elc_fileselector.c
index 81b6ba2..8ed2894 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -774,17 +774,7 @@ _process_child_error_cb(void *data, Eina_Error err 
EINA_UNUSED)
 
WRN("could not get data from child Efl.Model");
 
-   ++(lreq->item_processed_count);
-   if (lreq->item_processed_count >= lreq->item_total)
- {
-if (!lreq->valid)
-  {
- _listing_request_cleanup(lreq);
- return;
-  }
-_signal_first(lreq);
-_process_last(lreq);
- }
+   lreq->item_total--;
 }
 
 static void

-- 




Re: [E-devel] Callback arrays and callback invocation optimisations

2016-08-26 Thread Cedric BAIL
On Fri, Aug 26, 2016 at 2:46 AM, Tom Hacohen  wrote:
> On 24/08/16 20:03, Cedric BAIL wrote:
>> On Wed, Aug 24, 2016 at 2:24 AM, Tom Hacohen  wrote:
>>> On 23/08/16 18:51, Cedric BAIL wrote:
 On Tue, Aug 23, 2016 at 3:31 AM, Tom Hacohen  wrote:
>>
>> 
>>
> However, while they provide a nice memory improvement, they have been
> hampering many optimisation strategies that would make callback
> invocation significantly faster. Furthermore, maybe (not sure), we can
> automatically de-duplicate event lists internally (more on that in a
> moment). With that being said, there is a way we can maybe keep array
> callbacks with some limitations.

 Do you have a case where performance are impacted by callback today ?
 I have found that we usually have a very small number of callbacks
 (likely in an array this days) and when speed did really matter it was
 just best to not trigger the callback at all (That's why we have this
 code in many place that count if any callback has been registered).
>>>
>>> It always showed up in callgrind. Obviously after you did your changes
>>> that improved things, because you essentially just don't call that code,
>>> but having to do this everywhere is a bit of a pain, especially if we
>>> can just make callbacks fast on their own.
>>>
>>> Callback_call takes around 1.5% in the efl atm. Though if we remove the
>>> not-call optimisations it would be much more again. I wonder if we can
>>> reach good results without it.
>>
>> When genlist is scrolling, just calling a function is costly as we end
>> up calling it million times, litterally. I seriously doubt it is
>> possible.
>
> And yet, this is one of the functions that stand out and not others that
> are "just called".

Can you share your test case ? I can't reproduce a way where it does
stand out. It barelly register at 1% in my benchmark. It is maybe in
position 20 of the most costly function call. After malloc, free,
mutex_lock/unlock, eina_hash_superfast (I think I can optimize that
one easily).

>>>  From my tests back when I was optimising callback invocation, we had
>>> around 5 callbacks on average on objects with non-zero number of
>>> registered callbacks with a maximum number of around 12 if my memory
>>> serves, so this could potentially make callback calls so fast any
>>> optimisations won't matter.
>>
>> This number where from before callbacks array. I am seriously
>> interested to know todays number. Also an improved statistic would be
>> to know how many callbacks are walked over in the most called case and
>> how many of those callbacks are actually in an array already.
>>
>> 
>
> Callback array or not, you still end up walking all of the callbacks...

Sure, but if you only have mostly one sorted callbacks array, that
doesn't really matter. You will be faster in the main use case.

> We can also store a pointer to the array in a hash table with the key
> being some sort of a hash of the array in order to do some deduplication
> afterwards (point to the same arrays, but obviously different private
> data, so that would still be duplicated) if we feel it's needed. It
> probably won't save as much though and will have some running costs.

 For anything < 16 entries, I bet that a hash table will be slower than
 walking an array. Don't forget you need to compute the hash key, jump
 in an array, walk down a rbtree and finally iterate over a list. Hash
 are good for very large number of object, not for small number.
>>>
>>> That was an optimisation that I just threw out there to the world, but I
>>> believe you misunderstood me. I didn't mean we create a hash table for
>>> calling events, it was for saving memory and deduplicating event
>>> callbacks (essentially callback arrays automatically). This is only done
>>> on callback add/del.
>>
>> Indeed I missunderstood your intent. Still this will increase the cost
>> of insertion for no benefit in my opinion. See below.
>
> Again, this is a side comment, not that important.

I have discovered that this is an important use case actually. We do
insert and remove callback quite a lot now that animator is an event
on an object. We do already spend nearly as much time doing
efl_event_callback_priority_add (0.90% for 110 000 calls),
efl_event_callback_array_priority_add (0.49% for 110 000 calls),
efl_event_callback_array_del (0.27% for 40 000 calls) and
efl_event_callback_del (0.93% for 110 000 calls). The cost of adding
and destroying events is not negligeable. It is, cumulatively,
actually higher than our current cost for calling events.

I am not really sure of the exact cost structure, but it seems that
the CALLBACK_ADD and CALLBACK_DEL are responsible for a fair amount of
that cost. Maybe optimizing those would be useful. I can see the event
cather being call around 350 000 times with a total cost around 0.15%,
but that seems too low to explain all the overall cost. So not sure as
I said,

[EGIT] [core/efl] master 03/03: eo: speedup efl_isa by 50%.

2016-08-26 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit aaa0e962b75174b6dca90816b11a4e05c2985a9e
Author: Cedric BAIL 
Date:   Fri Aug 26 12:04:23 2016 -0700

eo: speedup efl_isa by 50%.

Most of our use case of efl_isa is related to legacy Evas_Object_Image API,
that check the isa of the same object again and again. Caching help.
---
 src/lib/eo/eo.c | 16 +++-
 src/lib/eo/eo_ptr_indirection.x |  3 +++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index b5354c0..f8eaaf4 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -1433,17 +1433,31 @@ efl_object_override(Eo *eo_id, const Efl_Object_Ops 
*ops)
return EINA_TRUE;
 }
 
+const Eo *cached_isa_id = NULL;
+
+static const Efl_Class *cached_klass = NULL;
+static Eina_Bool cached_isa = EINA_FALSE;
+
 EAPI Eina_Bool
 efl_isa(const Eo *eo_id, const Efl_Class *klass_id)
 {
+   if (cached_isa_id == eo_id && cached_klass == klass_id)
+ return cached_isa;
+
EO_OBJ_POINTER_RETURN_VAL(eo_id, obj, EINA_FALSE);
EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, EINA_FALSE);
const op_type_funcs *func = _vtable_func_get(obj->vtable,
  klass->base_id + klass->desc->ops.count);
 
+   // Caching the result as we do a lot of serial efl_isa due to 
evas_object_image using it.
+   cached_isa_id = eo_id;
+   cached_klass = klass_id;
+
/* Currently implemented by reusing the LAST op id. Just marking it with
 * _eo_class_isa_func. */
-   return (func && (func->func == _eo_class_isa_func));
+   cached_isa = (func && (func->func == _eo_class_isa_func));
+
+   return cached_isa;
 }
 
 EAPI Eo *
diff --git a/src/lib/eo/eo_ptr_indirection.x b/src/lib/eo/eo_ptr_indirection.x
index cae59a4..2f95e64 100644
--- a/src/lib/eo/eo_ptr_indirection.x
+++ b/src/lib/eo/eo_ptr_indirection.x
@@ -445,6 +445,8 @@ _eo_id_allocate(const _Eo_Object *obj)
 #endif
 }
 
+extern const Eo *cached_isa_id;
+
 static inline void
 _eo_id_release(const Eo_Id obj_id)
 {
@@ -494,6 +496,7 @@ _eo_id_release(const Eo_Id obj_id)
  // In case an object is destroyed, wipe out the cache
  cached_id = 0;
  cached_object = NULL;
+ cached_isa_id = NULL;
 
  return;
   }

-- 




[EGIT] [core/efl] master 02/03: eo: general speedup of all Eo related operation.

2016-08-26 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 93a706a947cd2d6ef80f8704f4e23737fea1258f
Author: Cedric BAIL 
Date:   Fri Aug 26 12:03:08 2016 -0700

eo: general speedup of all Eo related operation.

This change rely on the fact that we do fetch the same
object id over and over again. _efl_object_call_resolve got
15% faster, efl_data_scope_get 20%.
---
 src/lib/eo/eo_base_class.c  |  3 +++
 src/lib/eo/eo_ptr_indirection.x | 20 +++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
index 732d063..35c7a9c 100644
--- a/src/lib/eo/eo_base_class.c
+++ b/src/lib/eo/eo_base_class.c
@@ -11,6 +11,9 @@
 
 static int event_freeze_count = 0;
 
+_Eo_Object *cached_object = NULL;
+Eo_Id cached_id = 0;
+
 typedef struct _Eo_Callback_Description Eo_Callback_Description;
 
 typedef struct
diff --git a/src/lib/eo/eo_ptr_indirection.x b/src/lib/eo/eo_ptr_indirection.x
index d89b1ec..cae59a4 100644
--- a/src/lib/eo/eo_ptr_indirection.x
+++ b/src/lib/eo/eo_ptr_indirection.x
@@ -269,6 +269,9 @@ extern Generation_Counter _eo_generation_counter;
 /* Macro used for readability */
 #define TABLE_FROM_IDS _eo_ids_tables[mid_table_id][table_id]
 
+extern _Eo_Object *cached_object;
+extern Eo_Id cached_id;
+
 static inline _Eo_Object *
 _eo_obj_pointer_get(const Eo_Id obj_id)
 {
@@ -289,6 +292,10 @@ _eo_obj_pointer_get(const Eo_Id obj_id)
 DBG("obj_id is not a valid object id.");
 return NULL;
  }
+   else if (obj_id == cached_id)
+ {
+return cached_object;
+ }
 
EO_DECOMPOSE_ID(obj_id, mid_table_id, table_id, entry_id, generation);
 
@@ -297,7 +304,13 @@ _eo_obj_pointer_get(const Eo_Id obj_id)
  {
 entry = &(TABLE_FROM_IDS->entries[entry_id]);
 if (entry && entry->active && (entry->generation == generation))
-  return entry->ptr;
+  {
+ // Cache the result of that lookup
+ cached_object = entry->ptr;
+ cached_id = obj_id;
+
+ return entry->ptr;
+  }
  }
 
ERR("obj_id %p is not pointing to a valid object. Maybe it has already been 
freed.",
@@ -477,6 +490,11 @@ _eo_id_release(const Eo_Id obj_id)
   if (_current_table == table)
 _current_table = NULL;
}
+
+ // In case an object is destroyed, wipe out the cache
+ cached_id = 0;
+ cached_object = NULL;
+
  return;
   }
  }

-- 




[EGIT] [core/efl] master 01/03: eo: remove useless duplicated check.

2016-08-26 Thread Cedric BAIL
cedric pushed a commit to branch master.

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

commit 5e67a80753c4cc0a33dfaba008c098e07acfadfa
Author: Cedric BAIL 
Date:   Fri Aug 26 12:01:52 2016 -0700

eo: remove useless duplicated check.
---
 src/lib/eo/eo_ptr_indirection.h | 70 +
 1 file changed, 28 insertions(+), 42 deletions(-)

diff --git a/src/lib/eo/eo_ptr_indirection.h b/src/lib/eo/eo_ptr_indirection.h
index d7f6dd3..8cad652 100644
--- a/src/lib/eo/eo_ptr_indirection.h
+++ b/src/lib/eo/eo_ptr_indirection.h
@@ -13,42 +13,29 @@ void _eo_pointer_error(const char *msg);
 #define _EO_POINTER_ERR(fmt, ptr) \
do { char buf[256]; sprintf(buf, fmt, ptr); _eo_pointer_error(buf); } while 
(0)
 
-#define EO_OBJ_POINTER(obj_id, obj) \
-   _Eo_Object *obj = NULL; \
-   do { \
-if (!obj_id) break; \
-obj = _eo_obj_pointer_get((Eo_Id)obj_id); \
-if (!obj) { \
- _EO_POINTER_ERR("Obj (%p) is an invalid ref.", obj_id); \
-} \
-   } while (0)
-
-#define EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, ret) \
-   _Eo_Object *obj; \
-   do { \
-if (!obj_id) return ret; \
-obj = _eo_obj_pointer_get((Eo_Id)obj_id); \
-if (!obj) { \
- _EO_POINTER_ERR("Obj (%p) is an invalid ref.", obj_id); \
- return ret; \
-} \
-   } while (0)
-
-#define EO_OBJ_POINTER_RETURN(obj_id, obj)   \
-   _Eo_Object *obj; \
-   do { \
-if (!obj_id) return; \
-obj = _eo_obj_pointer_get((Eo_Id)obj_id);   \
-if (!obj) { \
- _EO_POINTER_ERR("Obj (%p) is an invalid ref.", obj_id); \
- return; \
-} \
-   } while (0)
+#define EO_OBJ_POINTER(obj_id, obj)   \
+  _Eo_Object *obj = NULL; \
+  do {\
+ obj = _eo_obj_pointer_get((Eo_Id)obj_id);\
+  } while (0)
+
+#define EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, ret) \
+  _Eo_Object *obj;  \
+  do {  \
+ obj = _eo_obj_pointer_get((Eo_Id)obj_id);  \
+ if (!obj) return (ret);\
+  } while (0)
+
+#define EO_OBJ_POINTER_RETURN(obj_id, obj)  \
+  _Eo_Object *obj;  \
+  do {  \
+ obj = _eo_obj_pointer_get((Eo_Id)obj_id);  \
+ if (!obj) return;  \
+  } while (0)
 
 #define EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, ret) \
_Efl_Class *klass; \
do { \
-if (!klass_id) return ret; \
 klass = _eo_class_pointer_get(klass_id); \
 if (!klass) { \
  _EO_POINTER_ERR("Class (%p) is an invalid ref.", klass_id); \
@@ -59,7 +46,6 @@ void _eo_pointer_error(const char *msg);
 #define EO_CLASS_POINTER_RETURN(klass_id, klass)   \
_Efl_Class *klass; \
do { \
-if (!klass_id) return; \
 klass = _eo_class_pointer_get(klass_id); \
 if (!klass) { \
  _EO_POINTER_ERR("Class (%p) is an invalid ref.", klass_id); \
@@ -69,15 +55,15 @@ void _eo_pointer_error(const char *msg);
 
 #else
 
-#define EO_OBJ_POINTER(obj_id, obj) \
-   _Eo_Object *obj = NULL; \
-   do { \
-if (!obj_id) break; \
-obj = _eo_obj_pointer_get((Eo_Id)obj_id); \
-if (!EINA_MAGIC_CHECK((Eo_Header *) obj, EO_EINA_MAGIC)) { \
- EINA_MAGIC_FAIL((Eo_Header *) obj, EO_EINA_MAGIC); \
-} \
-   } while (0)
+#define EO_OBJ_POINTER(obj_id, obj) \
+  _Eo_Object *obj = NULL;   \
+  do {  \
+ obj = _eo_obj_pointer_get((Eo_Id)obj_id);  \
+ if (obj && \
+ !EINA_MAGIC_CHECK((Eo_Header *) obj, EO_EINA_MAGIC)) { \
+EINA_MAGIC_FAIL((Eo_Header *) obj, EO_EINA_MAGIC);  \
+ }  \
+  } while (0)
 
 #define EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, ret) \
_Eo_Object *obj; \

-- 




[EGIT] [bindings/python/python-efl] master 01/01: Elm.Genlist: Document new "indent" item style

2016-08-26 Thread Kai Huuhko
kuuko pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=58cfedf5af6be32c9187347528a8b0cbdaafbf91

commit 58cfedf5af6be32c9187347528a8b0cbdaafbf91
Author: Kai Huuhko 
Date:   Fri Aug 26 21:47:46 2016 +0300

Elm.Genlist: Document new "indent" item style
---
 doc/elementary/genlist.rst | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/elementary/genlist.rst b/doc/elementary/genlist.rst
index 2218045..cc8e962 100644
--- a/doc/elementary/genlist.rst
+++ b/doc/elementary/genlist.rst
@@ -73,6 +73,7 @@ Available item styles
 - ``no_icon`` No icon (since: 1.1)
 - ``full`` Only one object, elm.swallow.content, which consumes whole area of
   the genlist item (since: 1.7)
+- ``indent`` Has indentation to match tree group items (since: 1.19)
 
 
 Structure of items

-- 




[EGIT] [website/www-content] master 01/01: Wiki page osx-start changed with summary [] by Jean Guyomarc'h

2016-08-26 Thread Jean Guyomarc'h
WWW-www.enlightenment.org pushed a commit to branch master.

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

commit f7ba1f31b2861ba2141faa78ccbc4cd63a66a050
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 11:35:59 2016 -0700

Wiki page osx-start changed with summary [] by Jean Guyomarc'h
---
 pages/distros/osx-start.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/distros/osx-start.txt b/pages/distros/osx-start.txt
index f6ca7ca..5b5710c 100644
--- a/pages/distros/osx-start.txt
+++ b/pages/distros/osx-start.txt
@@ -56,7 +56,7 @@ If you want to have the very latest version of EFL, here is 
the procedure:
 brew install autoconf automake libtool autoconf-archive gettext check 
pkg-config luajit libjpeg freetype fribidi fontconfig giflib libtiff glib dbus 
libsndfile bullet libspectre libraw librsvg poppler
 brew migrate dbus
 mkdir -p ~/Library/LaunchAgents
-ln -sfv /usr/local/opt/d-bus/*.plist ~/Library/LaunchAgents
+ln -sfv /usr/local/opt/dbus/*.plist ~/Library/LaunchAgents
 launchctl load ~/Library/LaunchAgents/org.freedesktop.dbus-session.plist
 
 

-- 




[EGIT] [apps/epour] master 01/01: Use the new "indent" style in TorrentFiles tree items

2016-08-26 Thread Kai Huuhko
kuuko pushed a commit to branch master.

http://git.enlightenment.org/apps/epour.git/commit/?id=192d58cfe50697afc9cab01fc9470d21eb502f4c

commit 192d58cfe50697afc9cab01fc9470d21eb502f4c
Author: Kai Huuhko 
Date:   Fri Aug 26 21:08:26 2016 +0300

Use the new "indent" style in TorrentFiles tree items
---
 epour/gui/TorrentProps.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/epour/gui/TorrentProps.py b/epour/gui/TorrentProps.py
index ea10883..c1fc757 100644
--- a/epour/gui/TorrentProps.py
+++ b/epour/gui/TorrentProps.py
@@ -101,7 +101,7 @@ class DirectoryClass(GenlistItemClass):
 )
 
 
-ITEM_CLASS_FILES = FileClass()
+ITEM_CLASS_FILES = FileClass(item_style="indent")
 ITEM_CLASS_DIRS = DirectoryClass()
 
 

-- 




Re: [E-devel] E/ELM fdo icon config issues

2016-08-26 Thread Andrew Williams
Hi,

For 1) this is how it worked initially (at least approximately) but the
third checkbox was removed - perhaps someone could speak up and say why it
was the wrong solution.

2) this makes sense too - the theme did not exist when I coded things up to
start with. Changing the define may indeed provide the expected behaviour
(though the E config may need a little tweak).

I backed off this a little back when the E dialog changed as I assumed
there was a higher purpose that I had failed to understand..?

I suspect we are missing a stakeholder from this discussion - anyone want
to weigh in?

Cheers,
Andrew

On Fri, 26 Aug 2016 at 09:05, Davide Andreoli 
wrote:

> Hi all (Andrew in particular)
>
> I really think we have 2 issue in the way we let the user configure the fdo
> icon theme for their system.
>
> 1. In the E config we have a list of fdo themes and 2 checkbox:
>   * Enable for applications
>   * Enable for Enlightenment
>
> The first one will set the theme for GTK and ELM, I really think we need to
> spit this in 2 different checks, one for ELM and one for non-efl apps.
> Without this separation there are useful configuration that are really hard
> to make.
> For example I use on my system the Mint-X theme for GTK app and the default
> for ELM, to make this configuration I need to:
>  * Open the E config and choose Mint-X (this also change ELM to use Mint-X)
>  * Then open the ELM config and choose "Use elementary icons"
> After this every time I want to change the theme for gtk (maybe I want to
> try a new theme) I need to go again in the ELM config and change it back.
> So we really need a new checkbox "Enable for ELM" that, if checked will set
> the fdo theme in the elm config, while if not checked will reset elm to use
> the icons included in the theme.
>
>
> 2. The Enlightenment-X fdo theme that we are providing is only meant to be
> used with non-efl applications, using it with elm is an incredibly waste of
> resource as they are exactly the same icons provided in the elm theme (full
> fdo lookup instead of just pick from the edj file).
> We really need to automatically set elm to use internal icons when the user
> select the Enlightenment-X theme in both the E config dialog and the ELM
> one.
> As for the implementation of this one: maybe is enough to change the
> ELM_CONFIG_ICON_THEME_ELEMENTARY define to "Enlightenment-X" ?
>
>
> If no one have objections I would ask Andrew to implement/fix this 2 issues
>
> Thanks
> davemds
>
> --
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 03/03: ecore_cocoa: fix fullscreen for older osx versions

2016-08-26 Thread Jean Guyomarc'h
jayji pushed a commit to branch master.

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

commit 6b3ca899e8a60642466ddb6d7c7574b0c3ad9d9c
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 16:48:58 2016 +0200

ecore_cocoa: fix fullscreen for older osx versions

Tested on 10.11 and 10.9.

Fixes T4395
---
 src/lib/ecore_cocoa/ecore_cocoa_window.m | 12 
 1 file changed, 12 insertions(+)

diff --git a/src/lib/ecore_cocoa/ecore_cocoa_window.m 
b/src/lib/ecore_cocoa/ecore_cocoa_window.m
index 5908b59..bb13338 100644
--- a/src/lib/ecore_cocoa/ecore_cocoa_window.m
+++ b/src/lib/ecore_cocoa/ecore_cocoa_window.m
@@ -88,6 +88,18 @@ static NSCursor *_cursors[__ECORE_COCOA_CURSOR_LAST];
ecore_event_add(ECORE_COCOA_EVENT_WINDOW_DESTROY, event, NULL, NULL);
 }
 
+/* IS THIS OSX <= 10.10 ONLY? */
+- (void)windowDidEnterFullScreen:(NSNotification *) notif EINA_UNUSED
+{
+   [self requestResize: self.frame.size];
+}
+
+/* IS THIS OSX <= 10.10 ONLY? */
+- (void)windowDidExitFullScreen:(NSNotification *) notif EINA_UNUSED
+{
+   [self requestResize: self.frame.size];
+}
+
 - (void)windowDidResize:(NSNotification *) EINA_UNUSED notif
 {
/*

-- 




[EGIT] [core/efl] master 02/03: ecore_cocoa: refactor resizing request

2016-08-26 Thread Jean Guyomarc'h
jayji pushed a commit to branch master.

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

commit 7397b9fbe9d9fb3b810c287de8d48051c368bd8b
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 16:35:31 2016 +0200

ecore_cocoa: refactor resizing request
---
 src/lib/ecore_cocoa/ecore_cocoa_window.h |  2 ++
 src/lib/ecore_cocoa/ecore_cocoa_window.m | 37 +++-
 2 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/lib/ecore_cocoa/ecore_cocoa_window.h 
b/src/lib/ecore_cocoa/ecore_cocoa_window.h
index a30240f..6eee03f 100644
--- a/src/lib/ecore_cocoa/ecore_cocoa_window.h
+++ b/src/lib/ecore_cocoa/ecore_cocoa_window.h
@@ -15,5 +15,7 @@
 
 - (BOOL)isFullScreen;
 
+- (BOOL) requestResize: (NSSize) size;
+
 @end
 
diff --git a/src/lib/ecore_cocoa/ecore_cocoa_window.m 
b/src/lib/ecore_cocoa/ecore_cocoa_window.m
index 0843614..5908b59 100644
--- a/src/lib/ecore_cocoa/ecore_cocoa_window.m
+++ b/src/lib/ecore_cocoa/ecore_cocoa_window.m
@@ -54,6 +54,26 @@ static NSCursor *_cursors[__ECORE_COCOA_CURSOR_LAST];
return YES;
 }
 
+- (BOOL) requestResize: (NSSize) size
+{
+   Ecore_Cocoa_Event_Window_Resize_Request *event;
+
+   event = malloc(sizeof(*event));
+   if (EINA_UNLIKELY(event == NULL))
+ {
+CRI("Failed to allocate Ecore_Cocoa_Event_Window_Resize_Request");
+return NO;
+ }
+
+   event->w = size.width;
+   event->h = size.height -
+  (([self isFullScreen] == YES) ? 0 : ecore_cocoa_titlebar_height_get());
+   event->cocoa_window = self;
+   ecore_event_add(ECORE_COCOA_EVENT_WINDOW_RESIZE_REQUEST, event, NULL, NULL);
+
+   return YES;
+}
+
 - (void)windowWillClose:(NSNotification *) notification
 {
Ecore_Cocoa_Event_Window_Destroy *event;
@@ -68,11 +88,8 @@ static NSCursor *_cursors[__ECORE_COCOA_CURSOR_LAST];
ecore_event_add(ECORE_COCOA_EVENT_WINDOW_DESTROY, event, NULL, NULL);
 }
 
-- (void)windowDidResize:(NSNotification *) notif
+- (void)windowDidResize:(NSNotification *) EINA_UNUSED notif
 {
-   Ecore_Cocoa_Event_Window_Resize_Request *event;
-   NSSize size = self.frame.size;
-
/*
 * Only throw a resize event and manipulate the main loop when
 * we are 100% sure we are in a live resize, and the main loop
@@ -80,17 +97,7 @@ static NSCursor *_cursors[__ECORE_COCOA_CURSOR_LAST];
 */
if (_live_resize > 0)
  {
-event = malloc(sizeof(*event));
-if (EINA_UNLIKELY(event == NULL))
-  {
- CRI("Failed to allocate Ecore_Cocoa_Event_Window_Resize_Request");
- return;
-  }
-event->w = size.width;
-event->h = size.height -
-   (([self isFullScreen] == YES) ? 0 : 
ecore_cocoa_titlebar_height_get());
-event->cocoa_window = [notif object];
-ecore_event_add(ECORE_COCOA_EVENT_WINDOW_RESIZE_REQUEST, event, NULL, 
NULL);
+[self requestResize: self.frame.size];
 
 /*
  * During live resize, NSRunLoop blocks, and prevent the 
ecore_main_loop

-- 




[EGIT] [core/efl] master 01/03: ecore_cocoa: fix memory leak

2016-08-26 Thread Jean Guyomarc'h
jayji pushed a commit to branch master.

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

commit 8d41099f9e75564e60cdeb7eb5188ddc02b1025d
Author: Jean Guyomarc'h 
Date:   Fri Aug 26 16:13:18 2016 +0200

ecore_cocoa: fix memory leak
---
 src/lib/ecore_cocoa/ecore_cocoa.m | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/ecore_cocoa/ecore_cocoa.m 
b/src/lib/ecore_cocoa/ecore_cocoa.m
index aa74b94..43501c1 100644
--- a/src/lib/ecore_cocoa/ecore_cocoa.m
+++ b/src/lib/ecore_cocoa/ecore_cocoa.m
@@ -284,6 +284,7 @@ _ecore_cocoa_feed_events(void *anEvent)
 old_flags = flags;
 break;
  }
+   free(evUp);
 
break;
 }

-- 




[EGIT] [core/enlightenment] master 01/01: Don't send keyboard leave events to unfocused clients

2016-08-26 Thread Derek Foreman
derekf pushed a commit to branch master.

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

commit c5282454698a947e00428642f0bb2ba8348b366b
Author: Derek Foreman 
Date:   Fri Aug 26 12:05:58 2016 -0500

Don't send keyboard leave events to unfocused clients

This fixes a problem when focus moves between two xwayland clients.

My testing of gtk applications shows no regressions, bug if xdg_shell
popups start behaving oddly again, look here first.
---
 src/bin/e_comp_wl.c | 6 +-
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 7e982ed..010caa9 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -2448,11 +2448,7 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, 
E_Client *ec)
 ec->parent->modal = NULL;
  }
 
-   /* FIXME: We should probably test if ec really has keyboard
-* focus, but this at least catches GTK's silly habit of creating
-* a surface, never attaching anything to it, then deleting it.
-*/
-   if (ec->visible)_e_comp_wl_keyboard_leave(ec);
+   if ((ec == e_client_focused_get()) && ec->visible) 
_e_comp_wl_keyboard_leave(ec);
 
wl_signal_emit(&ec->comp_data->destroy_signal, &ec->comp_data->surface);
 

-- 




[EGIT] [core/efl] master 01/01: Elementary: Genlist Tree Test - Add an item with the indent style to match tree style.

2016-08-26 Thread Stephen okra Houston
okra pushed a commit to branch master.

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

commit 1e458450cd2ae639bda523a08c931ba44489fdfe
Author: Stephen okra Houston 
Date:   Fri Aug 26 10:37:26 2016 -0500

Elementary: Genlist Tree Test - Add an item with the indent style to match 
tree style.
---
 src/bin/elementary/test_genlist.c | 14 +-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/bin/elementary/test_genlist.c 
b/src/bin/elementary/test_genlist.c
index afceb46..91a6205 100644
--- a/src/bin/elementary/test_genlist.c
+++ b/src/bin/elementary/test_genlist.c
@@ -1639,6 +1639,13 @@ test_genlist6(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_
api->itc2->func.state_get = gl4_state_get;
api->itc2->func.del = gl4_del;
 
+   api->itc = elm_genlist_item_class_new();
+   api->itc->item_style = "indent";
+   api->itc->func.text_get = gl4_text_get;
+   api->itc->func.content_get = gl4_content_get;
+   api->itc->func.state_get = gl4_state_get;
+   api->itc->func.del = gl4_del;
+
elm_genlist_item_append(gl, api->itc2,
(void *)1/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
@@ -1647,13 +1654,18 @@ test_genlist6(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_
(void *)2/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
-   elm_genlist_item_append(gl, api->itc1,
+   elm_genlist_item_append(gl, api->itc,
(void *)3/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
NULL/* func data */);
+   elm_genlist_item_append(gl, api->itc1,
+   (void *)4/* item data */, NULL/* parent */,
+   ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+   NULL/* func data */);
 
elm_genlist_item_class_free(api->itc1);
elm_genlist_item_class_free(api->itc2);
+   elm_genlist_item_class_free(api->itc);
 
evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, api);
evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, api);

-- 




Re: [E-devel] [EGIT] [core/efl] master 02/02: efreet - save about 240-300k or so of memory used by efreet mime

2016-08-26 Thread marcel-hollerbach
Hello,

On Mon, Aug 22, 2016 at 08:04:09PM -0700, Carsten Haitzler wrote:
> raster pushed a commit to branch master.
> 
> http://git.enlightenment.org/core/efl.git/commit/?id=561f8eaa8faebe32b9a03cf9674c147cf0d6d9ab
> 
> commit 561f8eaa8faebe32b9a03cf9674c147cf0d6d9ab
> Author: Carsten Haitzler (Rasterman) 
> Date:   Tue Aug 23 11:59:37 2016 +0900
> 
> efreet - save about 240-300k or so of memory used by efreet mime
> 
> so efreet mime was loading a bunch of mime type info files, parsing
> them on startup and allocating memory to store all this mime info -
> globs, mimetype strings and more. all a big waste of memory as its
> allocated on the heap per process where its the SAME data files loaded
> every time.
> 
> so make an efreet mime cache file and a tool to create it from mime
> files. mmap this file with all the hashes/strings in it so all that
> data is mmaped once in memory and shared between all processes and it
> is only paged in on demand - as actually read/needed so if your
> process doesnt need to know about mime stuff.. it wont touch it anyway.
> 
> this saves about 240-300k or so of memory in my tests. this has not
> covered the mime MAGIC files which still consume memory and are on the
> heap. this is more complex so it will take more time to come up with a
> nice file format for the data that is nicely mmaped etc.
> 
> @optimize
> ---

[snip]

> +
>  EAPI int
>  efreet_mime_init(void)
>  {
> @@ -194,14 +386,15 @@ efreet_mime_init(void)
>   }
>  
> efreet_mime_endianess = efreet_mime_endian_check();
> -
> -   monitors = 
> eina_hash_string_superfast_new(EINA_FREE_CB(ecore_file_monitor_del));
> -
> efreet_mime_type_cache_clear();
>  
> +   _efreet_mimedb_update();
> +
> if (!efreet_mime_init_files())
>   goto unregister_log_domain;
>  
> +   _efreet_mime_update_func = _efreet_mimedb_update;
> +
> return _efreet_mime_init_count;
>  
>  unregister_log_domain:
> @@ -228,6 +421,9 @@ efreet_mime_shutdown(void)
> if (--_efreet_mime_init_count != 0)
>   return _efreet_mime_init_count;
>  
> +   _efreet_mimedb_shutdown();
> +   _efreet_mime_update_func = NULL;
> +
> efreet_mime_icons_debug();
>  
> IF_RELEASE(_mime_inode_symlink);
> @@ -241,10 +437,7 @@ efreet_mime_shutdown(void)
> IF_RELEASE(_mime_application_octet_stream);
> IF_RELEASE(_mime_text_plain);
>  
> -   IF_FREE_LIST(globs, efreet_mime_glob_free);
> IF_FREE_LIST(magics, efreet_mime_magic_free);
> -   IF_FREE_HASH(monitors);
> -   IF_FREE_HASH(wild);
> IF_FREE_HASH(mime_icons);
> eina_log_domain_unregister(_efreet_mime_log_dom);
> _efreet_mime_log_dom = -1;
> @@ -387,11 +580,10 @@ efreet_mime_magic_type_get(const char *file)
>  EAPI const char *
>  efreet_mime_globs_type_get(const char *file)
>  {
> -   Eina_List *l;
> -   Efreet_Mime_Glob *g;
> char *sl, *p;
> -   const char *s;
> -   char *ext, *mime;
> +   const char *s, *mime;
> +   char *ext;
> +   unsigned int i, n;
>  
> EINA_SAFETY_ON_NULL_RETURN_VAL(file, NULL);
>  
> @@ -406,25 +598,27 @@ efreet_mime_globs_type_get(const char *file)
>  while (p)
>{
>   p++;
> - if (p && (mime = eina_hash_find(wild, p))) return mime;
> + if (p && (mime = _efreet_mimedb_extn_find(p))) return mime;
>   p = strchr(p, '.');
>}
>   }
>  
> -   /* Fallback to the other globs if not found */
> -   EINA_LIST_FOREACH(globs, l, g)
> +   // Fallback to the other globs if not found
> +   n = _efreet_mimedb_glob_count();
> +   for (i = 0; i < n; i++)
>   {
> -if (efreet_mime_glob_match(file, g->glob))
> -  return g->mime;
> +s = _efreet_mimedb_glob_get(i);
> +if (efreet_mime_glob_match(file, s))
> +  return _efreet_mimedb_glob_mime_get(i);

The upper line is introducing a problem.

Before the return was a stringshare, now it is not anymore.
I am not so sure if it is a good idea to fix it with 

return eina_stringshare_add(_efreet_mimedb_glob_mime_get(i));

So i am letting you know this was here :)

Greetings
   bu5hm4n
 

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


[EGIT] [apps/ephoto] master 01/01: Ephoto: Use new indent style on the genlist non tree items.

2016-08-26 Thread Stephen okra Houston
okra pushed a commit to branch master.

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

commit 91e15d8cde6652f1ef2b8c0c456a30e8689df8e7
Author: Stephen okra Houston 
Date:   Fri Aug 26 10:06:47 2016 -0500

Ephoto: Use new indent style on the genlist non tree items.
---
 src/bin/ephoto_directory_browser.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/ephoto_directory_browser.c 
b/src/bin/ephoto_directory_browser.c
index 3254daf..c09540f 100644
--- a/src/bin/ephoto_directory_browser.c
+++ b/src/bin/ephoto_directory_browser.c
@@ -1174,7 +1174,7 @@ ephoto_directory_browser_add(Ephoto *ephoto, Evas_Object 
*parent)
ephoto_thumb_browser_dirs_only_set(ephoto, EINA_FALSE);
 
_ephoto_dir_class = elm_genlist_item_class_new();
-   _ephoto_dir_class->item_style = "default";
+   _ephoto_dir_class->item_style = "indent";
_ephoto_dir_class->func.text_get = _dir_item_text_get;
_ephoto_dir_class->func.content_get = _dir_item_icon_get;
_ephoto_dir_class->func.state_get = NULL;

-- 




[EGIT] [core/efl] master 01/01: Elementary Theme: Add "indent" genlist item style. This style allows non tree items to match tree items.

2016-08-26 Thread Stephen okra Houston
okra pushed a commit to branch master.

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

commit 19cf910321fa8983ae217295f83be7ce2f464ca3
Author: Stephen okra Houston 
Date:   Fri Aug 26 10:05:20 2016 -0500

Elementary Theme: Add  "indent" genlist item style.  This style allows non 
tree items to match tree items.
---
 data/elementary/themes/edc/elm/genlist.edc | 45 ++
 1 file changed, 45 insertions(+)

diff --git a/data/elementary/themes/edc/elm/genlist.edc 
b/data/elementary/themes/edc/elm/genlist.edc
index 288440a..f51a111 100644
--- a/data/elementary/themes/edc/elm/genlist.edc
+++ b/data/elementary/themes/edc/elm/genlist.edc
@@ -381,6 +381,26 @@ group { "genlist_top"; inherit_only: 1; nomouse; 
program_source: "elm";
 }
 }
 
+group { "genlist_noarrow"; inherit_only: 1; program_source: "elm";
+   parts { 
+  rect { "arrow"; mouse;
+ desc { "default";
+fixed: 1 0;
+min: 15 15;
+aspect: 1.0 1.0;
+align: 0.0 0.5;
+rel1.to_x: "elm.swallow.pad";
+rel1.relative: 1.0 0.0;
+rel1.offset: -2 2;
+rel2.to_x: "elm.swallow.pad";
+rel2.relative: 1.0 1.0;
+rel2.offset: -2 -3;
+color: 0 0 0 0;
+ }
+  }
+   }
+}
+
 group { "elm/genlist/item/default/default"; nomouse;
data.item: "selectraise" "on";
data.item: "focusraise" "on";
@@ -779,6 +799,31 @@ ODD("elm/genlist/item_odd/default_style/default", 
"elm/genlist/item/default_styl
 COMPRESS("elm/genlist/item_compress/default_style/default", 
"elm/genlist/item/default_style/default")
 COMPRESS_ODD("elm/genlist/item_compress_odd/default_style/default", 
"elm/genlist/item/default_style/default")
 
+group { "elm/genlist/item/indent/default"; nomouse;
+   inherit: "elm/genlist/item/default/default";
+   parts {
+  swallow { "elm.swallow.icon";
+ desc { "default";
+rel1.to_x: "arrow";
+rel1.offset: 1 2;
+rel2.to_x: "arrow";
+rel2.offset: 1 -3;
+ }
+ desc { "flip_enabled";
+rel1.to_x: "arrow";
+rel1.offset: 1 2;
+rel2.to_x: "arrow";
+rel2.offset: 1 -3;
+ }
+  }
+   }
+   inherit: "genlist_noarrow";
+}
+
+ODD("elm/genlist/item_odd/indent/default", "elm/genlist/item/indent/default")
+COMPRESS("elm/genlist/item_compress/indent/default", 
"elm/genlist/item/indent/default")
+COMPRESS_ODD("elm/genlist/item_compress_odd/indent/default", 
"elm/genlist/item/indent/default")
+
 group { "elm/genlist/item/one_icon/default"; nomouse;
data.item: "selectraise" "on";
data.item: "focusraise" "on";

-- 




[EGIT] [core/enlightenment] master 01/01: ignore xwl clients when flagging wl surfaces as internal

2016-08-26 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 3a561bb00aff44644916bc100aaa341dfdcda1e0
Author: Mike Blumenkrantz 
Date:   Fri Aug 26 10:51:20 2016 -0400

ignore xwl clients when flagging wl surfaces as internal

fix T4430
---
 src/bin/e_comp_wl.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 79689d2..7e982ed 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1784,7 +1784,7 @@ _e_comp_wl_compositor_cb_surface_create(struct wl_client 
*client, struct wl_reso
   _e_comp_wl_surface_destroy);
 
wl_client_get_credentials(client, &pid, NULL, NULL);
-   if (pid == getpid()) //internal!
+   if ((client != e_comp_wl->xwl_client) && (pid == getpid())) //internal!
  ec = e_pixmap_find_client(E_PIXMAP_TYPE_WL, (int64_t)id);
if (ec)
  {
@@ -1818,7 +1818,8 @@ _e_comp_wl_compositor_cb_surface_create(struct wl_client 
*client, struct wl_reso
  ec->client.w = ec->client.h = 1;
ec->comp_data->surface = res;
ec->netwm.pid = pid;
-   ec->internal = pid == getpid();
+   if (client != e_comp_wl->xwl_client)
+ ec->internal = pid == getpid();
 
/* set reference to pixmap so we can fetch it later */
DBG("\tUsing Client: %p", ec);

-- 




[EGIT] [core/enlightenment] master 01/01: another case of stringshare misuse re:efreet_mime_type_get()

2016-08-26 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit b2dee35f41ca62d837e8ed9dee400877daed900b
Author: Mike Blumenkrantz 
Date:   Fri Aug 26 10:23:30 2016 -0400

another case of stringshare misuse re:efreet_mime_type_get()

ref 1cb47b14111defa86e8111aa6d3db84241bb40e0
---
 src/modules/everything/evry_plug_files.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/everything/evry_plug_files.c 
b/src/modules/everything/evry_plug_files.c
index fb045c1..5cde6c5 100644
--- a/src/modules/everything/evry_plug_files.c
+++ b/src/modules/everything/evry_plug_files.c
@@ -349,7 +349,7 @@ _file_add(Plugin *p, Evry_Item *item)
char *path = (char *)file->path;
 
file->path = eina_stringshare_add(path);
-   file->mime = eina_stringshare_ref(file->mime);
+   file->mime = eina_stringshare_add(file->mime);
 
item->label = eina_stringshare_add(filename);
item->id = eina_stringshare_ref(file->path);

-- 




[EGIT] [core/efl] master 01/01: elm: Show code widget width marker after the column

2016-08-26 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

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

commit 6fce2fb80ba38ff0bc355b28f37901e377bf3f4f
Author: Andy Williams 
Date:   Fri Aug 26 15:17:12 2016 +0100

elm: Show code widget width marker after the column

Provide a clearer indication of what width is available
---
 src/lib/elementary/elm_code_widget.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_code_widget.c 
b/src/lib/elementary/elm_code_widget.c
index 9f01f0c..823a198 100644
--- a/src/lib/elementary/elm_code_widget.c
+++ b/src/lib/elementary/elm_code_widget.c
@@ -151,7 +151,7 @@ _elm_code_widget_status_type_get(Elm_Code_Widget *widget, 
Elm_Code_Line *line, u
if (pd->editable && pd->focussed && pd->cursor_line == line->number)
  return ELM_CODE_STATUS_TYPE_CURRENT;
 
-   if (pd->line_width_marker == col)
+   if (pd->line_width_marker == col-1)
  return ELM_CODE_WIDGET_COLOR_GUTTER_BG;
 
return ELM_CODE_STATUS_TYPE_DEFAULT;

-- 




[EGIT] [tools/edi] master 01/01: Add Create Project menu item

2016-08-26 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=7f6fdac3766603ef1dfe64564401dca93ad2fcdb

commit 7f6fdac3766603ef1dfe64564401dca93ad2fcdb
Author: Andy Williams 
Date:   Fri Aug 26 15:13:54 2016 +0100

Add Create Project menu item

Also provide command line argument to load the create
screen on launch.
---
 src/bin/edi_config.c  |  2 +-
 src/bin/edi_main.c| 20 ++--
 src/bin/screens/edi_screens.h |  8 
 src/bin/screens/edi_welcome.c | 14 +-
 4 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/src/bin/edi_config.c b/src/bin/edi_config.c
index 6601e8b..0088111 100644
--- a/src/bin/edi_config.c
+++ b/src/bin/edi_config.c
@@ -450,7 +450,7 @@ _edi_project_config_load()
_edi_project_config->gui.bottomopen = EINA_FALSE;
_edi_project_config->gui.bottomtab = 0;
 
-   _edi_project_config->gui.width_marker = 80;
+   _edi_project_config->gui.width_marker = 81;
_edi_project_config->gui.tabstop = 8;
_edi_project_config->gui.toolbar_hidden = EINA_FALSE;
 
diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c
index 351cdcf..2965479 100644
--- a/src/bin/edi_main.c
+++ b/src/bin/edi_main.c
@@ -683,6 +683,16 @@ _tb_settings_cb(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *even
 }
 
 static void
+_edi_menu_project_new_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+   char path[PATH_MAX];
+
+   eina_file_path_join(path, sizeof(path), elm_app_bin_dir_get(), "edi -c");
+   ecore_exe_run(path, NULL);
+}
+
+static void
 _edi_menu_new_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
  void *event_info EINA_UNUSED)
 {
@@ -831,6 +841,8 @@ _edi_menu_setup(Evas_Object *win)
menu = elm_win_main_menu_get(win);
 
menu_it = elm_menu_item_add(menu, NULL, NULL, "File", NULL, NULL);
+   elm_menu_item_add(menu, menu_it, "folder-new", "New Project ...", 
_edi_menu_project_new_cb, NULL);
+   elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_add(menu, menu_it, "document-new", "New ...", 
_edi_menu_new_cb, NULL);
elm_menu_item_add(menu, menu_it, "document-save", "Save", 
_edi_menu_save_cb, NULL);
elm_menu_item_add(menu, menu_it, "window-new", "New window", 
_edi_menu_open_window_cb, NULL);
@@ -1143,6 +1155,7 @@ static const Ecore_Getopt optdesc = {
   "The Enlightened IDE",
   EINA_TRUE,
   {
+ECORE_GETOPT_STORE_TRUE('c', "create", "Create a new project"),
 ECORE_GETOPT_LICENSE('L', "license"),
 ECORE_GETOPT_COPYRIGHT('C', "copyright"),
 ECORE_GETOPT_VERSION('V', "version"),
@@ -1155,10 +1168,11 @@ EAPI_MAIN int
 elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
 {
int args;
-   Eina_Bool quit_option = EINA_FALSE;
+   Eina_Bool create = EINA_FALSE, quit_option = EINA_FALSE;
const char *project_path = NULL;
 
Ecore_Getopt_Value values[] = {
+ ECORE_GETOPT_VALUE_BOOL(create),
  ECORE_GETOPT_VALUE_BOOL(quit_option),
  ECORE_GETOPT_VALUE_BOOL(quit_option),
  ECORE_GETOPT_VALUE_BOOL(quit_option),
@@ -1205,7 +1219,9 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
 
if (!project_path)
  {
-if (!edi_welcome_show())
+if (create)
+  edi_welcome_create_show();
+else if (!edi_welcome_show())
   goto end;
  }
else if (!ecore_file_is_dir(project_path))
diff --git a/src/bin/screens/edi_screens.h b/src/bin/screens/edi_screens.h
index 6c1504f..e86c660 100644
--- a/src/bin/screens/edi_screens.h
+++ b/src/bin/screens/edi_screens.h
@@ -31,6 +31,14 @@ extern "C" {
  */
 Evas_Object *edi_welcome_show();
 
+/**
+ * Initialise a new Edi welcome screen and open it on the create project panel.
+ *
+ * @return The welcome screen window that is created
+ *
+ * @ingroup UI
+ */
+Evas_Object *edi_welcome_create_show();
 
 /**
  * Initialize a new Edi about window and display it.
diff --git a/src/bin/screens/edi_welcome.c b/src/bin/screens/edi_welcome.c
index 28507f7..e879d32 100644
--- a/src/bin/screens/edi_welcome.c
+++ b/src/bin/screens/edi_welcome.c
@@ -14,7 +14,7 @@
 
 #define _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH 4
 
-static Evas_Object *_welcome_window;
+static Evas_Object *_welcome_window, *_welcome_naviframe;
 static Evas_Object *_edi_new_popup;
 static Evas_Object *_edi_welcome_list;
 static Evas_Object *_edi_project_box;
@@ -398,6 +398,7 @@ Evas_Object *edi_welcome_show()
evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, naviframe);
evas_object_show(naviframe);
+   _welcome_naviframe = naviframe;
 
hbx = elm_box_add(naviframe);
elm_box_horizontal_set(hbx, EINA_TRUE);
@@ -465,3 +466,14 @@ Evas_Object *edi_welcome_show()
 
return win;
 }
+
+Evas_Object *
+edi_welcome_create_show()
+{
+   Evas_Object *win;
+
+   win = edi_welcome_show();
+
+   _edi_welcome_project_new_cb(_welcome_naviframe

[EGIT] [core/enlightenment] master 01/01: use stringshare_add() for evry files plugin mime types

2016-08-26 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 1cb47b14111defa86e8111aa6d3db84241bb40e0
Author: Mike Blumenkrantz 
Date:   Fri Aug 26 10:17:05 2016 -0400

use stringshare_add() for evry files plugin mime types

the return of this function is not guaranteed to be stringshared
---
 src/modules/everything/evry_plug_files.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/everything/evry_plug_files.c 
b/src/modules/everything/evry_plug_files.c
index f2e0f6e..fb045c1 100644
--- a/src/modules/everything/evry_plug_files.c
+++ b/src/modules/everything/evry_plug_files.c
@@ -113,7 +113,7 @@ _item_fill(Evry_Item_File *file)
 const char *mime = efreet_mime_type_get(file->path);
 
 if (mime)
-  file->mime = eina_stringshare_ref(mime);
+  file->mime = eina_stringshare_add(mime);
 else
   file->mime = eina_stringshare_add("unknown");
  }

-- 




[EGIT] [core/efl] master 01/01: efreet: add doc note about stringshare reliability for efreet_mime_type_get()

2016-08-26 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 8c3efbd174a1bbeb26a0b25c39b4d2c2768e70ff
Author: Mike Blumenkrantz 
Date:   Fri Aug 26 10:20:45 2016 -0400

efreet: add doc note about stringshare reliability for 
efreet_mime_type_get()
---
 src/lib/efreet/Efreet_Mime.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/efreet/Efreet_Mime.h b/src/lib/efreet/Efreet_Mime.h
index 4ffac14..1e1bc2b 100644
--- a/src/lib/efreet/Efreet_Mime.h
+++ b/src/lib/efreet/Efreet_Mime.h
@@ -63,6 +63,7 @@ EAPI int efreet_mime_shutdown(void);
  * @param file The file to find the mime type
  * @return Mime type as a string or NULL if the file doesn't exist.
  * @brief Retrieve the mime type of a file
+ * @note The return value of this function is not guaranteed to be 
stringshared.
  */
 EAPI const char *efreet_mime_type_get(const char *file);
 

-- 




Re: [E-devel] Hosting for new theme site

2016-08-26 Thread Andrew Williams
How are we going with this configuration? Is there anything more you need
from me?

Thanks,
Andy

On Fri, 12 Aug 2016 at 22:59, Andrew Williams  wrote:

> I've added the license and a "release" branch - I hope branch is OK, I
> prefer that to shifting a tag for latest release.
> If you need distutil in there too I shall try to look at it tomorrow -
> that's new to me.
>
> Thanks again,
> Andrew
>
> On Fri, 12 Aug 2016 at 22:44 Andrew Williams  wrote:
>
>> Aha, I see you applied them already - thanks :)
>>
>> Andrew
>>
>> On Fri, 12 Aug 2016 at 22:26 Andrew Williams 
>> wrote:
>>
>>> Thanks so much for all of this, looking at it just now.
>>> Andrew
>>> On Fri, 12 Aug 2016 at 21:03, Bertrand Jacquin 
>>> wrote:
>>>
 Can you please apply to two attached patches ?

 Thanks

 On Fri, Aug 12, 2016 at 08:59:27PM +0100, Bertrand Jacquin wrote:
 > Also, sheebang is missing on run.py
 >
 > On Fri, Aug 12, 2016 at 08:47:16PM +0100, Bertrand Jacquin wrote:
 > > Hi Andrew,
 > >
 > > Mutliple comments about the app:
 > >
 > > - Can you please create tag release so I can stick on it ?
 > > - Can you define the licence in the code itself ?
 > > - Can you disable the debug mode by default ?
 > > - Can you use distutil or something like this to automate
 installation ?
 > > - Can you try to use mod_python to avoid having to run a daemon ?
 That
 > >   would help automation
 > >
 > > Cheers,
 > > Beber
 > >
 > > On Thu, Aug 11, 2016 at 02:40:46PM +, Andrew Williams wrote:
 > > > Hi,
 > > >
 > > > Thanks so much for looking at this :)
 > > > Git is
 https://git.enlightenment.org/devs/ajwillia-ms/extra-server.git/
 > > > Probably needs to move if it proves to be successful.
 > > >
 > > > Thanks again - ping me if you have something and I'll test it out.
 > > > Andrew
 > > > On Thu, 11 Aug 2016 at 13:32, Bertrand Jacquin
  wrote:
 > > >
 > > > > How in the name of Jaysus are ya,
 > > > >
 > > > > Thanks for the forward raster, I'll do the needed bits on DNS,
 getting
 > > > > extra-server
 > > > > deployed to e5-web1 and enable the git deployment hooks during
 the week
 > > > > end.
 > > > >
 > > > > Andy, can you share with me the git repo for extra.e.org so I
 can do the
 > > > > preliminary tests ?
 > > > >
 > > > > Slán
 > > > > Bertrand
 > > > >
 > > > > On 11/08/2016 03:58, Carsten Haitzler wrote:
 > > > > > On Sat, 06 Aug 2016 22:28:13 + Andrew Williams
 > > > > >  said:
 > > > > >
 > > > > > hey beber. did you see this? does andy have to do anything to
 help you
 > > > > > out? let
 > > > > > him know! :)
 > > > > >
 > > > > >> Hi all,
 > > > > >>
 > > > > >> So I finally have a little more time to work on some theme
 > > > > >> distribution /
 > > > > >> discovery and have a pretty skeletal server code stack set
 up.
 > > > > >> To start getting folk interested I hoped this could be moved
 to host
 > > > > >> on E
 > > > > >> infrastructure...
 > > > > >>
 > > > > >> Can anyone please get the python app in
 devs/ajwillia-ms/extra-server
 > > > > >> running on one of our hosts and point the dns
 extra.enlightenment.org
 > > > > >> at it
 > > > > >> with whatever virtualhost config is needed? As a bonus can
 the server
 > > > > >> update on a git hook? :)
 > > > > >>
 > > > > >> Thanks so much!
 > > > > >> I'm working on "extra" (the client) as well - hoping to get
 theme and
 > > > > >> wallpaper listing and download working in a week or so...
 > > > > >>
 > > > > >> Thanks for listening :)
 > > > > >> Andrew
 > > > > >>
 > > > >
 --
 > > > > >> ___
 > > > > >> enlightenment-devel mailing list
 > > > > >> enlightenment-devel@lists.sourceforge.net
 > > > > >>
 https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
 > > > > >>
 > > > >
 > > > > --
 > > > > Bertrand
 > > > >
 > >
 > > --
 > > Bertrand
 >
 >
 >
 > --
 > Bertrand



 --
 Bertrand

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


Re: [E-devel] [EGIT] [core/efl] master 01/01: efreet - fix mime file path messing with short paths like /

2016-08-26 Thread Mike Blumenkrantz
I just noticed this while doing some bisecting...was it intentional that
you included undocumented evas engine changes in your efreet commit?

On Tue, Jul 5, 2016 at 3:29 AM Carsten Haitzler 
wrote:

> raster pushed a commit to branch master.
>
>
> http://git.enlightenment.org/core/efl.git/commit/?id=2ca5075193e27dbc30f26e478019719a5360cc84
>
> commit 2ca5075193e27dbc30f26e478019719a5360cc84
> Author: Carsten Haitzler (Rasterman) 
> Date:   Tue Jul 5 15:56:43 2016 +0900
>
> efreet - fix mime file path messing with short paths like /
>
> this fixes T4015
>
> @fix
> ---
>  src/lib/efreet/efreet_mime.c   | 7 +--
>  src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m | 1 +
>  src/modules/evas/engines/gl_x11/evas_x_main.c  | 2 ++
>  src/modules/evas/engines/wayland_egl/evas_wl_main.c| 1 +
>  4 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/src/lib/efreet/efreet_mime.c b/src/lib/efreet/efreet_mime.c
> index adfa790..87ca8ef 100644
> --- a/src/lib/efreet/efreet_mime.c
> +++ b/src/lib/efreet/efreet_mime.c
> @@ -711,10 +711,13 @@ efreet_mime_special_check(const char *file)
> parent[PATH_MAX - 1] = '\0';
>
> /* Kill any trailing slash */
> -   parent[--path_len] = '\0';
> +   if (parent[path_len - 1] == '/')
> + parent[--path_len] = '\0';
>
> /* Truncate to last slash */
> -   while (parent[--path_len] != '/') parent[path_len] = '\0';
> +   while ((path_len > 0) &&
> +  (parent[--path_len] != '/'))
> + parent[path_len] = '\0';
>
>  #ifdef _WIN32
> if (!stat(file, &s2))
> diff --git a/src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m
> b/src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m
> index 15dc218..7df919f 100644
> --- a/src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m
> +++ b/src/modules/evas/engines/gl_cocoa/evas_gl_cocoa_main.m
> @@ -120,6 +120,7 @@ eng_window_free(Evas_GL_Cocoa_Window *gw)
>  void
>  eng_window_use(Evas_GL_Cocoa_Window *gw)
>  {
> +   if ((gw) && (!gw->gl_context)) return;
> if (_evas_gl_cocoa_window != gw)
>   {
>  [[(NSOpenGLView*)gw->view openGLContext] makeCurrentContext];
> diff --git a/src/modules/evas/engines/gl_x11/evas_x_main.c
> b/src/modules/evas/engines/gl_x11/evas_x_main.c
> index 59361e1..f5e2edf 100644
> --- a/src/modules/evas/engines/gl_x11/evas_x_main.c
> +++ b/src/modules/evas/engines/gl_x11/evas_x_main.c
> @@ -676,6 +676,8 @@ eng_window_use(Outbuf *gw)
> xwin = _tls_outbuf_get();
>
> glsym_evas_gl_preload_render_lock(eng_window_make_current, gw);
> +   if ((gw) && (!gw->gl_context)) return;
> +
>  #ifdef GL_GLES
> if (xwin)
>   {
> diff --git a/src/modules/evas/engines/wayland_egl/evas_wl_main.c
> b/src/modules/evas/engines/wayland_egl/evas_wl_main.c
> index 489a475..14e13ff 100644
> --- a/src/modules/evas/engines/wayland_egl/evas_wl_main.c
> +++ b/src/modules/evas/engines/wayland_egl/evas_wl_main.c
> @@ -233,6 +233,7 @@ eng_window_use(Outbuf *gw)
> Eina_Bool force = EINA_FALSE;
>
> glsym_evas_gl_preload_render_lock(eng_preload_make_current, gw);
> +   if ((gw) && (!gw->gl_context)) return;
>
> if (_evas_gl_wl_window)
>   {
>
> --
>
>
>
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [tools/eflete] master 02/02: editor: set part align without save

2016-08-26 Thread Vyacheslav Reutskiy
rimmed pushed a commit to branch master.

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

commit bd8f6cf06352ad29b3d6cd31af79912f897b3131
Author: Vyacheslav Reutskiy 
Date:   Fri Aug 26 16:32:41 2016 +0300

editor: set part align without save

Change-Id: I428df0694df4ec00d10f9618da582592ca85c1b4
---
 src/bin/editor/editor_states.c | 46 +++---
 1 file changed, 43 insertions(+), 3 deletions(-)

diff --git a/src/bin/editor/editor_states.c b/src/bin/editor/editor_states.c
index dbf7713..c8c18de 100644
--- a/src/bin/editor/editor_states.c
+++ b/src/bin/editor/editor_states.c
@@ -34,9 +34,6 @@ EDITOR_STATE_INT(rel1_offset_y, ATTRIBUTE_STATE_REL1_OFFSET_Y)
 EDITOR_STATE_INT(rel2_offset_x, ATTRIBUTE_STATE_REL2_OFFSET_X)
 EDITOR_STATE_INT(rel2_offset_y, ATTRIBUTE_STATE_REL2_OFFSET_Y)
 
-EDITOR_STATE_DOUBLE(align_x, ATTRIBUTE_STATE_ALIGN_X)
-EDITOR_STATE_DOUBLE(align_y, ATTRIBUTE_STATE_ALIGN_Y)
-
 EDITOR_STATE_DOUBLE(aspect_min, ATTRIBUTE_STATE_ASPECT_MIN)
 EDITOR_STATE_DOUBLE(aspect_max, ATTRIBUTE_STATE_ASPECT_MAX)
 
@@ -158,6 +155,49 @@ editor_state_min_## VAL ##_set(Evas_Object *edit_object, 
Change *change, Eina_Bo
 MIN_SET(w, W)
 MIN_SET(h, H)
 
+#define ALIGN_SET(FUNC, ATTRIBUTE) \
+Eina_Bool \
+editor_state_## FUNC ##_set(Evas_Object *edit_object, Change *change, 
Eina_Bool merge, Eina_Bool apply, \
+const char *part_name, const char *state_name, 
double state_val, double new_val) \
+{ \
+   Diff *diff; \
+   Attribute attribute = ATTRIBUTE; \
+   assert(edit_object != NULL); \
+   assert(part_name != NULL); \
+   assert(state_name != NULL); \
+   if (change) \
+ { \
+double old_value = edje_edit_state_## FUNC ##_get(edit_object, 
part_name, state_name, state_val); \
+diff = mem_calloc(1, sizeof(Diff)); \
+diff->redo.type = FUNCTION_TYPE_STRING_STRING_DOUBLE_DOUBLE; \
+diff->redo.function = editor_state_## FUNC ##_set; \
+diff->redo.args.type_ssdd.s1 = eina_stringshare_add(part_name); \
+diff->redo.args.type_ssdd.s2 = eina_stringshare_add(state_name); \
+diff->redo.args.type_ssdd.d3 = state_val; \
+diff->redo.args.type_ssdd.d4 = new_val; \
+diff->undo.type = FUNCTION_TYPE_STRING_STRING_DOUBLE_DOUBLE; \
+diff->undo.function = editor_state_## FUNC ##_set; \
+diff->undo.args.type_ssdd.s1 = eina_stringshare_add(part_name); \
+diff->undo.args.type_ssdd.s2 = eina_stringshare_add(state_name); \
+diff->undo.args.type_ssdd.d3 = state_val; \
+diff->undo.args.type_ssdd.d4 = old_value; \
+if (merge) \
+  change_diff_merge_add(change, diff); \
+else \
+  change_diff_add(change, diff); \
+ } \
+   if (apply) \
+ { \
+   CRIT_ON_FAIL(edje_edit_state_## FUNC ##_set(edit_object, part_name, 
state_name, state_val, new_val)); \
+   _editor_project_changed(); \
+   if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, 
SIGNAL_EDITOR_ATTRIBUTE_CHANGED, &attribute); \
+ } \
+   return true; \
+}
+
+ALIGN_SET(align_x, ATTRIBUTE_STATE_ALIGN_X)
+ALIGN_SET(align_y, ATTRIBUTE_STATE_ALIGN_Y)
+
 EDITOR_STATE_BOOL(fixed_h, ATTRIBUTE_STATE_FIXED_H)
 EDITOR_STATE_BOOL(fixed_w, ATTRIBUTE_STATE_FIXED_W)
 EDITOR_STATE_BOOL(fill_smooth, ATTRIBUTE_STATE_FILL_SMOOTH)

-- 




[EGIT] [tools/eflete] master 01/02: workspace: don't forget to recalc normal.layout before hidding

2016-08-26 Thread Vitalii Vorobiov
rimmed pushed a commit to branch master.

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

commit bb3d77761acc58846a82b978a5cf38aabdd51287
Author: Vitalii Vorobiov 
Date:   Thu Aug 25 17:12:14 2016 +0300

workspace: don't forget to recalc normal.layout before hidding

or else bad stuff (like after code=>demo=>normal) might happen

@fix
---
 src/bin/ui/workspace/workspace.c | 7 +++
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 3be50ad..90e0a52 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -1162,18 +1162,17 @@ _mode_cb(void *data,
if (mode == wd->mode) return;
 
wd->mode = mode;
+   elm_panes_fixed_set(wd->panes_h, true);
+   elm_panes_content_right_size_set(wd->panes_h, 0);
+   edje_object_calc_force(elm_layout_edje_get(wd->panes_h));
content = elm_object_part_content_unset(wd->panes_h, "left");
evas_object_hide(content);
-   //content = elm_object_part_content_unset(wd->panes, "right");
-   evas_object_hide(content);
if (wd->demo.content)
  {
 evas_object_del(wd->demo.content);
 wd->demo.content = NULL;
  }
 
-   elm_panes_fixed_set(wd->panes_h, true);
-   elm_panes_content_right_size_set(wd->panes_h, 0);
switch (wd->mode)
  {
   case MODE_CODE:

-- 




[EGIT] [core/efl] master 01/01: docs: add an option to disable title plugin usage

2016-08-26 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 17d79745a315a4a72ae44a7f8a6227dfd866c143
Author: Daniel Kolesa 
Date:   Fri Aug 26 14:45:45 2016 +0100

docs: add an option to disable title plugin usage
---
 src/scripts/elua/apps/docgen/writer.lua | 8 ++--
 src/scripts/elua/apps/gendoc.lua| 6 --
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/scripts/elua/apps/docgen/writer.lua 
b/src/scripts/elua/apps/docgen/writer.lua
index aa29426..91d683e 100644
--- a/src/scripts/elua/apps/docgen/writer.lua
+++ b/src/scripts/elua/apps/docgen/writer.lua
@@ -58,8 +58,12 @@ M.Writer = util.Object:clone {
 dutil.mkdir_p(subs)
 self.file = assert(io.open(dutil.make_page(subs), "w"))
 if title then
-self:write_raw("", title, "")
-self:write_nl()
+if M.has_feature("title") then
+self:write_raw("", title, "")
+self:write_nl()
+else
+self:write_h(title, 1)
+end
 end
 end,
 
diff --git a/src/scripts/elua/apps/gendoc.lua b/src/scripts/elua/apps/gendoc.lua
index a50d3bb..cf50b86 100644
--- a/src/scripts/elua/apps/gendoc.lua
+++ b/src/scripts/elua/apps/gendoc.lua
@@ -1058,7 +1058,8 @@ getopt.parse {
 { nil, "graph-theme-light", false, help = "Use light builtin graph 
theme." },
 { nil, "disable-graphviz", false, help = "Disable graphviz usage." },
 { nil, "disable-notes", false, help = "Disable notes plugin usage." },
-{ nil, "disable-folded", false, help = "Disable folded plugin usage." }
+{ nil, "disable-folded", false, help = "Disable folded plugin usage." 
},
+{ nil, "disable-title", false, help = "Disable title plugin usage." }
 },
 error_cb = function(parser, msg)
 io.stderr:write(msg, "\n")
@@ -1096,7 +1097,8 @@ getopt.parse {
 local wfeatures = {
 notes = not opts["disable-notes"],
 folds = not opts["disable-folded"],
-dot = not opts["disable-graphviz"]
+dot = not opts["disable-graphviz"],
+title = not opts["disable-title"]
 }
 writer.init(rootns, wfeatures)
 dutil.rm_root()

-- 




[EGIT] [core/efl] master 01/01: docs: let the writer handle title headings

2016-08-26 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit d69d54ff17a73eead97cfe3eabe34298d2b7e9ad
Author: Daniel Kolesa 
Date:   Fri Aug 26 14:42:19 2016 +0100

docs: let the writer handle title headings
---
 src/scripts/elua/apps/docgen/writer.lua |  2 +-
 src/scripts/elua/apps/gendoc.lua| 66 ++---
 2 files changed, 29 insertions(+), 39 deletions(-)

diff --git a/src/scripts/elua/apps/docgen/writer.lua 
b/src/scripts/elua/apps/docgen/writer.lua
index 9f79307..aa29426 100644
--- a/src/scripts/elua/apps/docgen/writer.lua
+++ b/src/scripts/elua/apps/docgen/writer.lua
@@ -58,7 +58,7 @@ M.Writer = util.Object:clone {
 dutil.mkdir_p(subs)
 self.file = assert(io.open(dutil.make_page(subs), "w"))
 if title then
-self:write_raw("~~Title: ", title, " ~~")
+self:write_raw("", title, "")
 self:write_nl()
 end
 end,
diff --git a/src/scripts/elua/apps/gendoc.lua b/src/scripts/elua/apps/gendoc.lua
index edd50a9..a50d3bb 100644
--- a/src/scripts/elua/apps/gendoc.lua
+++ b/src/scripts/elua/apps/gendoc.lua
@@ -327,7 +327,7 @@ local build_functable = function(f, title, ctitle, cl, tp)
 if #t == 0 then
 return
 end
-f:write_h(title, 3)
+f:write_h(title, 2)
 local nt = {}
 for i, v in ipairs(t) do
 local lbuf = writer.Buffer()
@@ -354,7 +354,6 @@ end
 
 local build_ref = function()
 local f = writer.Writer("reference", "EFL Reference")
-f:write_h("EFL Reference", 2)
 
 local classes = {}
 local ifaces = {}
@@ -692,7 +691,6 @@ local build_class = function(cl)
 local f = writer.Writer(cln, cl:full_name_get())
 stats.check_class(cl)
 
-f:write_h(cl:full_name_get(), 2)
 keyref.add(cl:full_name_get():gsub("%.", "_"), cln, "c")
 
 f:write_folded("Inheritance graph", function()
@@ -702,11 +700,11 @@ local build_class = function(cl)
 f:write_nl(2)
 end
 
-f:write_h("Inheritance hierarchy", 3)
+f:write_h("Inheritance hierarchy", 2)
 f:write_list(build_inherits(cl))
 f:write_nl()
 
-f:write_h("Description", 3)
+f:write_h("Description", 2)
 f:write_raw(cl:doc_get():full_get(nil, true))
 f:write_nl(2)
 
@@ -714,7 +712,7 @@ local build_class = function(cl)
 build_functable(f, "Properties", "Property name",
 cl, dtree.Function.PROPERTY)
 
-f:write_h("Events", 3)
+f:write_h("Events", 2)
 local evs = cl:events_get()
 if #evs == 0 then
 f:write_raw("This class does not define any events.\n")
@@ -745,13 +743,11 @@ local build_classes = function()
 end
 
 local write_tsigs = function(f, tp, ns)
-f:write_h(tp:full_name_get(), 2)
-
-f:write_h("Signature", 3)
+f:write_h("Signature", 2)
 f:write_code(tp:serialize())
 f:write_nl()
 
-f:write_h("C signature", 3)
+f:write_h("C signature", 2)
 f:write_code(tp:serialize_c(ns), "c")
 f:write_nl()
 end
@@ -763,7 +759,7 @@ local build_alias = function(tp)
 
 write_tsigs(f, tp, ns)
 
-f:write_h("Description", 3)
+f:write_h("Description", 2)
 f:write_raw(tp:doc_get():full_get(nil, true))
 f:write_nl(2)
 
@@ -777,11 +773,11 @@ local build_struct = function(tp)
 
 write_tsigs(f, tp, ns)
 
-f:write_h("Description", 3)
+f:write_h("Description", 2)
 f:write_raw(tp:doc_get():full_get(nil, true))
 f:write_nl(2)
 
-f:write_h("Fields", 3)
+f:write_h("Fields", 2)
 
 local arr = {}
 for i, fl in ipairs(tp:struct_fields_get()) do
@@ -803,11 +799,11 @@ local build_enum = function(tp)
 
 write_tsigs(f, tp, ns)
 
-f:write_h("Description", 3)
+f:write_h("Description", 2)
 f:write_raw(tp:doc_get():full_get(nil, true))
 f:write_nl(2)
 
-f:write_h("Fields", 3)
+f:write_h("Fields", 2)
 
 local arr = {}
 for i, fl in ipairs(tp:enum_fields_get()) do
@@ -884,16 +880,16 @@ local build_vallist = function(f, pg, ps, title)
 if same then ps = {} end
 end
 if #pg > 0 or #ps > 0 then
-f:write_h(title, 3)
+f:write_h(title, 2)
 if #pg > 0 then
 if #ps > 0 then
-f:write_h("Getter", 4)
+f:write_h("Getter", 3)
 end
 build_parlist(f, pg, true)
 end
 if #ps > 0 then
 if #pg > 0 then
-f:write_h("Setter", 4)
+f:write_h("Setter", 3)
 end
 build_parlist(f, ps, true)
 end
@@ -905,24 +901,22 @@ build_method = function(fn, cl)
 local f = writer.Writer(mns, cl:full_name_get() .. "." .. fn:name_get())
 stats.check_method(fn, cl)
 
-f:write_h(cl:full_name_get() .. "." .. fn:name_get(), 2)
-
-f:write_h("Signature", 3)
+f:write_h("Signature", 2)
 f:write_code(gen_method_sig(fn, cl))
 f:write_nl()
 
-f:write_h("C signature", 3)
+f:write_h("C signature", 

[EGIT] [core/efl] master 01/01: docs: generate proper title for all pages

2016-08-26 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit cdaa4ab68c8cca562a25e4330f34193ac6efa1f1
Author: Daniel Kolesa 
Date:   Fri Aug 26 14:31:33 2016 +0100

docs: generate proper title for all pages
---
 src/scripts/elua/apps/gendoc.lua | 18 +-
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/scripts/elua/apps/gendoc.lua b/src/scripts/elua/apps/gendoc.lua
index 44aea0b..edd50a9 100644
--- a/src/scripts/elua/apps/gendoc.lua
+++ b/src/scripts/elua/apps/gendoc.lua
@@ -353,7 +353,7 @@ local build_functable = function(f, title, ctitle, cl, tp)
 end
 
 local build_ref = function()
-local f = writer.Writer("reference")
+local f = writer.Writer("reference", "EFL Reference")
 f:write_h("EFL Reference", 2)
 
 local classes = {}
@@ -689,7 +689,7 @@ end
 
 local build_class = function(cl)
 local cln = cl:nspaces_get()
-local f = writer.Writer(cln)
+local f = writer.Writer(cln, cl:full_name_get())
 stats.check_class(cl)
 
 f:write_h(cl:full_name_get(), 2)
@@ -758,7 +758,7 @@ end
 
 local build_alias = function(tp)
 local ns = dtree.Node.nspaces_get(tp, "alias")
-local f = writer.Writer(ns)
+local f = writer.Writer(ns, tp:full_name_get())
 stats.check_alias(tp)
 
 write_tsigs(f, tp, ns)
@@ -772,7 +772,7 @@ end
 
 local build_struct = function(tp)
 local ns = dtree.Node.nspaces_get(tp, "struct")
-local f = writer.Writer(ns)
+local f = writer.Writer(ns, tp:full_name_get())
 stats.check_struct(tp)
 
 write_tsigs(f, tp, ns)
@@ -798,7 +798,7 @@ end
 
 local build_enum = function(tp)
 local ns = dtree.Node.nspaces_get(tp, "enum")
-local f = writer.Writer(ns)
+local f = writer.Writer(ns, tp:full_name_get())
 stats.check_enum(tp)
 
 write_tsigs(f, tp, ns)
@@ -823,7 +823,7 @@ local build_enum = function(tp)
 end
 
 local build_variable = function(v, constant)
-local f = writer.Writer(v:nspaces_get())
+local f = writer.Writer(v:nspaces_get(), v:full_name_get())
 if constant then
 stats.check_constant(v)
 else
@@ -902,7 +902,7 @@ end
 
 build_method = function(fn, cl)
 local mns = fn:nspaces_get(cl)
-local f = writer.Writer(mns)
+local f = writer.Writer(mns, cl:full_name_get() .. "." .. fn:name_get())
 stats.check_method(fn, cl)
 
 f:write_h(cl:full_name_get() .. "." .. fn:name_get(), 2)
@@ -931,7 +931,7 @@ end
 
 build_property = function(fn, cl)
 local pns = fn:nspaces_get(cl)
-local f = writer.Writer(pns)
+local f = writer.Writer(pns, cl:full_name_get() .. "." .. fn:name_get())
 
 local ft = fn:type_get()
 local isget = (ft == fn.PROP_GET or ft == fn.PROPERTY)
@@ -1006,7 +1006,7 @@ end
 
 build_event = function(ev, cl)
 local evn = ev:nspaces_get(cl)
-local f = writer.Writer(evn)
+local f = writer.Writer(evn, cl:full_name_get() .. ": " .. ev:name_get())
 
 f:write_h(cl:full_name_get() .. ": " .. ev:name_get(), 2)
 

-- 




[EGIT] [core/efl] master 01/01: docs: add writer support for pagetitle plugin

2016-08-26 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit b04c0cf241763d6153860eaa6520adc0cd26d7d9
Author: Daniel Kolesa 
Date:   Fri Aug 26 14:28:11 2016 +0100

docs: add writer support for pagetitle plugin
---
 src/scripts/elua/apps/docgen/writer.lua | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/scripts/elua/apps/docgen/writer.lua 
b/src/scripts/elua/apps/docgen/writer.lua
index 0bfacb7..9f79307 100644
--- a/src/scripts/elua/apps/docgen/writer.lua
+++ b/src/scripts/elua/apps/docgen/writer.lua
@@ -48,7 +48,7 @@ M.Writer = util.Object:clone {
 INCLUDE_NAMESPACE = 2,
 INCLUDE_TAG = 3,
 
-__ctor = function(self, path)
+__ctor = function(self, path, title)
 local subs
 if type(path) == "table" then
 subs = dutil.path_join(unpack(path))
@@ -57,6 +57,10 @@ M.Writer = util.Object:clone {
 end
 dutil.mkdir_p(subs)
 self.file = assert(io.open(dutil.make_page(subs), "w"))
+if title then
+self:write_raw("~~Title: ", title, " ~~")
+self:write_nl()
+end
 end,
 
 write_raw = function(self, ...)

-- 




[EGIT] [tools/enventor] master 01/01: bump up version.

2016-08-26 Thread Hermet Park
hermet pushed a commit to branch master.

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

commit 6442ca1b4e236626fa17d9f5a9c8ad864b0d7a17
Author: Hermet Park 
Date:   Fri Aug 26 20:41:21 2016 +0900

bump up version.
---
 README  | 7 ---
 configure.ac| 6 +++---
 data/help/INTRO | 2 +-
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/README b/README
index 4cb8f1f..ec2d0cf 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-[Enventor v0.9.0]
+[Enventor v1.0.0]
 
 Enventor, which is also known as EDC (Edje Data Collections) Editor, is a EDC 
script editor tool that supports text edit function and preview function for 
EDC source code.
 
@@ -6,8 +6,8 @@ When your application ral-time changeable layouts like animated 
ones, then you c
 
 [Requirements]
 
-  efl (>= 1.17.0)
-  elementary (>= 1.17.0)
+  efl (>= 1.18.0)
+  elementary (>= 1.18.0)
 
 Please note that some features may not quite function correctly or completely 
prior to EFL 1.17. Newer would be better.
 
@@ -105,6 +105,7 @@ Jaehyun Cho
 Mykyta Biliavskyi
 Kateryna Fesyna
 Tae-Hyup Kim
+Bowon Ryu
 Yunho Jeong
 Mincheol Seo
 Raoul Hecky
diff --git a/configure.ac b/configure.ac
index a1955bb..41cc761 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-m4_define([v_maj], [0])
-m4_define([v_min], [9])
+m4_define([v_maj], [1])
+m4_define([v_min], [0])
 m4_define([v_mic], [0])
 #m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 
0) | tr -d '\n']))dnl
 ##--   When released, remove the dnl on the below line
@@ -74,7 +74,7 @@ EFL_ENABLE_BETA_API_SUPPORT
 AC_DEFINE_UNQUOTED(ENVENTOR_WIN32_BUILD_SUPPORT, 1, "Support Win32 dllexport")
 AC_DEFINE_UNQUOTED(ENVENTOR_BETA_API_SUPPORT, 1, "Enable access to unstable 
ENVENTOR API that are still in beta")
 
-efl_version="1.17.0"
+efl_version="1.18.0"
 requirement_enventor=" \
 eo >= ${efl_version} \
 eina >= ${efl_version} \
diff --git a/data/help/INTRO b/data/help/INTRO
index 3f7ca90..084ad56 100644
--- a/data/help/INTRO
+++ b/data/help/INTRO
@@ -1,4 +1,4 @@
-Enventor v0.9.0
+1Enventor v1.0.0
 
 Enventor, which is also known as EDC (Edje Data Collections) Editor, is a EDC 
script editor tool that supports text edit function and preview function for 
EDC source code
 

-- 




[EGIT] [tools/edi] master 02/02: Fix broken pkgbuild

2016-08-26 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=100d68a30de9416928ccaa845b27c6914534b787

commit 100d68a30de9416928ccaa845b27c6914534b787
Author: Andy Williams 
Date:   Fri Aug 26 12:31:10 2016 +0100

Fix broken pkgbuild
---
 packaging/pkgbuild/PKGBUILD | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/packaging/pkgbuild/PKGBUILD b/packaging/pkgbuild/PKGBUILD
index 7760bf6..f701ebf 100644
--- a/packaging/pkgbuild/PKGBUILD
+++ b/packaging/pkgbuild/PKGBUILD
@@ -1,14 +1,13 @@
 # Maintainer: Enlightenment Developers 
 pkgname=('edi-git' 'edi_doc-git')
-pkgver=1.8.99.8967.a1cfce6
+pkgver=0.4.99.0001
 pkgrel=1
 pkgdesc="Enlightenment toolkit edi - GIT development snapshot"
 arch=('i686' 'x86_64' 'arm')
 url="http://andywilliams.me";
 license=('WTFPL')
 makedepends=('doxygen' 'imagemagick' 'git')
-depends=('elementary-git')
-optdepends=('emotion_generic_players' 'evas_generic_loaders')
+depends=('efl-git')
 options=('!libtool' 'debug')
 provides=('edi')
 

-- 




[EGIT] [tools/edi] master 01/02: Update our requirements for latest efl

2016-08-26 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=561fedb5f855537df6404b9ec4e13edf6ba8fde0

commit 561fedb5f855537df6404b9ec4e13edf6ba8fde0
Author: Andy Williams 
Date:   Fri Aug 26 12:25:49 2016 +0100

Update our requirements for latest efl
---
 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 55802d7..b729cbf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -64,7 +64,7 @@ PKG_CHECK_MODULES([EFL],
  evas >= 1.17.0
  ecore >= 1.17.0
  edje >= 1.17.0
- eo >= 1.18.0
+ eo >= 1.18.99
  elementary >= 1.18.0
  eio >= 1.17.0
 ])

-- 




[EGIT] [tools/enventor] master 01/01: updated NEWS.

2016-08-26 Thread Hermet Park
hermet pushed a commit to branch master.

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

commit 9cbb90bd266947e1409681cb6b6cc3694aee64d2
Author: Hermet Park 
Date:   Fri Aug 26 20:29:48 2016 +0900

updated NEWS.
---
 NEWS | 52 +++-
 1 file changed, 51 insertions(+), 1 deletion(-)

diff --git a/NEWS b/NEWS
index d678b59..d5c3249 100644
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,57 @@
 ==
-Enventor 0.9.0
+Enventor 1.0.0
 ==
 
+Changes since Enventor 0.9.0:
+-
+
+Additions:
+   * Tooltips: Newly supported.
+   * Wireframe: Newly introduced.
+   * File Tab: Newly introduced.
+   * Reference Popup: Newly introduced.
+   * A lot of Enventor APIs are changed.
+
+Improvements:
+   * EDC Editor: Rearrange searched part to be placed in center.
+   * EDC Editor: Support to jump to the part define.
+   * File Borwser: Set current directory as a workspace in default.
+   * File Browser: add a function to set a main edc file with a marker.
+   * File Browser: Display sorted file list based on file type.
+   * File Browser: Skip files if their names were started with dot.
+   * Template: Add various samples.
+   * New File: Sort template list in alphabetical order.
+   * Help: Update overall content.
+   * Setting: Apply layze style to syntax color template code.
+   * Setting: Add the main EDC file path.
+   * Live Edit: support base_scale values.
+   * Console: Apply syntax color for error messages:.
+   * EDC Parser: Identify whole macro functions to have syntax color.
+   * Support vector type part.
+   * Update overall GUIs & Shortcut keys.
+   * Support individual group view size and view scale.
+   * Limit to an single Enventor instance.
+   * Update Syntax color keywords.
+   * Allow multi-file editor.
+
+Fixes:
+   * Template: Fix Map template code typo.
+   * Template: don't localize floats in the relative values.
+   * Statusbar: Fix an incorrect view size.
+   * Indentation: Fix a incorrect indentation in a corner case.
+   * Live Edit: Fix incorrect stacking.
+   * Live Edit: Fix an added object to have min size properly.
+   * Live Edit: Dismiss ctxpopup when view position is changed.
+   * Goto: Fix window closing issue.
+   * Setting: Fix to not abuse user Elementary configuration file.
+   * Setting: Reset font style properly.
+   * EDC Editor: Show images on cursor "images.image".
+   * EDC Editor: Fix to remove focus highlight on template seletion button.
+   * Fix many crash scenarios.
+   * Fix a dummy swallow/spacer selection bug.
+   * Fix Undo's indiscriminate red alert.
+   * Fix build break on Win32.
+
 Changes since Enventor 0.8.0:
 -
 

-- 




Re: [E-devel] Callback arrays and callback invocation optimisations

2016-08-26 Thread Tom Hacohen
On 26/08/16 11:21, David Seikel wrote:
> On Fri, 26 Aug 2016 10:46:48 +0100 Tom Hacohen 
> wrote:
>
>> a shitload of times. If I remember correctly, _efl_object_call_end is
>> one line: _eo_unref(obj). And that one is essentially if
>> (--(obj->ref) == 0) and then just returns in 99.99% of the cases. Not
>> a lot to optimise there. :)
>
> Make it a macro, done, it's optimised.  B-)

It's inlined. IIRC I checked, and the CPU usage in _efl_object_call_end 
is almost only in the function invocation itself!

--
Tom


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


Re: [E-devel] Callback arrays and callback invocation optimisations

2016-08-26 Thread David Seikel
On Fri, 26 Aug 2016 10:46:48 +0100 Tom Hacohen 
wrote:

> a shitload of times. If I remember correctly, _efl_object_call_end is
> one line: _eo_unref(obj). And that one is essentially if
> (--(obj->ref) == 0) and then just returns in 99.99% of the cases. Not
> a lot to optimise there. :)

Make it a macro, done, it's optimised.  B-)

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.


signature.asc
Description: PGP signature
--
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Callback arrays and callback invocation optimisations

2016-08-26 Thread Tom Hacohen
On 24/08/16 20:03, Cedric BAIL wrote:
> On Wed, Aug 24, 2016 at 2:24 AM, Tom Hacohen  wrote:
>> On 23/08/16 18:51, Cedric BAIL wrote:
>>> On Tue, Aug 23, 2016 at 3:31 AM, Tom Hacohen  wrote:
>
> 
>
 However, while they provide a nice memory improvement, they have been
 hampering many optimisation strategies that would make callback
 invocation significantly faster. Furthermore, maybe (not sure), we can
 automatically de-duplicate event lists internally (more on that in a
 moment). With that being said, there is a way we can maybe keep array
 callbacks with some limitations.
>>>
>>> Do you have a case where performance are impacted by callback today ?
>>> I have found that we usually have a very small number of callbacks
>>> (likely in an array this days) and when speed did really matter it was
>>> just best to not trigger the callback at all (That's why we have this
>>> code in many place that count if any callback has been registered).
>>
>> It always showed up in callgrind. Obviously after you did your changes
>> that improved things, because you essentially just don't call that code,
>> but having to do this everywhere is a bit of a pain, especially if we
>> can just make callbacks fast on their own.
>>
>> Callback_call takes around 1.5% in the efl atm. Though if we remove the
>> not-call optimisations it would be much more again. I wonder if we can
>> reach good results without it.
>
> When genlist is scrolling, just calling a function is costly as we end
> up calling it million times, litterally. I seriously doubt it is
> possible.
>

And yet, this is one of the functions that stand out and not others that 
are "just called".

>>  From my tests back when I was optimising callback invocation, we had
>> around 5 callbacks on average on objects with non-zero number of
>> registered callbacks with a maximum number of around 12 if my memory
>> serves, so this could potentially make callback calls so fast any
>> optimisations won't matter.
>
> This number where from before callbacks array. I am seriously
> interested to know todays number. Also an improved statistic would be
> to know how many callbacks are walked over in the most called case and
> how many of those callbacks are actually in an array already.
>
> 

Callback array or not, you still end up walking all of the callbacks...

>
 We can also store a pointer to the array in a hash table with the key
 being some sort of a hash of the array in order to do some deduplication
 afterwards (point to the same arrays, but obviously different private
 data, so that would still be duplicated) if we feel it's needed. It
 probably won't save as much though and will have some running costs.
>>>
>>> For anything < 16 entries, I bet that a hash table will be slower than
>>> walking an array. Don't forget you need to compute the hash key, jump
>>> in an array, walk down a rbtree and finally iterate over a list. Hash
>>> are good for very large number of object, not for small number.
>>
>> That was an optimisation that I just threw out there to the world, but I
>> believe you misunderstood me. I didn't mean we create a hash table for
>> calling events, it was for saving memory and deduplicating event
>> callbacks (essentially callback arrays automatically). This is only done
>> on callback add/del.
>
> Indeed I missunderstood your intent. Still this will increase the cost
> of insertion for no benefit in my opinion. See below.

Again, this is a side comment, not that important.

>
 The last idea is to keep callback arrays, but kind of limit their scope.
 The problem (or at least one of them) is that callback arrays support
 setting a priority which means calling them needs to be in between the
 calls to normal callbacks. This adds a lot of complexity (this is a very
 hot path, even a simple if is complexity, but this adds more). If we
 define that all callback arrays are always the lowest priority (called
 last), which in practice will have almost zero impact if at all, we can
 just keep them, and just call them after we do the normal callback calls
 (if they exist). We can even optimise further by not making the arrays
 constant, and thus letting us sort them and then run the same algorithm
 mentioned above for searching. This is probably the most acceptable
 compromise, though I'm not sure if it'll block any future optimisation
 attempts that I'm not able to foresee.
>>>
>>> No ! Array are only useful if they are constant ! That is the only way
>>> to share them accross all instance of object. Their size being
>>> ridiculously small, I bet you won't win anything in reordering them.
>>> And if you really want to reorder them, you can do that once at
>>> creation time in the inline function that create them as defined in
>>> Eo.h.
>>
>> That is absolutely untrue. You can reorder them where they are created
>> (like you suggested), or reorder them when they are added and 

[EGIT] [tools/enventor] master 01/01: win32: fix the build break.

2016-08-26 Thread Hermet Park
hermet pushed a commit to branch master.

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

commit cf740c2ae179ea393cb4b2b9d80787d47d4c6613
Author: Hermet Park 
Date:   Fri Aug 26 17:17:25 2016 +0900

win32: fix the build break.
---
 src/bin/main.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/bin/main.c b/src/bin/main.c
index 02434c0..c7d4201 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -8,7 +8,7 @@
 
 #ifdef _WIN32
 #include 
-static HANDLE hMutex = INVALID_HANDLE_VALUE;
+static HANDLE hMutex = NULL;
 #endif
 
 typedef struct app_s
@@ -952,7 +952,7 @@ enventor_lock_create(void)
  {
 #ifdef _WIN32
 hMutex = OpenMutex(MUTEX_ALL_ACCESS, 0, ENVENTOR_NAME);
-if (hMutex != INVALID_HANDLE_VALUE)
+if (hMutex)
   {
  fprintf(stdout, "Enventor program is already running!\n\n"
  "If you are really stuck in launching enventor due to "
@@ -1001,10 +1001,10 @@ enventor_lock_remove()
if (!own_lock) return;
 
 #ifdef _WIN32
-   if (INVALID_HANDLE_VALUE != hMutex)
+   if (hMutex)
  {
-Closehandle(hMutex);
-hMutex = INVALID_HANDLE_VALUE;
+CloseHandle(hMutex);
+hMutex = NULL;
  }
 #else
//Tempoary Folder

-- 




[EGIT] [core/efl] master 01/01: elm: Fix some ERR messages following previous patch

2016-08-26 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit 3b175fd7e9e3e251d1f53909aa6a32e8e3a54461
Author: Jean-Philippe Andre 
Date:   Fri Aug 26 17:09:38 2016 +0900

elm: Fix some ERR messages following previous patch

This simply avoids calling functions on NULL objects, since
the previous patch would ERR out rather than silently ignore
the problem.

I just add explicit NULL checks before calling the functions,
so it's clear the object could be NULL (in the widget).
---
 src/lib/elementary/efl_ui_win.c  | 9 ++---
 src/lib/elementary/elm_gengrid.c | 3 ++-
 src/lib/elementary/elm_genlist.c | 1 +
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index aced7ba..1177bec 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -1102,9 +1102,12 @@ the_end:
_elm_win_focus_highlight_visible_set(sd, common_visible);
sd->focus_highlight.geometry_changed = EINA_FALSE;
sd->focus_highlight.prev = sd->focus_highlight.cur;
-   evas_object_event_callback_add
- (sd->focus_highlight.prev.target,
-  EVAS_CALLBACK_DEL, _elm_win_focus_prev_target_del, data);
+   if (sd->focus_highlight.prev.target)
+ {
+evas_object_event_callback_add
+  (sd->focus_highlight.prev.target,
+   EVAS_CALLBACK_DEL, _elm_win_focus_prev_target_del, data);
+ }
 }
 
 static void
diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 44a092c..b0b6214 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -4116,7 +4116,8 @@ _internal_elm_gengrid_clear(Evas_Object *obj,
 
  if (next) itn = ELM_GEN_ITEM_FROM_INLIST(next);
  if (itn) itn->walking++;  /* prevent early death of subitem */
- _item_mouse_callbacks_del(it, VIEW(it));
+ if (VIEW(it))
+   _item_mouse_callbacks_del(it, VIEW(it));
  it->del_cb(it);
  efl_del(EO_OBJ(it));
  if (itn) itn->walking--;
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index a00852e..3e5abf8 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -1523,6 +1523,7 @@ _item_cache_free(Item_Cache *itc)
 static void
 _item_cache_clean(Elm_Genlist_Data *sd)
 {
+   if (!sd->obj) return;
evas_event_freeze(evas_object_evas_get(sd->obj));
 
while ((sd->item_cache) && (sd->item_cache_count > sd->item_cache_max))

-- 




[E-devel] E/ELM fdo icon config issues

2016-08-26 Thread Davide Andreoli
Hi all (Andrew in particular)

I really think we have 2 issue in the way we let the user configure the fdo
icon theme for their system.

1. In the E config we have a list of fdo themes and 2 checkbox:
  * Enable for applications
  * Enable for Enlightenment

The first one will set the theme for GTK and ELM, I really think we need to
spit this in 2 different checks, one for ELM and one for non-efl apps.
Without this separation there are useful configuration that are really hard
to make.
For example I use on my system the Mint-X theme for GTK app and the default
for ELM, to make this configuration I need to:
 * Open the E config and choose Mint-X (this also change ELM to use Mint-X)
 * Then open the ELM config and choose "Use elementary icons"
After this every time I want to change the theme for gtk (maybe I want to
try a new theme) I need to go again in the ELM config and change it back.
So we really need a new checkbox "Enable for ELM" that, if checked will set
the fdo theme in the elm config, while if not checked will reset elm to use
the icons included in the theme.


2. The Enlightenment-X fdo theme that we are providing is only meant to be
used with non-efl applications, using it with elm is an incredibly waste of
resource as they are exactly the same icons provided in the elm theme (full
fdo lookup instead of just pick from the edj file).
We really need to automatically set elm to use internal icons when the user
select the Enlightenment-X theme in both the E config dialog and the ELM
one.
As for the implementation of this one: maybe is enough to change the
ELM_CONFIG_ICON_THEME_ELEMENTARY define to "Enlightenment-X" ?


If no one have objections I would ask Andrew to implement/fix this 2 issues

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