https://bugs.kde.org/show_bug.cgi?id=488061

Mirko <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REPORTED                    |RESOLVED
         Resolution|---                         |UNMAINTAINED
                 CC|                            |[email protected]

--- Comment #5 from Mirko <[email protected]> ---
I found the cause and have a fix.

Cause: with Qt 6, the rows/columns spin boxes in the Mosaic Wall window are
connected to QSpinBox::valueChanged(QString), which no longer exists in Qt 6.
digiKam prints a warning about this when the window opens:

  QObject::connect: No such signal QSpinBox::valueChanged(QString) in
mainwindow.cpp:34

So changing the grid size never recalculates the cell colors. "Create Mosaic"
then uses the new grid size with the color data of the old one (100x100 = 10000
cells), reads past its end, and the std::out_of_range exception in the worker
thread terminates digiKam without an error message. This matches the report:
the default grid works, a changed grid crashes. It is not Windows-specific; the
Windows bundles are simply built with Qt 6.

Fix: https://github.com/scheckmedia/ImageMosaicWall/pull/25
It also fixes data races between the generation threads, which could cause
crashes as well. It includes PR #23 (Exiv2 0.28 / MSVC build fixes) because it
builds on it.

A second PR with rendering fixes (empty cells, Exif orientation, centered tile
crop, dark edge cells) builds on it:
https://github.com/scheckmedia/ImageMosaicWall/pull/26

I tested on Fedora 44 with digiKam 9.1.0 (Qt 6.11, Exiv2 0.28.9), with the
plugin built against the distribution packages. I cannot test on Windows or
macOS.

Since the upstream repository has had no activity since 2023 and #23 is still
unmerged, how would you like to take this for the bundles? ext_mosaicwall could
build from my fork (https://github.com/MightyMirko/ImageMosaicWall, branch
tile-rendering-fixes, which contains everything), or I can provide the changes
as patches like mosaicwall-exiv2-cpp17.patch.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to