<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://git.reviewboard.kde.org/r/111657/">http://git.reviewboard.kde.org/r/111657/</a>
</td>
</tr>
</table>
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">The first patch, for the bug, IMHO is better done in another way, so please update it.
And the second patch might result in errors perhaps (no idea really, don't know the code enough yet), so unless that is a real performance killer I would prefer to have that just a TODO comment for now.</pre>
<br />
<div>
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/111657/diff/1/?file=173035#file173035line3278" style="color: black; font-weight: bold; text-decoration: underline;">plan/libs/kernel/kpttask.cpp</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void Completion::addUsedEffort( const Resource *resource, Completion::UsedEffort *value )</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">3278</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">changed</span><span class="p">();</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">3278</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">changed</span><span class="p">(</span><span class="n">Node</span><span class="o">::</span><span class="n">CompletionActualEffort</span><span class="p">);</span></pre></td>
</tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Not sure CompletionActualEffort is the proper enum. Sadly they are not really documented, and then they seem to all make no difference anyway.
So instead of reusing that one just add another item to enum Node::Properties, named UsedEffort, and use this as value for the changed(...) call. And make it also results in clearing all clearPerformanceCaches, like the other enum values in Node::changed(Node *node, int property).</pre>
</div>
<br />
<div>
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/111657/diff/1/?file=173036#file173036line405" style="color: black; font-weight: bold; text-decoration: underline;">plan/libs/models/kptnodechartmodel.cpp</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void ChartItemModel::calculate()</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">405</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">foreach</span> <span class="p">(</span> <span class="n">Node</span> <span class="o">*</span><span class="n">n</span><span class="p">,</span> <span class="n">m_nodes</span> <span class="p">)</span> <span class="p">{</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">405</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">Node</span> <span class="o">*</span><span class="n">n</span> <span class="o">=</span> <span class="n">m_project</span><span class="o">-></span><span class="n">projectNode</span><span class="p">();</span></pre></td>
</tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Is there really only the projectNode which is without parents? I am not yet sure if there cannot be other nodes which would meet the condition.
Especially as the whole logic might be there for a reason, so I would be rather cautious to change this.
Perhaps just add a TODO for now, and once you feel really secure that this is the right optimization, do it.</pre>
</div>
<br />
<p>- Friedrich W. H.</p>
<br />
<p>On July 23rd, 2013, 1 p.m. UTC, Alvaro Soliverez wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for Calligra.</div>
<div>By Alvaro Soliverez.</div>
<p style="color: grey;"><i>Updated July 23, 2013, 1 p.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">* When effort is added to a task, use the Node::CompletionActualEffort property to have the performance cache should be refreshed when it hits Node::changed() method.
This solves bug 322735, where the project performance chart is not refreshed. This is because there is a cache that does not get refreshed unless the changed() method is called with the correct property.
* Instead of traversing all nodes looking for the one without parent, request the project for that node using projectNode(). Just a small optimization. The one node without parent is the project node, which can be easily requested, instead of making a O(n2) loop.
</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Tested manually. The performance chart is refreshed correctly and there were no apparent performance drops or other side-effects.</pre>
</td>
</tr>
</table>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>
<a href="http://bugs.kde.org/show_bug.cgi?id=322735">322735</a>
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>plan/libs/kernel/kpttask.cpp <span style="color: grey">(da48be0)</span></li>
<li>plan/libs/models/kptnodechartmodel.cpp <span style="color: grey">(655dfc8)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/111657/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>