[E-devel] elm_genlist Performance Problem Revisited (Loading and Scrolling)

2010-01-21 Thread Brian Wang
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-01-21 Thread Atton Jonathan
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

2010-01-21 Thread Gustavo Sverzut Barbieri
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)

2010-01-21 Thread Gustavo Sverzut Barbieri
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

2010-01-21 Thread Gustavo Sverzut Barbieri
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

2010-01-21 Thread Cedric BAIL
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-01-21 Thread Nicolas Aguirre
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)

2010-01-21 Thread Michael 'Mickey' Lauer
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?

2010-01-21 Thread Gustavo Sverzut Barbieri
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

2010-01-21 Thread Vincent Torri


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?

2010-01-21 Thread Gustavo Sverzut Barbieri
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?

2010-01-21 Thread Gustavo Sverzut Barbieri
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)

2010-01-21 Thread Brian Wang
[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

2010-01-21 Thread Brian Wang
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)

2010-01-21 Thread Brian Wang
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)

2010-01-21 Thread The Rasterman
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)

2010-01-21 Thread The Rasterman
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

2010-01-21 Thread Brian Wang
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

2010-01-21 Thread Brian Wang
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)

2010-01-21 Thread The Rasterman
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)

2010-01-21 Thread Brian Wang
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