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




<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 KDE Frameworks.</div>
<div>By Martin Gräßlin.</div>










<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kwindowsystem
</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;">A plugin interface is added which allows a platform specific plugin
to implement an interface. If the plugin does not implement the
interface, it will fall back to the default implementation. Also
if no plugin can be resolved it will fall back to the default
implementation.

This replaces the existing compile time and runtime selection. In
order to make this work the KWindowInfoPrivate is changed from a
templated approach to using pure virtuals just like the other private
implementations in this library.

As the platform specific parts are no longer compiled in we cannot
"just" delegate the KWindowSystem::icon with NETWinInfo overload
to the xcb implementation. In order to solve this problem the required
method is added to the private interface with a default implementation
which does not return anything. If we are not on platform xcb and
KWindowSystem is compiled with X11 support the plugin for xcb is loaded
and the call gets delegated to the xcb implementation. This allows e.g.
KWin to still read icons for Xwayland clients.</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;"><ul style="padding: 0;text-rendering: inherit;margin: 0 0 0 1em;line-height: inherit;white-space: normal;">
<li style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">unit tests still pass (X11)</li>
<li style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">kwin_wayland still shows icons for Xwayland clients</li>
</ul></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>src/CMakeLists.txt <span style="color: grey">(ff2ce392ecd7969eb94543528c7a670ea0fcd870)</span></li>

 <li>src/config-kwindowsystem.h.cmake <span style="color: grey">(fa0eec115870be27a17ec7b398e40f0c7506f11b)</span></li>

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

 <li>src/kwindoweffects_dummy.cpp <span style="color: grey">(3e24cecb5c7d25883c179b622abdb5ab06587c33)</span></li>

 <li>src/kwindoweffects_dummy_p.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/kwindoweffects_p.h <span style="color: grey">(7c740da952f279a2c5fe689daa5a06c131fa9c9d)</span></li>

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

 <li>src/kwindowinfo_dummy_p.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/kwindowinfo_p.h <span style="color: grey">(6727dd1715a13e5bd7793275620c5fa682318f1c)</span></li>

 <li>src/kwindowsystem.cpp <span style="color: grey">(789132e1b4883dd54218d29af9710dedfe6218e1)</span></li>

 <li>src/kwindowsystem_dummy_p.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/kwindowsystem_p.h <span style="color: grey">(0b5f3e8aeb7b70234c61c59979abd840f349b154)</span></li>

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

 <li>src/kwindowsystemplugininterface_p.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/wayland/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/wayland/plugin.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/wayland/plugin.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/wayland/wayland.json <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/xcb/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/xcb/kwindoweffects.cpp <span style="color: grey">()</span></li>

 <li>src/platforms/xcb/kwindoweffects_x11.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/xcb/kwindowinfo.cpp <span style="color: grey">()</span></li>

 <li>src/platforms/xcb/kwindowinfo_p_x11.h <span style="color: grey">()</span></li>

 <li>src/platforms/xcb/kwindowsystem.cpp <span style="color: grey">()</span></li>

 <li>src/platforms/xcb/kwindowsystem_p_x11.h <span style="color: grey">()</span></li>

 <li>src/platforms/xcb/plugin.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/xcb/plugin.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/xcb/xcb.json <span style="color: grey">(PRE-CREATION)</span></li>

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

 <li>src/pluginwrapper_p.h <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

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






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



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