<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/100120/">http://git.reviewboard.kde.org/r/100120/</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;">I&#39;m in favour of this - the current EngineObserver construct is unnecessarily different from the standard Qt signals and slots system, and is also inefficient (particularly when you consider trackPositionChanged, for example, which is called frequently, but which most observers don&#39;t care about).

I haven&#39;t looked at most of the code, just the EngineController changes (and a couple of issues I noticed in CoverBlingApplet).</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/100120/diff/1/?file=2889#file2889line65" style="color: black; font-weight: bold; text-decoration: underline;">playground/src/context/applets/coverbling/CoverBlingApplet.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; "></pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">64</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">             <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span> <span class="n">jumpToPlaying</span><span class="p">()</span> <span class="p">)</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;">This shouldn&#39;t be connected to jumpToPlaying, but to trackPlaying( Meta::TrackPtr ).</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/100120/diff/1/?file=2889#file2889line418" style="color: black; font-weight: bold; text-decoration: underline;">playground/src/context/applets/coverbling/CoverBlingApplet.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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void CoverBlingApplet::engineNewTrackPlaying( )</pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void CoverBlingApplet::trackPlaying( Meta::TrackPtr track )</pre></td>

  </tr>
 </tbody>



 
 




 <tbody>

  <tr>
    <th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">413</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="kt">void</span> <span class="n">CoverBlingApplet</span><span class="o">::</span><span class="n"><span class="hl">engineNewT</span>rackPlaying</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">417</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="kt">void</span> <span class="n">CoverBlingApplet</span><span class="o">::</span><span class="n"><span class="hl">t</span>rackPlaying</span><span class="p">(</span> <span class="n"><span class="hl">Meta</span></span><span class="o"><span class="hl">::</span></span><span class="n"><span class="hl">TrackPtr</span></span><span class="hl"> </span><span class="n"><span class="hl">track</span></span><span class="hl"> </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;">This needs declaring as a slot in the header.</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/100120/diff/1/?file=2895#file2895line117" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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; ">public:</pre></td>

  </tr>
 </tbody>



 
 




 <tbody>

  <tr>
    <th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">117</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">Phonon</span><span class="o">::</span><span class="n">State</span> <span class="n">state</span><span class="p">()</span> <span class="k">const</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">116</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="c1"><span class="hl">// </span>    Phonon::State state() const;</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;">Delete stuff rather than commenting it :-)</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/100120/diff/1/?file=2895#file2895line154" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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; ">public:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">153</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">bool</span> <span class="n">isStopped</span><span class="p">()</span> <span class="k">const</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;">The apidocs should mention (for isPlaying, isPaused and isStopped) what happens when fading out.</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/100120/diff/1/?file=2895#file2895line158" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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; ">public:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">157</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="cm">     * Amarok isPlaying is true in those cases too.</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;">&quot;Usually&quot; is not helpful for people reading apidocs.  Is it deterministic?</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/100120/diff/1/?file=2895#file2895line165" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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; ">public:</pre></td>

  </tr>
 </tbody>



 
 




 <tbody>

  <tr>
    <th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">147</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="cm">     * start of it).</span></pre></td>
    <th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">164</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="cm">     * start of it). However for rewinding we have isSeekable()</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 a better example we can replace the seeking one with?  Who actually uses isStream?</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/100120/diff/1/?file=2895#file2895line344" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Q_SIGNALS:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">338</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="cm">     * Emitted when the playback stops while playing a track.</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;">What if it&#39;s paused?  Buffering?</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/100120/diff/1/?file=2895#file2895line350" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Q_SIGNALS:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">344</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="cm">     * Called when the playback is paused.</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;">But not when it resumes, right?  This should be clarified in the docs.</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/100120/diff/1/?file=2895#file2895line354" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Q_SIGNALS:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">348</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="cm">/** While trying to play the track an error occured. */</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;">Specifically, an error that prevented playback from starting or continuing, right?  This should be clarified.</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/100120/diff/1/?file=2895#file2895line386" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Q_SIGNALS:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">380</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="kt">void</span> <span class="n">trackMetadataChanged</span><span class="p">(</span> <span class="n">Meta</span><span class="o">::</span><span class="n">TrackPtr</span> <span class="n">track</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;">Reading the apidocs, I&#39;m completely confused about the difference between trackMetadataChanged and currentMetadataChanged, or what other changes I would get by also connecting to trackChanged.

Are trackMetadataChanged and currentMetadataChanged identical apart from the argument type?  If so, this should be explicit in the apidocs.

