Bug 433786

Summary: greeter should stop repainting when all screens are off
Product: [Plasma] kscreenlocker Reporter: Harald Sitter <sitter>
Component: greeterAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED DUPLICATE    
Severity: normal CC: aleixpol, bhush94, butirsky, joseph, nate
Priority: NOR Keywords: efficiency
Version: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Harald Sitter 2021-03-01 11:21:05 UTC
SUMMARY
When the displays are in power saving the screen locker keeps repainting even though nobody will see it. Notably on plasma mobile when the screen is off the greeter will every minute spike to almost 10% CPU use because it's redrawing for the changed time.

STEPS TO REPRODUCE
1. on a desktop system set display timeout to 1m
2. ssh in from another device to check busyness (e.g. break on ioctl)
3. lock the session
4. wait for display to get suspended

OBSERVED RESULT
greeter is still busy repainting itself

EXPECTED RESULT
greeter should stop redrawing when all displays are suspended and only start again when any display comes online again

ADDITIONAL INFORMATION

plamo trace of the redraw
#0  0x0000ffff8a061b40 in ioctl () at /usr/lib/libc.so.6
#1  0x0000ffff84b95028 in drmIoctl () at /usr/lib/libdrm.so.2
#2  0x0000ffff84375c0c in  () at /usr/lib/dri/sun4i-drm_dri.so
#3  0x0000ffff84375ebc in  () at /usr/lib/dri/sun4i-drm_dri.so
#4  0x0000ffff84370298 in  () at /usr/lib/dri/sun4i-drm_dri.so
#5  0x0000ffff83774784 in  () at /usr/lib/dri/sun4i-drm_dri.so
#6  0x0000ffff837df448 in  () at /usr/lib/dri/sun4i-drm_dri.so
#7  0x0000ffff8b86e040 in QSGBatchRenderer::Renderer::unmap(QSGBatchRenderer::Buffer*, bool) () at /usr/lib/libQt5Quick.so.5
#8  0x0000ffff8b86fd90 in QSGBatchRenderer::Renderer::uploadBatch(QSGBatchRenderer::Batch*) () at /usr/lib/libQt5Quick.so.5
#9  0x0000ffff8b881640 in QSGBatchRenderer::Renderer::render() () at /usr/lib/libQt5Quick.so.5
#10 0x0000ffff8b869304 in QSGRenderer::renderScene(QSGBindable const&) () at /usr/lib/libQt5Quick.so.5
#11 0x0000ffff8b8d9660 in QSGOpenGLLayer::grab() () at /usr/lib/libQt5Quick.so.5
#12 0x0000ffff8b8d9dc8 in QSGOpenGLLayer::updateTexture() () at /usr/lib/libQt5Quick.so.5
#13 0x0000ffff8ba61e68 in QQuickOpenGLShaderEffectMaterial::updateTextures() const () at /usr/lib/libQt5Quick.so.5
#14 0x0000ffff8b869b6c in QSGRenderer::preprocess() () at /usr/lib/libQt5Quick.so.5
#15 0x0000ffff8b8692c4 in QSGRenderer::renderScene(QSGBindable const&) () at /usr/lib/libQt5Quick.so.5
#16 0x0000ffff8b8d9660 in QSGOpenGLLayer::grab() () at /usr/lib/libQt5Quick.so.5
#17 0x0000ffff8b8d9dc8 in QSGOpenGLLayer::updateTexture() () at /usr/lib/libQt5Quick.so.5
#18 0x0000ffff8b8b8fe0 in QSGBasicInternalImageNode::preprocess() () at /usr/lib/libQt5Quick.so.5
#19 0x0000ffff8b869b6c in QSGRenderer::preprocess() () at /usr/lib/libQt5Quick.so.5
#20 0x0000ffff8b8692c4 in QSGRenderer::renderScene(QSGBindable const&) () at /usr/lib/libQt5Quick.so.5
#21 0x0000ffff8b869830 in QSGRenderer::renderScene(unsigned int) () at /usr/lib/libQt5Quick.so.5
#22 0x0000ffff8b8d0d84 in QSGDefaultRenderContext::renderNextFrame(QSGRenderer*, unsigned int) () at /usr/lib/libQt5Quick.so.5
#23 0x0000ffff8b949898 in QQuickWindowPrivate::renderSceneGraph(QSize const&, QSize const&) () at /usr/lib/libQt5Quick.so.5
#24 0x0000ffff8b8bae64 in  () at /usr/lib/libQt5Quick.so.5
#25 0x0000ffff8b958a08 in QQuickWindow::event(QEvent*) () at /usr/lib/libQt5Quick.so.5
#26 0x0000ffff8a5f807c in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#27 0x0000ffff8a9eb708 in QPlatformWindow::deliverUpdateRequest() () at /usr/lib/libQt5Gui.so.5
#28 0x0000ffff8a63095c in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5
#29 0x0000ffff8a5f807c in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#30 0x0000ffff8a5fb570 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5
#31 0x0000ffff8a666780 in  () at /usr/lib/libQt5Core.so.5
#32 0x0000ffff88731ce0 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#33 0x0000ffff887322c0 in  () at /usr/lib/libglib-2.0.so.0
#34 0x0000ffff887323c4 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#35 0x0000ffff8a665a08 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#36 0x0000ffff8a5f61d4 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#37 0x0000ffff8a600900 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#38 0x0000aaaac94bb1d4 in  ()
#39 0x0000ffff89fba538 in __libc_start_main () at /usr/lib/libc.so.6
#40 0x0000aaaac94bb574 in _start ()
Comment 1 Aleix Pol 2022-09-19 22:39:18 UTC

*** This bug has been marked as a duplicate of bug 409097 ***