<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/116940/">https://git.reviewboard.kde.org/r/116940/</a>
     </td>
    </tr>
   </table>
   <br />










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On August 23rd, 2014, 3:45 p.m. UTC, <b>David Edmundson</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  


<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="https://git.reviewboard.kde.org/r/116940/diff/23/?file=307051#file307051line36" style="color: black; font-weight: bold; text-decoration: underline;">status-handler.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 23)

    </span>
   </th>
  </tr>
 </thead>



 
 

 <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">36</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">m_messageBufferSize</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">it's not really a buffer if it's only 1 item long.. I still don't understand what this is doing.</p></pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I don't like the approach either of buffering to the presence plugin class. R20 doesn't do this at all. I haven't had a problem with status message plugins overwriting the disk last user presence, but the most recent implementation of this approach (presence plugin-specific) failed also as applied to presence plugins (screensaver, autoaway). I think a new approach is needed to address the presence message plugin part of this bug. R20 (and R24) fixes only the status message part of bug #334492, not the presence part.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The basic idea is to keep a list of the past number of status message items to compare disk saves to, to prevent saving a non-user status message to disk. This is a bit hackish, but seems to work well for the status message plugins, having no false positives even with the occasional lock where the status message remained stuck. I'm trying similar infrastructure for the presence plugins, relying on the presence messages to match what not to write to disk. An occasional wrong presence on disk is probably the worst-case outcome of this workaround.</p></pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On August 23rd, 2014, 3:45 p.m. UTC, <b>David Edmundson</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  


<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="https://git.reviewboard.kde.org/r/116940/diff/23/?file=307051#file307051line200" style="color: black; font-weight: bold; text-decoration: underline;">status-handler.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 23)

    </span>
   </th>
  </tr>
 </thead>



 
 

 <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">197</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="c1">//evaluate the status message plugins for on-off and utilization state</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I haven't had an answer that I understand when I last asked this.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Why are you turning plugins off? <br style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;" />
The entire point of the queue is that some plugins have priority over others, if you make it so there's only one active there's not point having a queue.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Also can you (using simple words) explain the difference between enabled and active in plugins.</p></pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This is really useful for deactivating the entire stack of status message plugins at the same time, for instance by manually changing the requested presence with an active status message plugin. If the requested presence isn't manually altered and the active plugin deactivates due to inactivity, the queue should in theory bump to the next active plugin automatically.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">active is useful for plugin-specific changes e.g. new data events, etc. The now playing status message plugin sets active for each track change, and (de)active between track changes and (de)active for no upcoming tracks or players.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">enabled is for turning the output of a plugin on and off completely, so that it won't respond to new data events. (dis)abled overrides active.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">(de)active looks a lot like (dis)abled output-wise, but (de)active plugins still respond to new data events while (dis)abled plugins don't.</p></pre>
<br />




<p>- James</p>


<br />
<p>On August 25th, 2014, 11:15 a.m. UTC, James Smith wrote:</p>









<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for Telepathy.</div>
<div>By James Smith.</div>


<p style="color: grey;"><i>Updated Aug. 25, 2014, 11:15 a.m.</i></p>







<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=332082">332082</a>, 

 <a href="http://bugs.kde.org/show_bug.cgi?id=334492">334492</a>, 

 <a href="http://bugs.kde.org/show_bug.cgi?id=334542">334542</a>


</div>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
ktp-kded-module
</div>


<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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Move status message plugins into a separate class. New infrastructure to help mitigate the occurrence of bug #334492 while using status message plugins: 1) buffering of the last n status messages, and 2) a limiter to help stop flooding the presence changer. Also strips redundant and disused data structures from both classes.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This patch returns the ability to engage status message plug-ins from custom status messages. Also working is the disabling of non-visible status message plug-ins. State-affinity in the 95% of previously noted cases has been vastly improved also, the few remaining issues should be due to "lite" protocols that don't have a full complement of on-line presences.</p></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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Disconnect / reconnect, autoconnect / no autoconnect, suspend / resume. Enable / disable via kcm module. Added a new custom presence and engaged the now playing plugin in the contact list from the new presence. Disabled the plugin by activating another presence.</p></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>telepathy-mpris.cpp <span style="color: grey">(44b041fdd3764ee5f67598fcf555a2759d853bdd)</span></li>

 <li>tests/CMakeLists.txt <span style="color: grey">(7ec77495417a6790060ea5ea7126c46399dff755)</span></li>

 <li>telepathy-kded-module-message-plugin.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>telepathy-kded-module-message-plugin.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>telepathy-kded-module-plugin.h <span style="color: grey">(4c161696a706e82059a7eb314773c3644fe26bd7)</span></li>

 <li>telepathy-kded-module-plugin.cpp <span style="color: grey">(daf73c66947bc946097de7a8e8a1518555131145)</span></li>

 <li>telepathy-mpris.h <span style="color: grey">(05b77c90a50372fd9ed66bde0ab8a287caf34b51)</span></li>

 <li>CMakeLists.txt <span style="color: grey">(930267740d0bf26f42a48ea55d77148f87df5369)</span></li>

 <li>status-handler.h <span style="color: grey">(06240ff17e22148f2b128bc0eb8cec6d6abe68ff)</span></li>

 <li>status-handler.cpp <span style="color: grey">(4b9c25a2ccba451f6e608bb704626e33149108cc)</span></li>

</ul>

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






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








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