<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/126101/">https://git.reviewboard.kde.org/r/126101/</a>
     </td>
    </tr>
   </table>
   <br />










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On November 20th, 2015, 10:14 a.m. UTC, <b>Daniel Vrátil</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/126101/diff/3/?file=417472#file417472line361" style="color: black; font-weight: bold; text-decoration: underline;">src/backendmanager.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 3)

    </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 BackendManager::onBackendRequestDone(QDBusPendingCallWatcher *watcher)</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">361</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="k">delete</span> <span class="n">m_inProcessBackend</span><span class="p">.</span><span class="n">first</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;">Instead of deleting the AbstractBackend manually here, you could let QPluginLoader do it by <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">mLoader->unload()</code>, then delete mLoader normally (not via deleteLater()). As a bonus it will unload the plugin binary from the process (just deleting QPluginLoader does not).</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;">We can't do that actually, since it would mean a behavioural change from the out-of-process version. Shutting down the backend would effect the configs we handed out to become invalid, so we don't want to do this. (We also don't do this in the out-of-process version, but instead keep configs valid on the client side after shutting down the backen.)</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I've changed the pluginloader to be deleted right away, however, not via deleteLater().</p></pre>
<br />




<p>- Sebastian</p>


<br />
<p>On November 20th, 2015, 12:16 a.m. UTC, Sebastian Kügler 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 Plasma, Solid, Àlex Fiestas, Aleix Pol Gonzalez, Daniel Vrátil, and Martin Gräßlin.</div>
<div>By Sebastian Kügler.</div>


<p style="color: grey;"><i>Updated Nov. 20, 2015, 12:16 a.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
libkscreen
</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;">This patchset adds in-process operation to libkscreen</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">purpose:
- allow easier debugging
- for some backends (qscreen, upcoming kwayland) the out of process operation is not necessary since these backends are well-shielded</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This implementation is backwards compatible and opt-in for running setups.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">If the user exports KSCREEN_BACKEND_INPROCESS=1 before running, all operations will be done in process. Otherwise, the out-of-process mode is used.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Changes revolve around the ConfigOperations, the BackendManager (which "factories" the backends, either in- or out-of-process), and the plugin loading logic</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Autotests should cover all the cases (and actually a few currently unsupported ones, such as using different backends in the same process).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Details on performance, etc.: http://vizzzion.org/blog/2015/11/wayland-and-libkscreen-benchmarks/</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;">Added a ton of autotests, made sure all existing ones pass.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">tried "KSCREEN_BACKEND_INPROCESS=1 kcmshell5 kscreen", all working as expected.</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>CMakeLists.txt <span style="color: grey">(86a0965)</span></li>

 <li>autotests/CMakeLists.txt <span style="color: grey">(69af7f0)</span></li>

 <li>autotests/testconfigmonitor.cpp <span style="color: grey">(a051226)</span></li>

 <li>autotests/testinprocess.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>autotests/testqscreenbackend.cpp <span style="color: grey">(da4dbae)</span></li>

 <li>autotests/testscreenconfig.cpp <span style="color: grey">(ecbcedf)</span></li>

 <li>autotests/testxrandr.cpp <span style="color: grey">(b9b838a)</span></li>

 <li>backends/fake/fake.cpp <span style="color: grey">(60264dd)</span></li>

 <li>src/backendlauncher/backendloader.cpp <span style="color: grey">(52051df)</span></li>

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

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

 <li>src/config.cpp <span style="color: grey">(75d947d)</span></li>

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

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

 <li>src/configoperation.h <span style="color: grey">(2405d79)</span></li>

 <li>src/configoperation.cpp <span style="color: grey">(87fe141)</span></li>

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

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

 <li>src/getconfigoperation.cpp <span style="color: grey">(22f92b4)</span></li>

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

 <li>src/setconfigoperation.h <span style="color: grey">(020a990)</span></li>

 <li>src/setconfigoperation.cpp <span style="color: grey">(6ea944f)</span></li>

</ul>

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






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







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