Bug Hunting Session
Bug 97075 - GL: flicker creating calc window ...
Summary: GL: flicker creating calc window ...
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Chart (show other bugs)
Version:
(earliest affected)
5.1.0.1 rc
Hardware: All All
: medium normal
Assignee: Not Assigned
URL:
Whiteboard: target:5.2.0 target:5.1.0.2
Keywords:
Depends on:
Blocks: VCL-OpenGL
  Show dependency treegraph
 
Reported: 2016-01-12 16:28 UTC by Michael Meeks
Modified: 2016-10-25 19:11 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Meeks 2016-01-12 16:28:16 UTC
I get a flicker when first creating a calc window. This is because the Sdr idle handler:

>	vcllo.dll!OpenGLSalGraphicsImpl::flush() Line 2001	C++
 	vcllo.dll!OpenGLSalGraphicsImpl::PostDraw() Line 246	C++
 	vcllo.dll!OpenGLSalGraphicsImpl::DoCopyBits(const SalTwoRect & rPosAry, OpenGLSalGraphicsImpl & rImpl) Line 1664	C++
 	vcllo.dll!WinOpenGLSalGraphicsImpl::copyBits(const SalTwoRect & rPosAry, SalGraphics * pSrcGraphics) Line 27	C++
 	vcllo.dll!WinSalGraphics::copyBits(const SalTwoRect & rPosAry, SalGraphics * pSrcGraphics) Line 63	C++
 	vcllo.dll!SalGraphics::CopyBits(const SalTwoRect & rPosAry, SalGraphics * pSrcGraphics, const OutputDevice * pOutDev, const OutputDevice * pSrcOutDev) Line 590	C++
 	vcllo.dll!OutputDevice::drawOutDevDirect(const OutputDevice * pSrcDev, SalTwoRect & rPosAry) Line 720	C++
 	vcllo.dll!OutputDevice::DrawOutDev(const Point & rDestPt, const Size & rDestSize, const Point & rSrcPt, const Size & rSrcSize, const OutputDevice & rOutDev) Line 595	C++
 	svxcorelo.dll!sdr::overlay::OverlayManagerBuffered::ImpBufferTimerHandler(Idle * __formal) Line 326	C++
 	svxcorelo.dll!sdr::overlay::OverlayManagerBuffered::LinkStubImpBufferTimerHandler(void * instance, Idle * data) Line 209	C++
 	vcllo.dll!Link<Idle *,void>::Call(Idle * data) Line 84	C++
 	vcllo.dll!Idle::Invoke() Line 26	C++
 	vcllo.dll!ImplSchedulerData::Invoke() Line 41	C++
 	vcllo.dll!Scheduler::ProcessTaskScheduling(bool bTimerOnly) Line 171	C++
 	vcllo.dll!ImplYield(bool i_bWait, bool i_bAllEvents, const unsigned long nReleased) Line 519	C++
 	vcllo.dll!Application::Yield() Line 535	C++
 	vcllo.dll!Application::Execute() Line 471	C++
 	sofficeapp.dll!desktop::Desktop::DoExecute() Line 1292	C++
 	sofficeapp.dll!desktop::Desktop::Main() Line 1611	C++
 	vcllo.dll!ImplSVMain() Line 170	C++
 	vcllo.dll!SVMain() Line 208	C++
 	sofficeapp.dll!soffice_main() Line 96	C++
 	soffice_real.exe!sal_main() Line 48	C
 	soffice_real.exe!main(int argc, char * * argv) Line 47	C
 	soffice_real.exe!WinMain(void * _hinst, void * _dummy, char * _cmdline, int _nshow) Line 47	C
 	soffice_real.exe!__tmainCRTStartup() Line 618	C
 	soffice_real.exe!WinMainCRTStartup() Line 466	C
 	kernel32.dll!@BaseThreadInitThunk@12()	Unknown
 	ntdll.dll!___RtlUserThreadStart@8()	Unknown
 	ntdll.dll!__RtlUserThreadStart@8()	Unknown

Has a higher priority than the re-paint method; which is far from ideal.
Comment 1 Michael Meeks 2016-01-12 16:30:35 UTC
We need a new priority that is just behind REPAINT to ensure the sequencing here - and without mis-interacting with lots of other tasks at rather lower priorities I think. Ideally we'd replace MEDIUM with its own slot too.
Comment 2 Michael Meeks 2016-01-12 16:34:26 UTC
https://gerrit.libreoffice.org/21400

should fix this.
Comment 3 Commit Notification 2016-01-12 20:56:16 UTC
Michael Meeks committed a patch related to this issue.
It has been pushed to "master":

http://cgit.freedesktop.org/libreoffice/core/commit/?id=16c7f8916661df24f4681ec82f6bd4d7ad85d141

tdf#97075 - don't render sdr overlays before we paint.

It will be available in 5.2.0.

The patch should be included in the daily builds available at
http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
http://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 4 Commit Notification 2016-01-12 23:42:57 UTC
Michael Meeks committed a patch related to this issue.
It has been pushed to "libreoffice-5-1":

http://cgit.freedesktop.org/libreoffice/core/commit/?id=928a7a3e92e085a880ecf0d3ad5e40d41b7779bf&h=libreoffice-5-1

tdf#97075 - don't render sdr overlays before we paint.

It will be available in 5.1.0.2.

The patch should be included in the daily builds available at
http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
http://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.