GSoC/GCI Archive
Google Summer of Code 2011 KDE

Multithreaded Tool Actions System for Krita

by Dmitry Kazakov for KDE

Krita has two different subsystems accessing the image: tools and updating threads. The update process is safe (no two threads access the same pixel at the same time), but the tools are not owned by the scheduler, so they must use explicit locking to avoid collisions. I want to encapsulate the tools into job objects those will be stored in the same queue as updater's walkers. That will make the system linearizable (by Herlihy) so we'll be able to say "Krita is a truly multithreaded application"