| Summary: | Continuously face thumbnails flicker/update | ||
|---|---|---|---|
| Product: | [Applications] digikam | Reporter: | Kristian Karl <kristian.hermann.karl> |
| Component: | Thumbs-Image | Assignee: | Digikam Developers <digikam-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | caulier.gilles, graeme.rubble, metzpinguin |
| Priority: | NOR | ||
| Version First Reported In: | 4.12.0 | ||
| Target Milestone: | --- | ||
| Platform: | Appimage | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/graphics/digikam/commit/ea71d3e0a2f1e527300d729bed8dc3f47fc819d7 | Version Fixed/Implemented In: | 7.2.0 |
| Sentry Crash Report: | |||
|
Description
Kristian Karl
2016-12-18 15:44:51 UTC
I noticed this first, when using a maximized Digikam window on a 4K monitor, where enough faces/thumbnails were rendered to cause the flickering. Reducing the size of the Digikam window will make the flickering go away. Can you reproduce the problem with pre-release 5.4.0 AppImage univerdal bundle for Linux available here : https://drive.google.com/drive/folders/0BzeiVr-byqt5Y0tIRWVWelRJenM Yes, I could reproduce the problem on the pre-release 5.4.0 AppImage. The flickering still exists digikam 5.7.0, installed from neon CI repository: aptitude show digikam Package: digikam State: installed Automatically installed: no Version: 4:5.5.0+p16.04+git20170621.0646-0 Priority: optional Section: graphics Maintainer: Neon CI <neon@kde.org> Architecture: amd64 Uncompressed Size: 26,6 M Depends: digikam-data (= 4:5.5.0+p16.04+git20170621.0646-0), libqt5sql5-sqlite, perl, libc6 (>= 2.14), libexiv2-14 (>= 0.25), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgl1-mesa-glx | libgl1, libgomp1 (>= 4.9), libgphoto2-6 (>= 2.5.9), libgphoto2-port12 (>= 2.5.9), libjasper1, libjpeg8 (>= 8c), libkf5akonadicontact5, libkf5calendarcore5, libkf5configcore5, libkf5configgui5, libkf5configwidgets5, libkf5contacts5, libkf5coreaddons5, libkf5filemetadata3, libkf5i18n5, libkf5iconthemes5, libkf5kdelibs4support5, libkf5kiowidgets5, libkf5kipi32.0.0, libkf5notifications5, libkf5notifyconfig5, libkf5sane5, libkf5service5, libkf5solid5, libkf5threadweaver5, libkf5widgetsaddons5, libkf5windowsystem5, libkf5xmlgui5, liblcms2-2 (>= 2.2+git20110628), liblensfun0 (>= 0.2.8), liblqr-1-0 (>= 0.4.0), libmarblewidget-qt5-28, libopencv-contrib2.4v5, libopencv-core2.4v5, libopencv-imgproc2.4v5, libopencv-objdetect2.4v5, libpng12-0 (>= 1.2.13-4), libqt5concurrent5 (>= 5.9.0), libqt5core5a (>= 5.9.0), libqt5dbus5 (>= 5.9.0), libqt5gui5 (>= 5.9.0), libqt5network5 (>= 5.9.0), libqt5opengl5 (>= 5.9.0), libqt5printsupport5 (>= 5.9.0), libqt5sql5 (>= 5.9.0), libqt5webkit5, libqt5widgets5 (>= 5.9.0), libqt5x11extras5, libqt5xml5 (>= 5.9.0), libstdc++6 (>= 5.2), libtiff5 (>= 4.0.3), libx11-6 Here, i tried with digiKam 5.7.0 + Qt 5.9. + KF5 5.35, and OpenCV 3.1.0 with a 4K monitor under Mageia6. I cannot reproduce the problem. Which screen resolution do you use exactly ? Gilles Caulier I have seen this problem on 2 different 4K screens. One connected to my midtower machine. And last, my laptop Lenovo Thinkpad X240 connected using Display Port to a BenQ BL3201PT 32-inch Ultra HD, running 3840x2160 30 FPS It does not matter what size I have on the thumbnails, 128 or 256 px. The AppImage Linux Bundle have been recompiled with last changes from source code and is available here for testing : https://files.kde.org/digikam/ Take a care : 6.0.0 is a beta release for the moment. Make a database backup before to test. Problem still here ? Gilles Caulier I had looked at this a while ago. I suspect after the video here is some display composer used (Compiz?). This probably sends a paint event constantly. Normally, the paint event occurs only when e.g. a window is moved in front over the thumbnails. At the moment I do not see a solution to not break other display managers. Maik I tested this on a different 4k screen, and I get the same problem. Using the latest from git: 0890e2005cae874dd1fcf71c2d3642152c00eff0, digikam produces the following on the terminal during this flickering : : digikam.general: Request to get thumbnail for "" digikam.general: Could not open input file: "" digikam.general: Failed to extract video thumbnail for "" QFSFileEngine::open: No file name specified digikam.general: Request to get thumbnail for "" digikam.general: Could not open input file: "" digikam.general: Failed to extract video thumbnail for "" QFSFileEngine::open: No file name specified digikam.general: Request to get thumbnail for "" digikam.general: Could not open input file: "" digikam.general: Failed to extract video thumbnail for "" QFSFileEngine::open: No file name specified digikam.general: Request to get thumbnail for "" digikam.general: Could not open input file: "" digikam.general: Failed to extract video thumbnail for "" digikam.general: Request to get thumbnail for "" QFSFileEngine::open: No file name specified digikam.general: Could not open input file: "" digikam.general: Failed to extract video thumbnail for "" QFSFileEngine::open: No file name specified digikam.general: Request to get thumbnail for "" digikam.general: Could not open input file: "" digikam.general: Failed to extract video thumbnail for "" QFSFileEngine::open: No file name specified digikam.general: Request to get thumbnail for "" digikam.general: Could not open input file: "" digikam.general: Failed to extract video thumbnail for "" QFSFileEngine::open: No file name specified digikam.general: Request to get thumbnail for "" digikam.general: Could not open input file: "" digikam.general: Failed to extract video thumbnail for "" QFSFileEngine::open: No file name specified : : The first thing that is strange is that you constantly have a paint event. As I said, usually only when the mouse pointer or a window moves in front of it or the view is scrolled. The second question is where the empty ImageInfo::filePath() come from to preload thumbnails. If I create a patch with more debug output, can you apply it for testing? Maik Absolutely! I'll try some debugging of my own in the meantime. I got a dual screen setup to hel me debug now. When debugging this morning, I paused during flicker, and paused execution. Every time I paused , the stack trace for Digikam code started at: https://github.com/KDE/digikam/blob/c013f88088bf08e321e4da8be71a61b02b67af2c/core/libs/widgets/itemview/itemviewcategorized.cpp#L997 I added before the return statement: qCDebug(DIGIKAM_GENERAL_LOG) << "Event: " << event; return DCategorizedView::viewportEvent(event); Which now gave the following output during flicker: digikam.general: Event: QPaintEvent(QRegion(929,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(1083,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(1237,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(1545,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(1699,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(1853,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(2007,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(2161,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(1391,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(2315,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(2469,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(size=2, bounds=(2623,888 298x212) - [(2623,888 144x212), (2777,888 144x212)])) digikam.general: Event: QPaintEvent(QRegion(2931,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(3085,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(3239,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(3393,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(3547,888 144x212)) digikam.general: Event: QPaintEvent(QRegion(5,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(159,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(313,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(467,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(621,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(775,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(929,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(1083,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(1237,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(1391,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(1545,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(1699,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(1853,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(2007,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(size=2, bounds=(2161,1110 298x212) - [(2161,1110 144x212), (2315,1110 144x212)])) digikam.general: Event: QPaintEvent(QRegion(size=2, bounds=(2469,1110 298x212) - [(2469,1110 144x212), (2623,1110 144x212)])) digikam.general: Event: QPaintEvent(QRegion(2777,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(2931,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(3085,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(3239,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(3393,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(3547,1110 144x212)) digikam.general: Event: QPaintEvent(QRegion(5,1332 144x212)) digikam.general: Event: QPaintEvent(QRegion(159,1332 144x212)) digikam.general: Event: QPaintEvent(QRegion(313,1332 144x212)) digikam.general: Event: QPaintEvent(QRegion(467,1332 144x212)) digikam.general: Event: QPaintEvent(QRegion(621,1332 144x212)) digikam.general: Event: QPaintEvent(QRegion(775,1332 144x212)) digikam.general: Event: QPaintEvent(QRegion(929,1332 144x212)) digikam.general: Event: QPaintEvent(QRegion(1083,1332 144x212)) digikam.general: Event: QPaintEvent(QRegion(1237,1332 144x212)) Some more details observed while debugging. It seems like ThumbnailLoadingTask is getting called repeatably during flicker: libdigikamcore.so.6.0.0!Digikam::ThumbnailCreator::loadDetail(const Digikam::ThumbnailCreator * const this, const Digikam::ThumbnailIdentifier & identifier, const QRect & rect) (/home/krikar/dev/kde/digikam/core/libs/threadimageio/thumbnailcreator.cpp:187) libdigikamcore.so.6.0.0!Digikam::ThumbnailLoadingTask::execute(Digikam::ThumbnailLoadingTask * const this) (/home/krikar/dev/kde/digikam/core/libs/threadimageio/thumbnailtask.cpp:169) libdigikamcore.so.6.0.0!Digikam::LoadSaveThread::run(Digikam::LoadSaveThread * const this) (/home/krikar/dev/kde/digikam/core/libs/threadimageio/loadsavethread.cpp:133) libdigikamcore.so.6.0.0!Digikam::DynamicThread::Private::run(Digikam::DynamicThread::Private * const this) (/home/krikar/dev/kde/digikam/core/libs/threads/dynamicthread.cpp:183) libQt5Core.so.5![Unknown/Just-In-Time compiled code] (Unknown Source:0) libpthread.so.0!start_thread(void * arg) (/build/glibc-OTsEL5/glibc-2.27/nptl/pthread_create.c:463) libc.so.6!clone() (/build/glibc-OTsEL5/glibc-2.27/sysdeps/unix/sysv/linux/x86_64/clone.S:95) That's right, the thumbnails are "preloaded" by the Paint Event. The thumbnail task will send a signal to the image model that the thumbnail is available and it will be drawn. By you over and over again. The advantage of this thumbnail preload only with the fast scrolling, the thumbnails appear faster. The problem is the Paint Event, which is constantly triggered by you. So again my question: which desktop? which display manager and extension? Graphics card and driver? Maik Oh sorry! Desktop: KDE Neon (Plasma 5.13.4,KDE frameworks 5.49.0, Qt 5.11.1 ) on Ubuntu 18.04 Display manager and extension: cat /etc/X11/default-display-manager /usr/bin/sddm Graphics card and driver? glxinfo | grep OpenGL OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 620 (Kaby Lake GT2) OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.0.5 OpenGL core profile shading language version string: 4.50 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 18.0.5 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.2 Mesa 18.0.5 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20 OpenGL ES profile extensions: Resolution on the screen: 3840x2160 Do you use X11 or Wayland ? I never tested AppImage with Wayland, and think it must miss some piece of Qt plugins in the bundle. Gilles Caulier I use x11 echo $XDG_SESSION_TYPE x11 I think that maybe the resolution might be involved somehow. If I use may 2560x1440, I don't get any flickering. When I use 3840x2160, I do get flickering. Please note, that the digikam window is maximized in both cases. Maybe a long shot, but could maybe this method be involved somehow? https://github.com/KDE/digikam/blob/c013f88088bf08e321e4da8be71a61b02b67af2c/core/libs/widgets/itemview/dcategorizedview.cpp#L70-L132 I'll add some debug logging and see what I can find Another way to experiment : In appimage, we use Qt 5.9.6 LTS. Perhaps a major update to Qt 5.11.x can solve this problem. Gilles Caulier I tested the latest appimage of Digikam (digikam-5.9.0-01-x86-64.appimage) on the latest KUbuntu (18-04.1) version on Virtualbox. 1) I used images from http://cswww.essex.ac.uk/mv/allfaces/faces94.html http://cswww.essex.ac.uk/mv/allfaces/faces94.zip 2) I then let Digikam scan for faces on all the images 3) I open People view, and select the tag unknown 4) Select a Flat List in the View | Separate Items 4) I maximize my VirtualBox window in my 3840x2160 screen, and then maximize Digikam in VirtualBox. 5) I click on the People view tab (hide it), so I can maximize the number of thumbnails in the window. 6) Adjust thumbnail sizes to smallest possible. I get flicker. Using the steps above should be enough to reproduce the flicker on any 4k screen. If an 4K screen is not available, the VirtualBox window could be made very large by just increasing the size of that window, and moving it outside, until a very large window is made, the maximize the Digikam window. I think the problem perhaps is related to the actual size of the Digikam window, and the number of people thumbnails being displayed? In virtualbox, did you enable 3D support (openGL) Gilles Caulier No. 3D Acceleration was disabled. Well, try again with this option... Gilles Caulier With 3D Acceleration enabled, I still get flickering on my VirtualBox installation, I'm afraid. ok, What's about the cores assigned to the VM ? Same for the system memory and the video memory. This is important because it can influence to the rendering performances. Gilles Caulier System ======= Processors: 1 CPU Base memory: 4610 MB Acceleration: VT-x/AMD-V, Nested Paging, KVM Paravirtualization Display ======= Video memory: 33 MB Acceleration: 3D Complete printout of information regarding the VM machine
$ VBoxManage showvminfo "Kubuntu 18.04"
Name: Kubuntu 18.04
Groups: /
Guest OS: Ubuntu (64-bit)
UUID: 73aa30f4-e0f1-4359-96ba-b1e860f8038f
Config file: /home/krikar/VirtualBox VMs/Kubuntu 18.04/Kubuntu 18.04.vbox
Snapshot folder: /home/krikar/VirtualBox VMs/Kubuntu 18.04/Snapshots
Log folder: /home/krikar/VirtualBox VMs/Kubuntu 18.04/Logs
Hardware UUID: 73aa30f4-e0f1-4359-96ba-b1e860f8038f
Memory size: 4610MB
Page Fusion: off
VRAM size: 33MB
CPU exec cap: 100%
HPET: off
Chipset: piix3
Firmware: BIOS
Number of CPUs: 1
PAE: off
Long Mode: on
Triple Fault Reset: off
APIC: on
X2APIC: on
CPUID Portability Level: 0
CPUID overrides: None
Boot menu mode: message and menu
Boot Device (1): Floppy
Boot Device (2): DVD
Boot Device (3): HardDisk
Boot Device (4): Not Assigned
ACPI: on
IOAPIC: on
BIOS APIC mode: APIC
Time offset: 0ms
RTC: UTC
Hardw. virt.ext: on
Nested Paging: on
Large Pages: off
VT-x VPID: on
VT-x unr. exec.: on
Paravirt. Provider: Default
Effective Paravirt. Provider: KVM
State: powered off (since 2018-09-11T16:41:47.676000000)
Monitor count: 1
3D Acceleration: on
2D Video Acceleration: off
Teleporter Enabled: off
Teleporter Port: 0
Teleporter Address:
Teleporter Password:
Tracing Enabled: off
Allow Tracing to Access VM: off
Tracing Configuration:
Autostart Enabled: off
Autostart Delay: 0
Default Frontend:
Storage Controller Name (0): IDE
Storage Controller Type (0): PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0): 2
Storage Controller Port Count (0): 2
Storage Controller Bootable (0): on
Storage Controller Name (1): SATA
Storage Controller Type (1): IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1): 30
Storage Controller Port Count (1): 1
Storage Controller Bootable (1): on
IDE (1, 0): Empty
SATA (0, 0): /home/krikar/VirtualBox VMs/Kubuntu 18.04/Snapshots/{d346dd72-695a-4b30-a07f-9e743849bb7a}.vdi (UUID: d346dd72-695a-4b30-a07f-9e743849bb7a)
NIC 1: MAC: 0800272205A2, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
NIC 2: disabled
NIC 3: disabled
NIC 4: disabled
NIC 5: disabled
NIC 6: disabled
NIC 7: disabled
NIC 8: disabled
Pointing Device: USB Tablet
Keyboard Device: PS/2 Keyboard
UART 1: disabled
UART 2: disabled
UART 3: disabled
UART 4: disabled
LPT 1: disabled
LPT 2: disabled
Audio: enabled (Driver: PulseAudio, Controller: AC97, Codec: AD1980)
Audio playback: disabled
Audio capture: enabled
Clipboard Mode: disabled
Drag and drop Mode: disabled
VRDE: disabled
USB: enabled
EHCI: enabled
XHCI: disabled
USB Device Filters:
<none>
Bandwidth groups: <none>
Shared folders: <none>
Capturing: not active
Capture audio: not active
Capture screens: 0
Capture file: /home/krikar/VirtualBox VMs/Kubuntu 18.04/Kubuntu 18.04.webm
Capture dimensions: 1024x768
Capture rate: 512 kbps
Capture FPS: 25
Capture options: ac_enabled=false
Guest:
Configured memory balloon size: 0 MB
Snapshots:
Name: Prestine (UUID: 43f8bf90-35c4-440e-b854-23041d709ac4) *
After 3 weeks of work, i finally completed the compilation of AppImage using Qt 5.11.3 + QWebkit 5.212. New 6.1.0 pre-release AppImage bundle can be found here (64 bits only for the moment) : https://files.kde.org/digikam/ Please check if this bugzilla entry still valid. Thanks in advance Gilles Caulier I can confirm, that the issue still exists. I tried using digikam-6.1.0-git-20190321T102236-x86-64.appimage If there's anything I can do, to try to pin-point the problem, I'm happy to help out. Git commit ea71d3e0a2f1e527300d729bed8dc3f47fc819d7 by Maik Qualmann. Committed on 08/11/2020 at 06:39. Pushed by mqualmann into branch 'master'. remove dead code to update thumbnails when a paint event occurs Related: bug 426208 FIXED-IN: 7.2.0 M +5 -3 NEWS M +0 -5 core/app/items/delegate/itemdelegate.cpp M +0 -5 core/app/items/delegate/itemdelegate.h M +1 -6 core/app/items/delegate/itemfacedelegate.cpp M +0 -2 core/app/items/delegate/itemfacedelegate.h M +0 -15 core/app/items/views/itemcategorizedview.cpp M +0 -1 core/app/items/views/itemcategorizedview.h M +0 -5 core/libs/models/itemalbumfiltermodel.cpp M +0 -3 core/libs/models/itemalbumfiltermodel.h M +0 -5 core/showfoto/thumbbar/showfotodelegate.h https://invent.kde.org/graphics/digikam/commit/ea71d3e0a2f1e527300d729bed8dc3f47fc819d7 |