On 4/15/08, Nathan <[EMAIL PROTECTED]> wrote: > > On Fri, Apr 11, 2008 at 5:27 PM, Alex Holkner <[EMAIL PROTECTED]> wrote: > > I haven't looked at your code yet, but anything that creates Text > > objects regularly can probably be optimised by creating a fixed number > > of Text objects, and updating the text and style of each only when > > appropriate. > > > I feel like an idiot. But my code runs great now! I was creating a > Text object for each _line_ of my "log viewer" object, and then each > time a new log line came in or whenever the log window was moved I was > destroying all the Text objects and recreating all new ones in new > positions. Funny that my brain-dead implementation ran so great under > pyglet 1.0... > > I didn't realize that Text objects could be modified after creation! > My new implementation: > > 1) Now uses text.Label objects. > 2) Updates the .x and .y attributes when the window is moved [*1] > 3) Uses _one_ label object for the whole log window > 4) Updates the text of the existing label object when a new log line > comes in. [*2] > > Now, instead of seeing the fps drop to near-zero whenever a log line > comes in or the window is moved, there's nearly no performance impact > to either operation! Not to mention that my code's quite a bit > simpler. > > *1. Do I need to do label.begin_update() and label.end_update() when > I change label.x and label.y? I'm not, currently, and it seems to > work fine.
No, as x and y do not affect layout. > *2. I am doing begin_update() and end_update() around text changes. Sounds good. The purpose of these methods is just to suspend relayout (which is quite expensive) while you make changes to more than one layout-affecting property (such as text, font, style, width). If you find yourself needing better performance, consider using IncrementalTextLayout, which knows how to only layout the minimal amount of text necessary after an update, compared to Label/TextLayout, which re-lays-out the entire text after any change. Does this completely fix the twisted+pyglet1.1 problem? Alex. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "pyglet-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/pyglet-users?hl=en -~----------~----~----~----~------~----~------~--~---