Most clients will just want to know when the &quot;title of the currently-playing track&quot; changes, either because a different track is playing or because the title property of the current track has changed (edited/stream/whatever).  What other use cases are there for connecting to a metadata changed signal?</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/100120/diff/1/?file=2895#file2895line390" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Q_SIGNALS:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">384</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="kt">void</span> <span class="n">albumMetadataChanged</span><span class="p">(</span> <span class="n">Meta</span><span class="o">::</span><span class="n">AlbumPtr</span> <span class="n">album</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;">EngineObserver doesn&#39;t really have the concept of a &quot;current album&quot;, does it?  At least, conceptually.  It&#39;s just the album linked to the current track.  The apidocs should really reflect that.

A related question: is this signal emitted if the album associated with the track changes (rather than the properties of the album)?  I would guess yes.

What about when the track changes and the album stays the same?  Or the track changes and the album is different?

Basically, the apidocs aren&#39;t clear enough.</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/100120/diff/1/?file=2895#file2895line425" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Q_SIGNALS:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">419</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="kt">void</span> <span class="n">trackPositionChanged</span><span class="p">(</span> <span class="n">qint64</span> <span class="n">position</span><span class="p">,</span> <span class="n">bool</span> <span class="n">userSeek</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;">The apidocs should be clearer about &quot;userSeek&quot; - when it is false, it means that the position change is due to normal playback progression.

Perhaps this should be split into two signals, one for each value of userSeek - would this be more efficient, with a reduced number of listeners when the track is just progressing normally?

