Open mmeeks opened 1 year ago
Ok - this one: https://gerrit.libreoffice.org/c/core/+/150117 lok: avoid painting writer windows to a giant virtual-device. [NEW] has a disappointing full invalidation that goes with it but is much faster ...
@caolanm is kindly taking over getting this into 23.05 - and ideally also distro/collabora/co-22.05
If you move an image with alpha images in the document you can end up on this slow path:
he worst of it is that we don't want to be drawing anything at idle really; so right at the top of the stack:
The rot sets in here:
52 SwLayIdle::SwLayIdle (this=0x7ffeab493e80, pRt=, pI=) at /opt/libreoffice/co-22.05/sw/source/core/layout/layact.cxx:2362
...
// If there are accrued paints, it's best to simply invalidate // the whole window. Otherwise there would arise paint problems whose // solution would be disproportionally expensive. SwViewShellImp *pViewImp = rSh.Imp(); bool bUnlock = false; if ( pViewImp->HasPaintRegion() ) { pViewImp->DeletePaintRegion();
} And the unlockPaint is the beast that causes the grief - so I expect that my patch here:
https://gerrit.libreoffice.org/c/core/+/149622
Would fix the performance problem - but ... this also causes some re-rendering regression it seems.
49 0x00007f59f50907e6 in SwCursorShell::Paint (this=this@entry=0x6b7fc10, rRenderContext=..., rRect=...) at /opt/libreoffice/co-22.05/sw/source/core/crsr/crsrsh.cxx:1428
mpAlphaVDev = {m_rInnerRef = empty rtl::Reference}, mnOutOffOrigX = 0, mnOutOffLogicX = 0, mnOutOffOrigY = 0, mnOutOffLogicY = 0, mnOutOffX = 0, mnOutOffY = 0, mnOutWidth = 817, mnOutHeight = 21481, mnDPIX = 96, mnDPIY = 96, mnDPIScalePercentage = 100
Seem we have a giant alpha vdev too ...