[EGIT] [tools/enventor] master 01/01: auto_comp: fix memory leak.
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.
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.
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.
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
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
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
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
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
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 /
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
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
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
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.
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
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
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
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
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
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
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%.
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.
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.
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
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
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
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
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
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
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
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
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.
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
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.
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.
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
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()
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
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
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
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()
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
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 /
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
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
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
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
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
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
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.
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
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
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.
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
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
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
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.
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
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
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