Bug 412991 - [okular] Scrolling with the scroll bar lacks and is slow
Summary: [okular] Scrolling with the scroll bar lacks and is slow
Status: RESOLVED FIXED
Alias: None
Product: okular
Classification: Applications
Component: general (show other bugs)
Version: 1.8.2
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-10-15 18:47 UTC by Rainer Finke
Modified: 2020-02-14 16:25 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rainer Finke 2019-10-15 18:47:05 UTC
Scrolling in okular with the scroll bar is slow and lacks. If I click on the scroll bar and keep the left mouse button pressed and I move the mouse fast up and down several times, then okular starts to lack already quite a lot. If I then release the left mouse button, okular continues to scroll up and down. It feels like watching a movie, it recorded all the mouse movements and shows them in slow motion.

STEPS TO REPRODUCE
1. Open in okular (Wayland) a PDF with several pages
2. scroll up and down

OBSERVED RESULT: scrolling lacks and continues for several seconds without user interaction


EXPECTED RESULT: scrolling feels natural and it stops quite fast


SOFTWARE/OS VERSIONS
Arch Linux: 5.3.6
KDE Plasma: 5.17
KDE Frameworks Version: 5.63
Qt Version: 5.14 beta
Wayland 1.17
Mesa-git
AMDGPU
Comment 1 magiblot 2019-11-03 13:14:32 UTC
okular seems to be using software rendering. Hand dragging is even worse.

Here's a backtrace caught in the middle of slowliness:

> #0  0x00007f39306888a9 in __memmove_avx_unaligned_erms () from /usr/lib/libc.so.6
> #1  0x00007f3930fe6e5b in QImage::copy(QRect const&) const () from /usr/lib/libQt5Gui.so.5
> #2  0x00007f39310299de in QRasterPlatformPixmap::copy(QPlatformPixmap const*, QRect const&) () from /usr/lib/libQt5Gui.so.5
> #3  0x00007f393101fb28 in QPixmap::copy(QRect const&) const () from /usr/lib/libQt5Gui.so.5
> #4  0x00007f3929286fb3 in PagePainter::paintCroppedPageOnPainter(QPainter*, Okular::Page const*, Okular::DocumentObserver*, int, int, int, QRect const&, Okular::NormalizedRect const&, Okular::NormalizedPoint*) () from /usr/lib/qt/plugins/okularpart.so
> #5  0x00007f392929a81f in ?? () from /usr/lib/qt/plugins/okularpart.so
> #6  0x00007f39292b1567 in ?? () from /usr/lib/qt/plugins/okularpart.so
> #7  0x00007f39315ff0e6 in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #8  0x00007f39316b020f in QFrame::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #9  0x00007f39292b64b6 in ?? () from /usr/lib/qt/plugins/okularpart.so
> #10 0x00007f3930b676d3 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
> #11 0x00007f39315bb4e4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #12 0x00007f39315c4e11 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #13 0x00007f3930b679c2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
> #14 0x00007f39315f7a88 in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib/libQt5Widgets.so.5
> #15 0x00007f39315f82fb in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQt5Widgets.so.5
> #16 0x00007f39315ce16c in ?? () from /usr/lib/libQt5Widgets.so.5
> #17 0x00007f39315ce5f9 in ?? () from /usr/lib/libQt5Widgets.so.5
> #18 0x00007f39315e68d7 in QWidgetPrivate::syncBackingStore() () from /usr/lib/libQt5Widgets.so.5
> #19 0x00007f39315ff4b0 in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #20 0x00007f39317182e5 in QMainWindow::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #21 0x00007f3931fbd90c in KMainWindow::event(QEvent*) () from /usr/lib/libKF5XmlGui.so.5
> #22 0x00007f3932009538 in KXmlGuiWindow::event(QEvent*) () from /usr/lib/libKF5XmlGui.so.5
> #23 0x00007f39315bb4f5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #24 0x00007f39315c4e11 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #25 0x00007f3930b679c2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
> #26 0x00007f39315cf0bd in ?? () from /usr/lib/libQt5Widgets.so.5
> #27 0x00007f39315d17e0 in ?? () from /usr/lib/libQt5Widgets.so.5
> #28 0x00007f39315e882f in QWidget::repaint(QRect const&) () from /usr/lib/libQt5Widgets.so.5
> #29 0x00007f39292986e1 in ?? () from /usr/lib/qt/plugins/okularpart.so
> #30 0x00007f39316b2831 in QAbstractScrollAreaPrivate::_q_vslide(int) () from /usr/lib/libQt5Widgets.so.5
> #31 0x00007f3930b93a11 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
> #32 0x00007f39316b7ebf in QAbstractSlider::valueChanged(int) () from /usr/lib/libQt5Widgets.so.5
> #33 0x00007f39316b851c in QAbstractSlider::setValue(int) () from /usr/lib/libQt5Widgets.so.5
> #34 0x00007f39292a6d5b in ?? () from /usr/lib/qt/plugins/okularpart.so
> #35 0x00007f39292aeed0 in ?? () from /usr/lib/qt/plugins/okularpart.so
> #36 0x00007f39315ff0e6 in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #37 0x00007f39316b020f in QFrame::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #38 0x00007f39292b64b6 in ?? () from /usr/lib/qt/plugins/okularpart.so
> #39 0x00007f3930b676d3 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
> #40 0x00007f39315bb4e4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #41 0x00007f39315c4f8a in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #42 0x00007f3930b679c2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
> #43 0x00007f39315c413b in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /usr/lib/libQt5Widgets.so.5
> #44 0x00007f393161b391 in ?? () from /usr/lib/libQt5Widgets.so.5
> #45 0x00007f393161e2d4 in ?? () from /usr/lib/libQt5Widgets.so.5
> #46 0x00007f39315bb4f5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #47 0x00007f39315c4e11 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
> #48 0x00007f3930b679c2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
> #49 0x00007f3930f9dbf4 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5
> #50 0x00007f3930f9f49b in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
> #51 0x00007f3930f79afc in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
> #52 0x00007f392bddbc51 in ?? () from /usr/lib/libQt5WaylandClient.so.5
> #53 0x00007f392ec543ee in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
> #54 0x00007f392ec56201 in ?? () from /usr/lib/libglib-2.0.so.0
> #55 0x00007f392ec56241 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
> #56 0x00007f3930bbfa03 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
> #57 0x00007f3930b664ec in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
> #58 0x00007f3930b6e326 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
> #59 0x0000559346a1a79a in ?? ()
> #60 0x00007f393054b153 in __libc_start_main () from /usr/lib/libc.so.6
> #61 0x0000559346a1be8e in ?? ()
Comment 2 Patrick Silva 2020-02-07 13:51:46 UTC
I see no problem with okular 1.9.2 on Wayland.

Operating System: Arch Linux 
KDE Plasma Version: 5.17.90
KDE Frameworks Version: 5.66.0
Qt Version: 5.14.1
Comment 3 Rainer Finke 2020-02-14 16:25:33 UTC
I opened a 6MB pdf and tried it again. Scrolling stopped immediately when releasing the left mouse button. So it seems to be fixed.

Operating System: Arch Linux 
KDE Plasma Version: 5.18.0
KDE Frameworks Version: 5.67.0
Qt Version: 5.14.1
Kernel Version: 5.5.3-arch1-1