Perhaps seeked( qint64 position ) and trackPositionChanged( qint64 position ), with the former being connected to the latter?</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/100120/diff/1/?file=2895#file2895line437" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.h</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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Q_SIGNALS:</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">431</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="kt">void</span> <span class="n">sessionEnded</span><span class="p">(</span> <span class="n">bool</span> <span class="n">resumePlayback</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;">This doesn&#39;t seem to be emitted or used anywhere.</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/100120/diff/1/?file=2896#file2896line555" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.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; ">EngineController::stop( bool forceInstant ) //SLOT</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">552</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="n">m_currentTrack</span> <span class="o">=</span> <span class="mi">0</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;">m_currentAlbum = 0, surely?</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/100120/diff/1/?file=2896#file2896line790" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.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; ">EngineController::setNextTrack( Meta::TrackPtr track )</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">779</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="cm">/*</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;">Delete, rather than commenting out.</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/100120/diff/1/?file=2896#file2896line1040" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.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; ">EngineController::slotAboutToFinish()</pre></td>

  </tr>
 </tbody>






 
 

 <tbody>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1016</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="n">m_currentTrack</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1028</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="n">m_currentTrack</span> <span class="o">=</span> <span class="mi">0</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;">Shouldn&#39;t m_currentAlbum be set to 0 as well?</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/100120/diff/1/?file=2896#file2896line1130" style="color: black; font-weight: bold; text-decoration: underline;">src/EngineController.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; ">EngineController::slotNewTrackPlaying( const Phonon::MediaSource &amp;source )</pre></td>

  </tr>
 </tbody>



 
 




 <tbody>

  <tr>
    <th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1095</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n"><span class="hl">trackChangedNotify</span></span><span class="p">(</span> <span class="n">m_currentTrack</span> <span class="p">)<span class="hl">;</span></span></pre></td>
    <th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1118</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="k"><span class="hl">if</span></span><span class="p">(</span> <span class="n">m_currentTrack</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;">If this is false, the value of m_currentAlbum will be stale, won&#39;t it?</pre>
</div>
<br />



<p>- Alex</p>


<br />
<p>On October 31st, 2010, 3:53 p.m., Ralf Engels wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.orgrb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Amarok.</div>
<div>By Ralf Engels.</div>


<p style="color: grey;"><i>Updated 2010-10-31 15:53:10</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;">Remove EngineObserver and the observer pattern.
Instead we have several new signals and functions in EngineController.
Also the EngineController is now a MetaObserver for the current track and exporting the relevant signals.

This patch improves the tread safety and reduces the complexity of the code by a lot.
Over 600 lines of codes could be removed while at the same time fixing the image update problems and several small problems where classes listened for the album meta changed but forgot that the album could change when a user changed the track.
</pre>
  </td>
 </tr>
</table>





<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>playground/src/context/applets/coverbling/CoverBlingApplet.h <span style="color: grey">(a3ff113)</span></li>

 <li>playground/src/context/applets/coverbling/CoverBlingApplet.cpp <span style="color: grey">(a2a50e7)</span></li>

 <li>playground/src/context/applets/video/Video.h <span style="color: grey">(1d52f0b)</span></li>

 <li>playground/src/context/applets/video/Video.cpp <span style="color: grey">(8471497)</span></li>

 <li>src/ActionClasses.h <span style="color: grey">(aa67ec7)</span></li>

 <li>src/ActionClasses.cpp <span style="color: grey">(61e8af8)</span></li>

 <li>src/App.cpp <span style="color: grey">(e6006b9)</span></li>

 <li>src/EngineController.h <span style="color: grey">(aae4503)</span></li>

 <li>src/EngineController.cpp <span style="color: grey">(65b3f2e)</span></li>

 <li>src/KNotificationBackend.h <span style="color: grey">(02cc9d8)</span></li>

 <li>src/KNotificationBackend.cpp <span style="color: grey">(b98391c)</span></li>

 <li>src/MainWindow.h <span style="color: grey">(4593d47)</span></li>

 <li>src/MainWindow.cpp <span style="color: grey">(9102558)</span></li>

 <li>src/TrayIcon.h <span style="color: grey">(d1ffd43)</span></li>

 <li>src/TrayIcon.cpp <span style="color: grey">(47f56bf)</span></li>

 <li>src/amarokurls/AmarokUrlHandler.cpp <span style="color: grey">(1d8cd46)</span></li>

 <li>src/context/ContextView.h <span style="color: grey">(a3f36fb)</span></li>

 <li>src/context/ContextView.cpp <span style="color: grey">(ccfe4f3)</span></li>

 <li>src/context/applets/photos/PhotosApplet.h <span style="color: grey">(4cac9ea)</span></li>

 <li>src/context/applets/photos/PhotosApplet.cpp <span style="color: grey">(0b47da9)</span></li>

 <li>src/context/applets/similarartists/SimilarArtistsApplet.h <span style="color: grey">(3a2d7ea)</span></li>

 <li>src/context/applets/similarartists/SimilarArtistsApplet.cpp <span style="color: grey">(0cf2c76)</span></li>

 <li>src/context/applets/videoclip/VideoclipApplet.h <span style="color: grey">(a0704c6)</span></li>

 <li>src/context/applets/videoclip/VideoclipApplet.cpp <span style="color: grey">(789173e)</span></li>

 <li>src/context/engines/current/CurrentEngine.h <span style="color: grey">(0369065)</span></li>

 <li>src/context/engines/current/CurrentEngine.cpp <span style="color: grey">(2c32f75)</span></li>

 <li>src/context/engines/labels/LabelsEngine.h <span style="color: grey">(626a030)</span></li>

 <li>src/context/engines/labels/LabelsEngine.cpp <span style="color: grey">(65278b4)</span></li>

 <li>src/context/engines/lyrics/LyricsEngine.h <span style="color: grey">(771bf6f)</span></li>

 <li>src/context/engines/lyrics/LyricsEngine.cpp <span style="color: grey">(527cd0d)</span></li>

 <li>src/context/engines/similarartists/SimilarArtistsEngine.h <span style="color: grey">(fea9bf5)</span></li>

 <li>src/context/engines/similarartists/SimilarArtistsEngine.cpp <span style="color: grey">(97bc109)</span></li>

 <li>src/context/engines/upcomingevents/UpcomingEventsEngine.h <span style="color: grey">(c57b004)</span></li>

 <li>src/context/engines/upcomingevents/UpcomingEventsEngine.cpp <span style="color: grey">(66131fd)</span></li>

 <li>src/context/engines/wikipedia/WikipediaEngine.h <span style="color: grey">(5d53082)</span></li>

 <li>src/context/engines/wikipedia/WikipediaEngine.cpp <span style="color: grey">(4c65799)</span></li>

 <li>src/core-impl/meta/stream/Stream_p.h <span style="color: grey">(cd217bf)</span></li>

 <li>src/core-impl/meta/timecode/TimecodeObserver.h <span style="color: grey">(b727196)</span></li>

 <li>src/core-impl/meta/timecode/TimecodeObserver.cpp <span style="color: grey">(dea809d)</span></li>

 <li>src/core/CMakeLists.txt <span style="color: grey">(5863ca1)</span></li>

 <li>src/core/engine/EngineObserver.h <span style="color: grey">(5a93062)</span></li>

 <li>src/core/engine/EngineObserver.cpp <span style="color: grey">(7d5728b)</span></li>

 <li>src/dbus/mpris1/PlayerHandler.h <span style="color: grey">(8f90f27)</span></li>

 <li>src/dbus/mpris1/PlayerHandler.cpp <span style="color: grey">(0afeb59)</span></li>

 <li>src/dbus/mpris2/Mpris2DBusHandler.h <span style="color: grey">(a767c79)</span></li>

 <li>src/dbus/mpris2/Mpris2DBusHandler.cpp <span style="color: grey">(59afbf3)</span></li>

 <li>src/dialogs/ScriptManager.h <span style="color: grey">(6104dcf)</span></li>

 <li>src/dialogs/ScriptManager.cpp <span style="color: grey">(e98f45f)</span></li>

 <li>src/dynamic/BiasSolver.cpp <span style="color: grey">(bf8e3c8)</span></li>

 <li>src/dynamic/biases/EchoNest.h <span style="color: grey">(9a6ecc7)</span></li>

 <li>src/dynamic/biases/EchoNest.cpp <span style="color: grey">(16f26f4)</span></li>

 <li>src/mac/GrowlInterface.h <span style="color: grey">(3bb35d2)</span></li>

 <li>src/mac/GrowlInterface.cpp <span style="color: grey">(862d019)</span></li>

 <li>src/playlist/PlaylistActions.h <span style="color: grey">(035ff77)</span></li>

 <li>src/playlist/PlaylistActions.cpp <span style="color: grey">(2358b29)</span></li>

 <li>src/playlist/PlaylistController.cpp <span style="color: grey">(d38c9d6)</span></li>

 <li>src/playlist/view/listview/PrettyItemDelegate.cpp <span style="color: grey">(ab19ccc)</span></li>

 <li>src/scriptengine/AmarokEngineScript.h <span style="color: grey">(55e275c)</span></li>

 <li>src/scriptengine/AmarokEngineScript.cpp <span style="color: grey">(15f7b6e)</span></li>

 <li>src/services/lastfm/ScrobblerAdapter.h <span style="color: grey">(ef7a7c1)</span></li>

 <li>src/services/lastfm/ScrobblerAdapter.cpp <span style="color: grey">(1b4da4a)</span></li>

 <li>src/services/lastfm/biases/LastFmBias.h <span style="color: grey">(6ba571d)</span></li>

 <li>src/services/lastfm/biases/LastFmBias.cpp <span style="color: grey">(4093104)</span></li>

 <li>src/statemanagement/DefaultApplicationController.cpp <span style="color: grey">(8205aab)</span></li>

 <li>src/statusbar/StatusBar.h <span style="color: grey">(b785714)</span></li>

 <li>src/statusbar/StatusBar.cpp <span style="color: grey">(48df821)</span></li>

 <li>src/toolbar/CurrentTrackToolbar.h <span style="color: grey">(c8293f3)</span></li>

 <li>src/toolbar/CurrentTrackToolbar.cpp <span style="color: grey">(22408ea)</span></li>

 <li>src/toolbar/MainToolbar.h <span style="color: grey">(fc29ba2)</span></li>

 <li>src/toolbar/MainToolbar.cpp <span style="color: grey">(abeedc6)</span></li>

 <li>src/toolbar/SlimToolbar.h <span style="color: grey">(dcfaf22)</span></li>

 <li>src/toolbar/SlimToolbar.cpp <span style="color: grey">(e69df7c)</span></li>

 <li>src/toolbar/VolumePopupButton.h <span style="color: grey">(a0f5d56)</span></li>

 <li>src/toolbar/VolumePopupButton.cpp <span style="color: grey">(fb5fcb1)</span></li>

 <li>src/widgets/Osd.h <span style="color: grey">(b80b37e)</span></li>

 <li>src/widgets/Osd.cpp <span style="color: grey">(af4b24b)</span></li>

 <li>src/widgets/ProgressWidget.h <span style="color: grey">(3fba490)</span></li>

 <li>src/widgets/ProgressWidget.cpp <span style="color: grey">(211cea7)</span></li>

 <li>src/widgets/VolumeWidget.h <span style="color: grey">(910e9f1)</span></li>

 <li>src/widgets/VolumeWidget.cpp <span style="color: grey">(e1d01f1)</span></li>

 <li>tests/core-impl/meta/multi/CMakeLists.txt <span style="color: grey">(8a51249)</span></li>

 <li>tests/playlist/CMakeLists.txt <span style="color: grey">(01703fe)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/100120/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>