On Thu, 27 Oct 2005 11:33:05 +0900 Carsten writes: > On Wed, 26 Oct 2005 18:42:48 -0400 Jose O Gonzalez > <[EMAIL PROTECTED]> babbled: > > > > > > > On Thu, 27 Oct 2005 00:25:12 +0900 Carsten writes: > > > OK everyone - developer beings and such. > > > > > > as was brought up on the mailing lists several months ago, > > > i have (FINALLY!) started some work on cleaning/rationalising > > > and improving eva's smart object code and interfaces. > > > > And there is much rejoicing! :) > > :) > > > > my first step is to move smart object child objects within > > > the smart object itself - making the object struct less flat and > > > > more tree-like. this shoudl mean some speedups too. > > > > Yes. Also, though not smart-obj related -- since clip-objs > > should have only *one* clipee, it would make sense to let a > > clipped obj 'own' its clipper as well.. ie. remove clippers from > > the layers as well. > > yes - that would make sense. they even dont require any stacking > order as a > clip does not affect stacking (currently) :) but that may change (ie > set the > "merge buffer" option (which doesnt exist yet) on an object that is > a clipper > then all objects clipped will be first rendered into a tmp buffer > THEN when the > buffer is merged with the main drawn tree (or a parent buffer) is > the clip mask > applied. - example (as you were saying before - api-wise we are able > to add it > trivially. its the engine side that will have issues) > > what i REALLY want though is to reduce the side of clippee lists > simple by > havign all child objects of a smart be clipped by the clipper OF a > smart object > automatically :) > A large gain there for many reasons :)
> > Also not smart obj related, but a small, easy optimization > > in most cases -- have an internal canvas render function of the > > form: > > > > Evas_List *_evas_render(Evas *evas, char return_updates); > > > > so that the api's render function which *does not* return updates, > > can be defined via the above -- with 'return_updates' set to 0. > > When this is 0-set, the _evas_render function can avoid creating > > the list of rect updates (that the evas_render function can't > > return anyway and just has to free). > > while technically an optimisation, in practice - you will never > measure any > speedup as the overhead of a malloc and list append per region per > render cycle > is in the realm of < 0.00001% of the grunt needed to render :) > Yeah.. But remember the old saying "...every little bit helps..." and if it's a freebie like this one, then what the heck! :) Also unlikely to have any affect most times, but that perhaps could be a simplification of things: I don't see why there's a need to build a separate list of "restack objs" (in the render function)? This seems to be simply something that should be done in each obj's render_pre func, ie. like: if (obj->changed) { ... if (obj->restack) // add cur-prev updates and goto done.. ... } > > > i also plan on removing the need for clip/unclip, show/hide > > > and color_set methods so they are no longer used. > > > that will be step 2. > > > > And again there is much rejoicing! :) > > > > I would suggest adding render-pre and post methods though, > > as they could be very useful for more 'self-rendering' types of > > smart objs. The obj's render-pre and post functions have to be > > called anyway, just to recurse calling their childrens', so might > > as well have user provided ones in addition... > > Of course this could also cause all kinds of havoc... :( > > right now i dont plan on extending smart objects to be able to > directly render > (yet) as that would require exporting the immediate-mode rendering > api to them > - even calling the render of a sub object is not that useful as > well- it can > call it itself :) but the idea of the class struct is that in FUTURE > we can add > "render" smart calls that if set to non-NULL will allow a smart obj > to provide > direct rendering calls of its own - effectively becoming an extended > object. > Yes.. But the idea behind render_pre and render_post functions, for smart-objs, is to allow their designer to defer whatever expensive calculations til render time, ie. so they can also have the ability to keep cur/prev states of properties that they may only wish to re-calculate at each rendering instance - even if they can't render to the actual target engine surface :) > > > step 3 will be removal of evas_smart_new() > > > in favor of using evas_smart_class_new() as it uses an > extendible > > > struct interface. i have marked methods for deletion for now too > > > in that. > > > > Well, this will go a loooong way to solve many of the > major > > problems with these :) > > > > What about the event system? > > i have adjusted it to account for the different object list > structure :) works > as before though :) i'm trying small changes atm to minimise break. > Right :) :) > > > so... that means if you have made smart objects... you will need > to > > > do a little adapting soon. but in the long run it will make > things > > > much simpler, cleaner and more expandable. > > > > Yes :) > > > > > i am still tossing up if the smart move method should be there, > or > > > all child > > > objects should be simply placed rlative to the smart parent's > origin > > > and thus > > > moved automatically, or if i should provide a default move > method > > > that does > > > this for you. right now its save from destruction - but i'm > tossing > > > up as to > > > the future of it. > > > > > > another thing to go soon will be the old textblock api - > consider it > > > dead as of > > > today, and only hanging in evas in cvs as long as i simply dont > get > > > around to > > > removing it. if you are using textblock2 - it will be RENAMED to > > > > textblock once > > > this happens. this will cause a short period of breakage as > things > > > move over, > > > but then transition will be finished. > > > > > > so - be warned... :) and enjoy the newness! :) > > > > > > -- > > > ------------- Codito, ergo sum - "I code, therefore I am" > > > -------------- > > > The Rasterman (Carsten Haitzler) [EMAIL PROTECTED] > > > 裸好多 > > > Tokyo, Japan (東京 日本) > > > > > > > > ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today * Register for a JBoss Training Course Free Certification Exam for All Training Attendees Through End of 2005 Visit http://www.jboss.com/services/certification for more information _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel