Apache OpenOffice (AOO) Bugzilla – Issue 101928
Performance: superfluous paint calls while entering chart and inplace editing
Last modified: 2013-02-24 21:20:41 UTC
When entering the edit mode of a chart the chart is painted twice. After editing the chart in inplace mode it is painted twice also. For bigger charts this is a performance problem.
@aw, hiding the sdrpage before changing the shapes as discussed offline does help a lot already. Now I have one Invalidate() call left originating from SdrPaintWindow::impCreateOverlayManager. The comment there: 'Request a repaint so that the buffered overlay manager fills its buffer properly. This is a workaround for missing buffer updates.' I test wise suppressed it for my case and I did not see any problems at first check. Is there a chance that this Invalidate() call can be suppressed when sdrpage is hidden also?
AW: It may only be needed with buffered OverlayManagers, so only in the if(...) where a sdr::overlay::OverlayManagerBuffered is created. It will work with the chart without that initialisation since it paints completely after view creation anyways, but i am not sure with the other apps. Please play around with SW, SC and Draw/Impress with that invalidate disabled. It theoretically should not be needed, but it seems i have added it there to solve a problem. Unfortunately it is too long ago to remember in detail. HTH!
@aw, the methods HideSdrPage and ShowSdrPage do trigger an Invalidate() call also themselves. I assume that those Invalidate() calls can not be discussed? In that case I can choose a complete chart local solution.
As discussed off-line removing the Invalidate() calls originating from HideSdrPage and ShowSdrPage seems to be to risky for all the other applications. So I choose the chart local solution ( skipping invalidates while in paint except if they originate from a model change). Fixed in CWS dr70.
->jsk, please verify in CWS dr70. Load the document http://www.openoffice.org/nonav/issues/showattachment.cgi/62801/BigLineChart.ods from issue 62801, switch off the tip help to avoid arbitrary repaints, double click the chart and move the mouse left and right to see when the chart is ready for new user actions (the pointer changes dependent on where you are). Observe how long the time is from double clicking until the chart is painted and is ready for further user actions. On my computer it takes: dev300m49: ~24 seconds CWS dr70: ~17 seconds
No more flickering afaics. Verified.
Close