On Tue, Dec 11, 2007 at 10:22:12AM -0800, Christopher Barker wrote: > Paul Kienzle wrote: > > or if there are pending wx events. The scheme isn't perfect since wx > > doesn't see all the native events, but it seems to work well enough. > > I'm confused here -- what events are missed, and why? What do you mean > by a "native" event?
Intermediate mouse positions, for example, seem to be consumed. Also, it doesn't seem to recognize pending resize events. Try an experiment such as resizing examples/pcolor_log.py, with N large enough to make redraws slow to see what I mean (N=200 does it for me). I tried changing the _onSize event handler to use draw_idle rather than draw to improve the resize experience but I shut it off because the drawing area turns black and I couldn't figure out how to set it to the figure background colour. It helped slow graphs a little since I could see what the resulting window would look like, but the black was jarring for quick graphs. Any thoughts on implementing preemptive plotting? This would mean putting tests like the following inside potentially expensive loops: if self.isabort(): break where isabort is a method in class artist which delegates to the canvas: return self.figure.canvas.isabort() if self.figure else False For the wx canvas, isabort() would be something like: wx.Yield() # Allow UI events to be processed return self._draw_idle_requested # abort drawing if UI triggered redraw > > 2) Don't draw bitmap on the screen if the graph isn't shown. Otherwise > > a plot inside of a wx aui notebook bleeds through even if the graph > > notebook is not on top. > > hmmm odd -- this does sound right, but shouldn't wx only be re-drawing > in a Paint event anyway? I haven't traced through the wx.aui code so I don't know what is going on. I do know that I have problems if I don't check IsWindowShown before blitting the bitmap onto the screen. > > 3) Don't regenerate entire plot for each PaintEvent. Instead, only > > draw the graph if this is the first time the window is exposed, otherwise > > work from the bitmap. > > This is odd to me too -- I haven't dug into the wx back-end, but it > seems the Paint Event should only trigger a blit of the bitmap to the > screen anyway. It should, but the bitmap may not be initialized when the paint event occurs. This happens when the window is first created (since there is no associated size event) and now when switching aui notebook windows (since I don't render the bitmap if the window isn't shown). - Paul ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel