Issue 101928

Summary: Performance: superfluous paint calls while entering chart and inplace editing
Product: General Reporter: IngridvdM
Component: chartAssignee: joerg.skottke
Status: CLOSED FIXED QA Contact: issues@graphics <issues>
Severity: Trivial    
Priority: P3 CC: Armin.Le.Grand, issues, kyoshida
Version: 3.3.0 or older (OOo)Keywords: performance
Target Milestone: ---   
Hardware: All   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---

Description IngridvdM 2009-05-14 16:29:43 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.
Comment 1 IngridvdM 2009-05-14 17:01:19 UTC
@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?
Comment 2 Armin Le Grand 2009-05-14 17:49:43 UTC
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!
Comment 3 IngridvdM 2009-05-26 16:07:11 UTC
@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.
Comment 4 IngridvdM 2009-05-27 14:06:17 UTC
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.
Comment 5 IngridvdM 2009-06-05 16:32:20 UTC
->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
Comment 6 joerg.skottke 2009-06-29 12:52:29 UTC
No more flickering afaics. Verified.
Comment 7 joerg.skottke 2009-10-09 08:11:51 UTC
Close