[prev in list] [next in list] [prev in thread] [next in thread] 

List:       calligra-devel
Subject:    Design proposal for the tool actions scheduler for Krita
From:       Dmitry Kazakov <dimula73 () gmail ! com>
Date:       2011-06-14 22:56:11
Message-ID: BANLkTi=dX0=pZHhzJ9qc9wSsuBvq7GdWQA () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi, all!

I've finished designing the scheduler part of tool actions project.

If you can't remember what this project was intended for, you can read
motivation from the old article:
http://community.kde.org/Krita/Centralized_Queue_For_Tool_Jobs

Just a short summary of it:
All our tools execute actions inside the main event loop. This causes
several major bugs:
1) The UI blocks while doing anything serious
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.
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.

And here is the new design itself:

http://community.kde.org/Krita/Strokes_Framework


As usual, all the ideas are welcome! =)

-- 
Dmitry Kazakov

[Attachment #5 (text/html)]

Hi, all!<br><br>I&#39;ve finished designing the scheduler part of tool actions \
project.<br><br>If you can&#39;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>



_______________________________________________
calligra-devel mailing list
calligra-devel@kde.org
https://mail.kde.org/mailman/listinfo/calligra-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic