<div class="gmail_quote">Hi, Lukas!<br><br>Thanks for the change! I&#39;m not sure it&#39;ll help to the current engine, but it&#39;ll really help when i make a working read-write lock.<br><br>About sampled methods:<br>i guess these conditions are never true =)<br>
floor(x) &lt;= x<br>0 &lt;= x-floor(x)<br><br>2all:<br>It seems that old engine didn&#39;t have any exclusive access to tiles (am i right?). Btw, is this exclusive access needed really? <br>In the case of deform brush, KisTopDownUpdateStrategy was requesting read access only, so this very problem will be solved by read/write lock. <br>
But i wonder whether there is any possibility in Krita that two separate threads would request write access to one tile simultaneously? Casper said there was (is) some &quot;the drying filter for watercolors&quot; that can cause it. Is it still applicable to current Krita?<br>
<br><br><br>On Mon, Jun 29, 2009 at 3:31 PM, <a href="mailto:LukasT.dev@gmail.com">LukasT.dev@gmail.com</a> <span dir="ltr">&lt;<a href="mailto:lukast.dev@gmail.com">lukast.dev@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="font-family: &#39;Sans Serif&#39;; font-size: 10pt; font-weight: 400; font-style: normal;">Hello,<br>
<p style="margin: 0px; text-indent: 0px;"><br></p>boemann pointed me to the dimitry&#39;s commit about deform brush and deadlock.<br>
<p style="margin: 0px; text-indent: 0px;"><br></p>I commited change to the deform brush. m_readAccessor is now KisRandomConstAccessor. Maybe it should help.<br>
<p style="margin: 0px; text-indent: 0px;"><br></p>Dimitry wrote:<br>
<span>DeformBrush::bilinear_interpolation. It</span><br>
<pre style="margin: 0px; text-indent: 0px;"><span>crates quite  many accessors  (btw, they are  called &#39;m_readAccessor&#39;,</span></pre><pre style="margin: 0px; text-indent: 0px;"><span>but actually  lock a tile for  write access =) Lukas,  ping! ).  These</span></pre>
<pre style="margin: 0px; text-indent: 0px;"><span>accessors fight  against KisTopDownUpdateStrategy for  access to tiles</span></pre><pre style="margin: 0px 0px 12px; text-indent: 0px;"><span>and they both fall into deadlock forever.</span></pre>
m_readAccessor is created just once in DeformBrush::paint.<br>
<p style="margin: 0px; text-indent: 0px;"><br></p>bilinear_interpolation is doing pretty much the same thing that KisRandomSubAccessorPixel::sampledRawData except I noticed some little different behaviour (artefacts) when used with deform brush.<br>

<p style="margin: 0px; text-indent: 0px;"><br></p>I don&#39;t know what is the meaning of these conditions in the KisRandomSubAccessorPixel:: sampled methods:<br>
if (hsub &lt; 0.0) hsub = 1.0 + hsub;<br>
...<br>
if (vsub &lt; 0.0) vsub = 1.0 + vsub;<br>
<p style="margin: 0px; text-indent: 0px;"><br></p>I have code that uses KisRandomSubAccessorPixel but needs to resolve the different behaviour and then I can throw my bilinear_interpolation away.<br>
<p style="margin: 0px; text-indent: 0px;"><br></p>[1] <a href="http://websvn.kde.org/?view=rev&amp;revision=987852" target="_blank">http://websvn.kde.org/?view=rev&amp;revision=987852</a></div><br>_______________________________________________<br>

kimageshop mailing list<br>
<a href="mailto:kimageshop@kde.org">kimageshop@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/kimageshop" target="_blank">https://mail.kde.org/mailman/listinfo/kimageshop</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Dmitry Kazakov<br>