Hi, all!<br><br>I've finished designing the scheduler part of tool actions project.<br><br>If you can't remember what this project was intended for, you can read motivation from the old article:<br><a href="http://community.kde.org/Krita/Centralized_Queue_For_Tool_Jobs">http://community.kde.org/Krita/Centralized_Queue_For_Tool_Jobs</a><br>
<br>Just a short summary of it:<br>All our tools execute actions inside the main event loop. This causes several major bugs:<br>1) The UI blocks while doing anything serious<br>2) (more important) Qt may initiate recursive events processing from the inside of the other event handler. In particular this can happen due to calls to processEvents inside KoProgressUpdater framework. If the user is quite fast, then two tools can easily start their strokes concurrently (even on single-threaded machine). This usually leads to a crash.<br>
3) Currently, this is workarounded by explicit locking in the tools. Due to that all the user actions happened during the node was locked are completely lost.<br><br>And here is the new design itself:<br><br><a href="http://community.kde.org/Krita/Strokes_Framework">http://community.kde.org/Krita/Strokes_Framework</a><br>
<br><br>As usual, all the ideas are welcome! =)<br><br>-- <br>Dmitry Kazakov<br>