[E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
Hello all, Loading (startup) performance problem: -- I just had time to look at the elm_genlist performance problem again. Sometime ago, I asked the list about elm_genlist's walking through the list at startup in order to determine the list's width and height. However, the performance problem when loading a huge list of items to a genlist still persists. While it is okay on my desktop, it really freezes up my target (ARM926ejs @ 400MHz) for quite some time. I suggest adding a new API: elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) to let the genlist know about the list's nature and uses the first item's width and height as a reference for the remaining list items. 'homogeneous' also implies 'compress' mode. On my target, it loads 1000+ items fine this way without rendering the system unresponsive. genlist already does lazy-loading quite well. This will make it 'lazier' if the list items are of the same size. Scrolling performance problem: -- Also, I suggest adding another API: elm_genlist_block_count_set(Evas_Object *obj, int max) to let the programmer decides what's the optimal block size for his/her particular target. I believe this value is currently hard-coded '32'. The problem is that when the idler renders this chunk of items, it will slow down the system when the user scrolls around outside the 32-item block already rendered. I already tested my version on my target. It seems to work quite well even on a big list (1000+ items). Any thoughts? Thanks in advance for inputs. brian -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
2010/1/21 Brian Wang brian.wang.0...@gmail.com Hello all, Loading (startup) performance problem: -- I just had time to look at the elm_genlist performance problem again. Sometime ago, I asked the list about elm_genlist's walking through the list at startup in order to determine the list's width and height. However, the performance problem when loading a huge list of items to a genlist still persists. While it is okay on my desktop, it really freezes up my target (ARM926ejs @ 400MHz) for quite some time. I suggest adding a new API: elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) to let the genlist know about the list's nature and uses the first item's width and height as a reference for the remaining list items. 'homogeneous' also implies 'compress' mode. On my target, it loads 1000+ items fine this way without rendering the system unresponsive. genlist already does lazy-loading quite well. This will make it 'lazier' if the list items are of the same size. I agree, this is a great idea and will help a lot. Generally items have the same height. Scrolling performance problem: -- Also, I suggest adding another API: elm_genlist_block_count_set(Evas_Object *obj, int max) to let the programmer decides what's the optimal block size for his/her particular target. I believe this value is currently hard-coded '32'. The problem is that when the idler renders this chunk of items, it will slow down the system when the user scrolls around outside the 32-item block already rendered. I already tested my version on my target. It seems to work quite well even on a big list (1000+ items). Any thoughts? Thanks in advance for inputs. Good idea. brian -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- Regards. -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: englebass trunk/e/src/bin
On Thu, Jan 21, 2010 at 5:50 AM, Enlightenment SVN no-re...@enlightenment.org wrote: Log: remove unneeded action Author: englebass Date: 2010-01-20 23:50:06 -0800 (Wed, 20 Jan 2010) New Revision: 45379 Modified: trunk/e/src/bin/e_actions.c Modified: trunk/e/src/bin/e_actions.c === --- trunk/e/src/bin/e_actions.c 2010-01-21 02:05:19 UTC (rev 45378) +++ trunk/e/src/bin/e_actions.c 2010-01-21 07:50:06 UTC (rev 45379) @@ -2184,91 +2184,6 @@ } /***/ -ACT_FN_GO(shelf_show) -{ - Eina_List *l; - E_Shelf *es; - - if (params) - { - for (; *params != '\0'; params++) - if (!isspace(*params)) - break; - if (*params == '\0') - params = NULL; - } - - EINA_LIST_FOREACH(e_shelf_list(), l, es) - { - if ((!params) || (params (fnmatch(params, es-name, 0) == 0))) - { - e_shelf_toggle(es, 1); - e_shelf_toggle(es, 0); - } - } -} WHY I use this since I use shelf autohide and like to see what's the time and status without moving my hand to touch the mouse... So in my case Ctrl+Alt+Up shows it :-( -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
On Thu, Jan 21, 2010 at 8:30 AM, Atton Jonathan jonathan.at...@gmail.com wrote: 2010/1/21 Brian Wang brian.wang.0...@gmail.com Hello all, Loading (startup) performance problem: -- I just had time to look at the elm_genlist performance problem again. Sometime ago, I asked the list about elm_genlist's walking through the list at startup in order to determine the list's width and height. However, the performance problem when loading a huge list of items to a genlist still persists. While it is okay on my desktop, it really freezes up my target (ARM926ejs @ 400MHz) for quite some time. I suggest adding a new API: elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) to let the genlist know about the list's nature and uses the first item's width and height as a reference for the remaining list items. 'homogeneous' also implies 'compress' mode. On my target, it loads 1000+ items fine this way without rendering the system unresponsive. genlist already does lazy-loading quite well. This will make it 'lazier' if the list items are of the same size. I agree, this is a great idea and will help a lot. Generally items have the same height. I also agree with that. And to say more, just like I did with Guarana's list, we should abstract the model it uses, providing functions to check the number of items and get items given its index. That way we can write those functions that query SQL and no need to actually create a list with 1000 elements in order to show it. This abstraction would also make it easier for python and other bindings, as it would be possible to walk native (python, perl...) without actually converting the huge elm_genlist calls. hint: I created eina_accessor to help with such thing. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [PATCH] Elementary, elm_button.c : Emit mouse down event
On Wed, Jan 20, 2010 at 11:47 PM, Brian Wang brian.wang.0...@gmail.com wrote: On Wed, Jan 20, 2010 at 8:17 PM, Carsten Haitzler ras...@rasterman.com wrote: On Wed, 20 Jan 2010 08:24:13 -0300 Iván Briano (Sachiel) sachi...@gmail.com said: On Wed, Jan 20, 2010 at 7:55 AM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: On Wed, Jan 20, 2010 at 7:41 AM, Brian Wang brian.wang.0...@gmail.com wrote: On Wed, Jan 20, 2010 at 2:46 PM, Carsten Haitzler ras...@rasterman.com wrote: On Wed, 20 Jan 2010 13:55:36 +0800 Brian Wang brian.wang.0...@gmail.com said: Hello all, The attached enables the programmer to handle 'pressed' signal (mouse down) on elm_button. This allows adding a self-repeating timer to repeat a certain action, such as pressing and holding on a button to increase a number. Cheers, hmmm good point.. though wouldn't it be nicer if button had an auto-repeat feature of its own? (that calls click repeatedly at N second intervals after being held down for M seconds until released) You mean: void elm_button_auto_repeat_rate_set(Evas_Object *obj, double delay /* M */, double rate /* N */, Evas_Smart_Cb func, void *data); i guess he said just the first part with delay and rate, no func or data as user would have those from standard evas_object_smart_callback_add() for clicked. So just: elm_button_auto_repeat_rate_set(Evas_Object *, double delay, double rate); rate = 0.0 would disable it. in any way, I guess both are fine, even adding the double clicked to button. But as raster, I often dislike to add too much without understanding the real requirements so we can come with helpers like this auto-repeat. :-) And just to say something about the patch, you also need to patch the theme to emit the elm,action,pressed signal. Then you are missing the unpress to kill the timer, or properly document that the clicked callback should handle that case, which makes it no so nice. well the patch wasnt attached - i think it was stripped by sf.net' mail servers.. so need the patch as an actual text attachment - or maybe try gzip it and mail again The patch was a text attachment (I think, via gmail). I will try the gzip way next time. no attachment, and no zip either. What you need to do is edit /etc/mime.types and add: text/patch diff patch actually, just the text/ is relevant, you can use whatever you like in place of the second part, for example my gentoo came set with: text/plain diff patch ... -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] Elementary entry regression
On Wed, Jan 20, 2010 at 11:22 PM, Carsten Haitzler ras...@rasterman.com wrote: On Wed, 20 Jan 2010 21:59:03 +0100 Cedric BAIL moa.blueb...@gmail.com said: On Wednesday, January 20, 2010, Iván Briano (Sachiel) sachi...@gmail.com wrote: On Wed, Jan 20, 2010 at 4:25 PM, Nicolas Aguirre aguirre.nico...@gmail.com wrote: Hi, I have notice a regression in elementary entry. Since recently I have not found the exact commit, you can't delete the last char of an entry. To reproduce the probleme, just launch elementary_test and click entry test. Try to delete all the text with delete or suppr, the last character can never been deleted. The regression appears the last 10 days. Sorry I don't have more time to investigate on it :/ I'm looking at that now, last 10 days could be helpful, thanks. I also noticed with the Entry test in elementary_test, that using the Delete key can screw up the format, just get after a format piece of text and start hitting Delete until the end is reached. Another one is, get in the line below a formatted one and hit Delete until the line is gone, it will not delete the last char, jump to the previous line and when you reach the formatted piece, cursor jumps to the beginning of it. Raster, I'm trying to figure this out, but I'm getting lost quite easily with the cursor stuff in textblock. Pointers, advice or some intervention are more than welcome. It could be me. I don't have today, but look at my commit in evas textblock a few days ago and try reverting it. If it solves your problem, I can give it a look tomorrow to find a better fix. well your changes did fix another bug i was about to jump into ... and found it gone! :) Yeah, that was the idea :-) -- Cedric BAIL -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
2010/1/21 Gustavo Sverzut Barbieri barbi...@profusion.mobi: On Thu, Jan 21, 2010 at 8:30 AM, Atton Jonathan jonathan.at...@gmail.com wrote: 2010/1/21 Brian Wang brian.wang.0...@gmail.com Hello all, Loading (startup) performance problem: -- I just had time to look at the elm_genlist performance problem again. Sometime ago, I asked the list about elm_genlist's walking through the list at startup in order to determine the list's width and height. However, the performance problem when loading a huge list of items to a genlist still persists. While it is okay on my desktop, it really freezes up my target (ARM926ejs @ 400MHz) for quite some time. I suggest adding a new API: elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) to let the genlist know about the list's nature and uses the first item's width and height as a reference for the remaining list items. 'homogeneous' also implies 'compress' mode. On my target, it loads 1000+ items fine this way without rendering the system unresponsive. genlist already does lazy-loading quite well. This will make it 'lazier' if the list items are of the same size. I agree, this is a great idea and will help a lot. Generally items have the same height. I also agree with that. And to say more, just like I did with Guarana's list, we should abstract the model it uses, providing functions to check the number of items and get items given its index. That way we can write those functions that query SQL and no need to actually create a list with 1000 elements in order to show it. This abstraction would also make it easier for python and other bindings, as it would be possible to walk native (python, perl...) without actually converting the huge elm_genlist calls. hint: I created eina_accessor to help with such thing. It would be perfect :) -- Nicolas Aguirre Mail: aguirre.nico...@gmail.com Web: http://www.digital-corner.org -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
Am Donnerstag, den 21.01.2010, 10:26 -0200 schrieb Gustavo Sverzut Barbieri: And to say more, just like I did with Guarana's list, we should abstract the model it uses, providing functions to check the number of items and get items given its index. That way we can write those functions that query SQL and no need to actually create a list with 1000 elements in order to show it. Yep. This is actually how other modern MVC-toolkits are doing that -- the UITableView in Cocoa Touch is an amazing example for it. -- :M: -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] eina mempool review and descriptions?
Hey all, I'm doing ebuilds for gentoo and I want to make them use configurable mempools, however the names are stupidly bad and I have no idea the use so I enable or disable them. could someone (ie: cedric) document what are these, how they are chosen, which should be really enabled and which could be left out since are experiments? BR, -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] eina bechmarks broken against evas and ecore
On Thu, 21 Jan 2010, Gustavo Sverzut Barbieri wrote: title says it all, we don't have native evas and ecore data anymore, so benchmarks cannot work. Either we remove those for 1.0 or we copy the old files from svn history and have in src/tests. I like the second one. Vincent -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] merge ecore job and txt into ecore?
Why ecore_job and ecore_txt are split? They are so stupid that is should go into main ecore. Anyone with time to merge this and fix all apps that pkg-config ecore-job or ecore-txt to use simply ecore? -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] merge ecore job and txt into ecore?
On Thu, Jan 21, 2010 at 10:25 PM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: Why ecore_job and ecore_txt are split? They are so stupid that is should go into main ecore. Anyone with time to merge this and fix all apps that pkg-config ecore-job or ecore-txt to use simply ecore? Actually, ecore_input is in the same lines of those... no reason why it should be another library. Something else that bothers me is ecore_file. Except by ecore_file_monitor_*, things are worth to be exported either by ecore or eina. ecore_file_download* is deprecated AFAIK. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
[snip] And to say more, just like I did with Guarana's list, we should abstract the model it uses, providing functions to check the number of items and get items given its index. That way we can write those functions that query SQL and no need to actually create a list with 1000 elements in order to show it. I'm not an expert of this, so bear with me. :-) You mean saving items into an SQL database and SELECT them on demand? If the database is on a disk (not RAM), wouldn't it be slow when the list is scrolled around due to the querying? If the database is in RAM, how is it different from the current implementation in terms of memory footprint? This abstraction would also make it easier for python and other bindings, as it would be possible to walk native (python, perl...) without actually converting the huge elm_genlist calls. hint: I created eina_accessor to help with such thing. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [PATCH] Elementary, elm_button.c : Emit mouse down event
On Thu, Jan 21, 2010 at 8:21 PM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: On Wed, Jan 20, 2010 at 11:47 PM, Brian Wang brian.wang.0...@gmail.com wrote: On Wed, Jan 20, 2010 at 8:17 PM, Carsten Haitzler ras...@rasterman.com wrote: On Wed, 20 Jan 2010 08:24:13 -0300 Iván Briano (Sachiel) sachi...@gmail.com said: On Wed, Jan 20, 2010 at 7:55 AM, Gustavo Sverzut Barbieri barbi...@profusion.mobi wrote: On Wed, Jan 20, 2010 at 7:41 AM, Brian Wang brian.wang.0...@gmail.com wrote: On Wed, Jan 20, 2010 at 2:46 PM, Carsten Haitzler ras...@rasterman.com wrote: On Wed, 20 Jan 2010 13:55:36 +0800 Brian Wang brian.wang.0...@gmail.com said: Hello all, The attached enables the programmer to handle 'pressed' signal (mouse down) on elm_button. This allows adding a self-repeating timer to repeat a certain action, such as pressing and holding on a button to increase a number. Cheers, hmmm good point.. though wouldn't it be nicer if button had an auto-repeat feature of its own? (that calls click repeatedly at N second intervals after being held down for M seconds until released) You mean: void elm_button_auto_repeat_rate_set(Evas_Object *obj, double delay /* M */, double rate /* N */, Evas_Smart_Cb func, void *data); i guess he said just the first part with delay and rate, no func or data as user would have those from standard evas_object_smart_callback_add() for clicked. So just: elm_button_auto_repeat_rate_set(Evas_Object *, double delay, double rate); rate = 0.0 would disable it. in any way, I guess both are fine, even adding the double clicked to button. But as raster, I often dislike to add too much without understanding the real requirements so we can come with helpers like this auto-repeat. :-) And just to say something about the patch, you also need to patch the theme to emit the elm,action,pressed signal. Then you are missing the unpress to kill the timer, or properly document that the clicked callback should handle that case, which makes it no so nice. well the patch wasnt attached - i think it was stripped by sf.net' mail servers.. so need the patch as an actual text attachment - or maybe try gzip it and mail again The patch was a text attachment (I think, via gmail). I will try the gzip way next time. no attachment, and no zip either. What you need to do is edit /etc/mime.types and add: text/patch diff patch actually, just the text/ is relevant, you can use whatever you like in place of the second part, for example my gentoo came set with: text/plain diff patch ... My mime.types comes with a line: text/x-diff diff patch Do I have to replace it with: text/patch diff patch Thanks. :-) -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
On Fri, Jan 22, 2010 at 9:28 AM, Carsten Haitzler ras...@rasterman.com wrote: On Fri, 22 Jan 2010 09:15:44 +0800 Brian Wang brian.wang.0...@gmail.com said: [snip] And to say more, just like I did with Guarana's list, we should abstract the model it uses, providing functions to check the number of items and get items given its index. That way we can write those functions that query SQL and no need to actually create a list with 1000 elements in order to show it. I'm not an expert of this, so bear with me. :-) You mean saving items into an SQL database and SELECT them on demand? If the database is on a disk (not RAM), wouldn't it be slow when the list is scrolled around due to the querying? If the database is in RAM, how is it different from the current implementation in terms of memory footprint? thats what genlist does now - it doesnt select itself - you provide the callbacks in your item class as to how to get the data. it's up to you how to do thats what is different is there is an add stage. you add all the items (as each item can be a different class - ie style or content). the only differencce between what genlist does now and what gustavo is proposing is - who calls the adds. genlist needs to know what to call for each item to get its content - and what style to display it in. as such there is no way to do this without first telling genlist which items are of what type. ONLY in the case where all items are of the same size (regular grid) can you take possible shortcuts and just get item count and thus determine list height from my previous mail - width needs to also then be fixed. Yes. Homogeneous mode also implies 'compress' mode to limit the width to its container. you are creating a very special-case list. genlist is genlist.. because its.. generic. it can handle anything you throw at it. every item can be a different style, and different size. genlist has its own deferred queue for adding items that it processes in idle time to keep it fast i'm not sure about what brian says - that the app becomes unresponsive. i've run this on lower-end arm's (armv6 - 800mhz - yes thats lower end these days!) and it runs just danndily on my test case with 2000, 1 or more items. it takes a while to populate the list, but u can scroll around and do things. By unresponsive, I mean that the scrolling becomes stuttering. Well, I'm running it on a lower-end arm with 64MB of DDR. What I could think of the difference other than the computing power is that my list contains Chinese characters. I reason that freetype tends to render Chinese charset slower due to the fact that the huge range of Chinese character set does not fit into a reasonable-sized font cache. And of course, armv6 vs armv5te, CPU core speed, DDR (I assume it's on your target too) bus speed (mine is 133/266 with 16-bit data bus...) all make big difference. However, it's the difficulty of life that I have to cope with. :-) This abstraction would also make it easier for python and other bindings, as it would be possible to walk native (python, perl...) without actually converting the huge elm_genlist calls. hint: I created eina_accessor to help with such thing. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ 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 -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
On Thu, 21 Jan 2010 17:04:32 +0800 Brian Wang brian.wang.0...@gmail.com said: sounds ok - u missed something. this isnt just height. width. and width it determined by content (eg how long is the text label). and... that can vary WILDLY. you'd have to have width fixed too. Hello all, Loading (startup) performance problem: -- I just had time to look at the elm_genlist performance problem again. Sometime ago, I asked the list about elm_genlist's walking through the list at startup in order to determine the list's width and height. However, the performance problem when loading a huge list of items to a genlist still persists. While it is okay on my desktop, it really freezes up my target (ARM926ejs @ 400MHz) for quite some time. I suggest adding a new API: elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) to let the genlist know about the list's nature and uses the first item's width and height as a reference for the remaining list items. 'homogeneous' also implies 'compress' mode. On my target, it loads 1000+ items fine this way without rendering the system unresponsive. genlist already does lazy-loading quite well. This will make it 'lazier' if the list items are of the same size. Scrolling performance problem: -- Also, I suggest adding another API: elm_genlist_block_count_set(Evas_Object *obj, int max) to let the programmer decides what's the optimal block size for his/her particular target. I believe this value is currently hard-coded '32'. The problem is that when the idler renders this chunk of items, it will slow down the system when the user scrolls around outside the 32-item block already rendered. I already tested my version on my target. It seems to work quite well even on a big list (1000+ items). Any thoughts? Thanks in advance for inputs. brian -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ 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 -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
On Fri, 22 Jan 2010 09:15:44 +0800 Brian Wang brian.wang.0...@gmail.com said: [snip] And to say more, just like I did with Guarana's list, we should abstract the model it uses, providing functions to check the number of items and get items given its index. That way we can write those functions that query SQL and no need to actually create a list with 1000 elements in order to show it. I'm not an expert of this, so bear with me. :-) You mean saving items into an SQL database and SELECT them on demand? If the database is on a disk (not RAM), wouldn't it be slow when the list is scrolled around due to the querying? If the database is in RAM, how is it different from the current implementation in terms of memory footprint? thats what genlist does now - it doesnt select itself - you provide the callbacks in your item class as to how to get the data. it's up to you how to do thats what is different is there is an add stage. you add all the items (as each item can be a different class - ie style or content). the only differencce between what genlist does now and what gustavo is proposing is - who calls the adds. genlist needs to know what to call for each item to get its content - and what style to display it in. as such there is no way to do this without first telling genlist which items are of what type. ONLY in the case where all items are of the same size (regular grid) can you take possible shortcuts and just get item count and thus determine list height from my previous mail - width needs to also then be fixed. you are creating a very special-case list. genlist is genlist.. because its.. generic. it can handle anything you throw at it. every item can be a different style, and different size. genlist has its own deferred queue for adding items that it processes in idle time to keep it fast i'm not sure about what brian says - that the app becomes unresponsive. i've run this on lower-end arm's (armv6 - 800mhz - yes thats lower end these days!) and it runs just danndily on my test case with 2000, 1 or more items. it takes a while to populate the list, but u can scroll around and do things. This abstraction would also make it easier for python and other bindings, as it would be possible to walk native (python, perl...) without actually converting the huge elm_genlist calls. hint: I created eina_accessor to help with such thing. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ 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 -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] [PATCH] elm_genlist : Introduce homogeneous mode and configurable block size
Hello all, The attached (hopefully, it's attached) is my try to implement the homogeneous mode for elm_genlist. I know it's far from perfect (e.g. it still walks through the list to gather the width and height) and it might contain bugs. It's ok with valgrind reports on x86 though. The patch is also contaminated with my elm_button autorepeat stuff in Elementary.h.in... I know it's far from being perfect, so please take a look and modify it to its correctness as it seems to be a nice-to-have feature. Cheers, brian -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [PATCH] elm_genlist : Introduce homogeneous mode and configurable block size
This is lame... Another try. On Fri, Jan 22, 2010 at 10:24 AM, Brian Wang brian.wang.0...@gmail.com wrote: Hello all, The attached (hopefully, it's attached) is my try to implement the homogeneous mode for elm_genlist. I know it's far from perfect (e.g. it still walks through the list to gather the width and height) and it might contain bugs. It's ok with valgrind reports on x86 though. The patch is also contaminated with my elm_button autorepeat stuff in Elementary.h.in... I know it's far from being perfect, so please take a look and modify it to its correctness as it seems to be a nice-to-have feature. Cheers, brian -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe Index: lib/Elementary.h.in === --- lib/Elementary.h.in (revision 45349) +++ lib/Elementary.h.in (working copy) @@ -374,6 +374,9 @@ EAPI const char *elm_button_label_get(Evas_Object *obj); EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon); EAPI Evas_Object *elm_button_icon_get(Evas_Object *obj); + EAPI void elm_button_autorepeat_set(Evas_Object *obj, Eina_Bool on); + EAPI void elm_button_autorepeat_initital_timeout_set(Evas_Object *obj, double t); + EAPI void elm_button_autorepeat_gap_timeout_set(Evas_Object *obj, double t); EINA_DEPRECATED EAPI void elm_button_style_set(Evas_Object *obj, const char *style); /* available styles: * default @@ -383,6 +386,7 @@ */ /* smart callbacks called: * clicked - the user clicked the button +* repeated - the user pressed the button without releasing it */ typedef enum _Elm_Scroller_Policy @@ -882,6 +886,8 @@ EAPI void elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select); EAPI void elm_genlist_compress_mode_set(Evas_Object *obj, Eina_Bool compress); EAPI void elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce); + EAPI void elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous); + EAPI void elm_genlist_block_count_set(Evas_Object *obj, int n); /* available item styles: * default * default_style - The text part is a textblock Index: lib/elm_genlist.c === --- lib/elm_genlist.c (revision 45349) +++ lib/elm_genlist.c (working copy) @@ -1,3 +1,7 @@ +/* + * + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=5n-3f0^-2{2 + */ #include Elementary.h #include elm_priv.h @@ -237,6 +241,7 @@ * have a specific style that overrides any theme the user or system sets up * you can use elm_theme_overlay_add() to add such a file. */ + typedef struct _Widget_Data Widget_Data; typedef struct _Item_Block Item_Block; typedef struct _Pan Pan; @@ -260,6 +265,10 @@ Eina_Bool no_select : 1; Eina_Bool bring_in : 1; Eina_Bool compress : 1; + Eina_Bool homogeneous : 1; + int item_width; + int item_height; + int max_items_per_block; }; struct _Item_Block @@ -736,71 +745,91 @@ edje_object_signal_emit(it-base, elm,state,expanded, elm); } - if (it-itc-func.label_get) + if (calc it-wd-homogeneous it-wd-item_width) { - const Eina_List *l; - const char *key; + /* homogenous genlist shortcut */ + if (!it-mincalcd) + { +it-w = it-minw = it-wd-item_width; +it-h = it-minh = it-wd-item_height; +it-mincalcd = EINA_TRUE; + } + } + else + { - it-labels = _stringlist_get(edje_object_data_get(it-base, labels)); - EINA_LIST_FOREACH(it-labels, l, key) + if (it-itc-func.label_get) { -char *s = it-itc-func.label_get(it-data, it-wd-obj, l-data); +const Eina_List *l; +const char *key; -if (s) +it-labels = _stringlist_get(edje_object_data_get(it-base, labels)); +EINA_LIST_FOREACH(it-labels, l, key) { - edje_object_part_text_set(it-base, l-data, s); - free(s); + char *s = it-itc-func.label_get(it-data, it-wd-obj, l-data); + + if (s) + { + edje_object_part_text_set(it-base, l-data, s); + free(s); + } } } - } - if (it-itc-func.icon_get) - { - const Eina_List *l; - const char *key; + if (it-itc-func.icon_get) + { +const Eina_List *l; +const char *key; -
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
On Fri, 22 Jan 2010 10:15:52 +0800 Brian Wang brian.wang.0...@gmail.com said: On Fri, Jan 22, 2010 at 9:28 AM, Carsten Haitzler ras...@rasterman.com wrote: On Fri, 22 Jan 2010 09:15:44 +0800 Brian Wang brian.wang.0...@gmail.com said: [snip] And to say more, just like I did with Guarana's list, we should abstract the model it uses, providing functions to check the number of items and get items given its index. That way we can write those functions that query SQL and no need to actually create a list with 1000 elements in order to show it. I'm not an expert of this, so bear with me. :-) You mean saving items into an SQL database and SELECT them on demand? If the database is on a disk (not RAM), wouldn't it be slow when the list is scrolled around due to the querying? If the database is in RAM, how is it different from the current implementation in terms of memory footprint? thats what genlist does now - it doesnt select itself - you provide the callbacks in your item class as to how to get the data. it's up to you how to do thats what is different is there is an add stage. you add all the items (as each item can be a different class - ie style or content). the only differencce between what genlist does now and what gustavo is proposing is - who calls the adds. genlist needs to know what to call for each item to get its content - and what style to display it in. as such there is no way to do this without first telling genlist which items are of what type. ONLY in the case where all items are of the same size (regular grid) can you take possible shortcuts and just get item count and thus determine list height from my previous mail - width needs to also then be fixed. Yes. Homogeneous mode also implies 'compress' mode to limit the width to its container. ok. as long as thats understood :) you are creating a very special-case list. genlist is genlist.. because its.. generic. it can handle anything you throw at it. every item can be a different style, and different size. genlist has its own deferred queue for adding items that it processes in idle time to keep it fast i'm not sure about what brian says - that the app becomes unresponsive. i've run this on lower-end arm's (armv6 - 800mhz - yes thats lower end these days!) and it runs just danndily on my test case with 2000, 1 or more items. it takes a while to populate the list, but u can scroll around and do things. By unresponsive, I mean that the scrolling becomes stuttering. Well, actual aah yes. it might indeed as its devoting a portion of your cpu to evaluating all the items in the queue to be added. as such it might be an idea that it would be time limited not item # limited per idle loop. I'm running it on a lower-end arm with 64MB of DDR. What I could think of the difference other than the computing power is that my list contains Chinese characters. I reason that freetype tends to render Chinese charset slower due to the fact that the huge range of Chinese character set does not fit into a reasonable-sized font cache. And of well actually evas will keep glyphs for all chars it has seen. its just unreferenced fonts (that hold the rendered glyphs) that are in cache. referenced fonts are all active data - as are all their glyphs. :) but - decoding the utf8 for chinese will cot more and glyphs will not be as nice on cpu caches. :) course, armv6 vs armv5te, CPU core speed, DDR (I assume it's on your target too) bus speed (mine is 133/266 with 16-bit data bus...) all armv6 is better indeed - though these days its all about cortex-a8 - even that is not so hot as ll the focus for new high-end is on cortex-a9 dual core babies. make big difference. However, it's the difficulty of life that I have to cope with. :-) better hardware fiixes oh so many problems :) This abstraction would also make it easier for python and other bindings, as it would be possible to walk native (python, perl...) without actually converting the huge elm_genlist calls. hint: I created eina_accessor to help with such thing. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe -- Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies.
Re: [E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)
On Fri, Jan 22, 2010 at 10:36 AM, Carsten Haitzler ras...@rasterman.com wrote: On Fri, 22 Jan 2010 10:15:52 +0800 Brian Wang brian.wang.0...@gmail.com said: On Fri, Jan 22, 2010 at 9:28 AM, Carsten Haitzler ras...@rasterman.com wrote: On Fri, 22 Jan 2010 09:15:44 +0800 Brian Wang brian.wang.0...@gmail.com said: [snip] And to say more, just like I did with Guarana's list, we should abstract the model it uses, providing functions to check the number of items and get items given its index. That way we can write those functions that query SQL and no need to actually create a list with 1000 elements in order to show it. I'm not an expert of this, so bear with me. :-) You mean saving items into an SQL database and SELECT them on demand? If the database is on a disk (not RAM), wouldn't it be slow when the list is scrolled around due to the querying? If the database is in RAM, how is it different from the current implementation in terms of memory footprint? thats what genlist does now - it doesnt select itself - you provide the callbacks in your item class as to how to get the data. it's up to you how to do thats what is different is there is an add stage. you add all the items (as each item can be a different class - ie style or content). the only differencce between what genlist does now and what gustavo is proposing is - who calls the adds. genlist needs to know what to call for each item to get its content - and what style to display it in. as such there is no way to do this without first telling genlist which items are of what type. ONLY in the case where all items are of the same size (regular grid) can you take possible shortcuts and just get item count and thus determine list height from my previous mail - width needs to also then be fixed. Yes. Homogeneous mode also implies 'compress' mode to limit the width to its container. ok. as long as thats understood :) you are creating a very special-case list. genlist is genlist.. because its.. generic. it can handle anything you throw at it. every item can be a different style, and different size. genlist has its own deferred queue for adding items that it processes in idle time to keep it fast i'm not sure about what brian says - that the app becomes unresponsive. i've run this on lower-end arm's (armv6 - 800mhz - yes thats lower end these days!) and it runs just danndily on my test case with 2000, 1 or more items. it takes a while to populate the list, but u can scroll around and do things. By unresponsive, I mean that the scrolling becomes stuttering. Well, actual aah yes. it might indeed as its devoting a portion of your cpu to evaluating all the items in the queue to be added. as such it might be an idea that it would be time limited not item # limited per idle loop. Cool! That's why I'm limiting the max number of items within an item block to 1. But this figure will vary from platform to platform, thus requires tuning by the programmer. Time-limited loop in the idler sounds like a much better and correct implementation! I'm running it on a lower-end arm with 64MB of DDR. What I could think of the difference other than the computing power is that my list contains Chinese characters. I reason that freetype tends to render Chinese charset slower due to the fact that the huge range of Chinese character set does not fit into a reasonable-sized font cache. And of well actually evas will keep glyphs for all chars it has seen. its just unreferenced fonts (that hold the rendered glyphs) that are in cache. referenced fonts are all active data - as are all their glyphs. :) but - decoding the utf8 for chinese will cot more and glyphs will not be as nice on cpu caches. :) course, armv6 vs armv5te, CPU core speed, DDR (I assume it's on your target too) bus speed (mine is 133/266 with 16-bit data bus...) all armv6 is better indeed - though these days its all about cortex-a8 - even that is not so hot as ll the focus for new high-end is on cortex-a9 dual core babies. make big difference. However, it's the difficulty of life that I have to cope with. :-) better hardware fiixes oh so many problems :) It's always about the cost though. :-) This abstraction would also make it easier for python and other bindings, as it would be possible to walk native (python, perl...) without actually converting the huge elm_genlist calls. hint: I created eina_accessor to help with such thing. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 -- brian -- Cool-Karaoke - The smallest recording studio, in your palm, open-sourced http://cool-idea.com.tw/ iMaGiNaTiOn iS mOrE iMpOrTaNt tHaN kNoWlEdGe