<table><tr><td style="">graesslin created this revision.<br />Restricted Application added a project: Plasma.<br />Restricted Application added a subscriber: plasma-devel.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D7259" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>Provide a virtual Scene::qpainterRenderBuffer() -> QImage* method</p>

<p>Needed by testing of QPainter scene to access the back buffer. Exposed<br />
as a virtual method in Scene, so that the test does not have to cast to<br />
SceneQPainter.</p>

<p>Move QPainter compositor into plugin</p>

<p>This change is similar to <a href="https://phabricator.kde.org/D7232" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D7232</a> and moves the scene_qpainter into a<br />
dedicated plugin. Compared to the XRender case it's more complicated as<br />
the platform plugins need to implement a platform specific backend.</p>

<p>The base implementation for this part used to be in scene_qpainter. As<br />
the idea is to completly move it away from KWin core it would be point<br />
less to still have the backend definition in KWin core, but it cannot<br />
be in the scene plugin as otherwise all platforms need to link the<br />
plugin.</p>

<p>To solve this a new platformsupport subdirectory is added which contains<br />
the scene platform backend as a static library. For the OpenGL scene such<br />
a static library will also be required.</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>SceneQPainter test still passes, nested compositor still works</p></div></div><br /><div><strong>BRANCH</strong><div><div>scene-qpainter-plugin</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D7259" rel="noreferrer">https://phabricator.kde.org/D7259</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>CMakeLists.txt<br />
autotests/integration/effects/fade_test.cpp<br />
autotests/integration/effects/slidingpopups_test.cpp<br />
autotests/integration/effects/translucency_test.cpp<br />
autotests/integration/scene_qpainter_test.cpp<br />
autotests/integration/x11_client_test.cpp<br />
composite.cpp<br />
platformsupport/CMakeLists.txt<br />
platformsupport/scenes/CMakeLists.txt<br />
platformsupport/scenes/qpainter/CMakeLists.txt<br />
platformsupport/scenes/qpainter/backend.cpp<br />
platformsupport/scenes/qpainter/backend.h<br />
plugins/platforms/drm/CMakeLists.txt<br />
plugins/platforms/drm/scene_qpainter_drm_backend.h<br />
plugins/platforms/fbdev/CMakeLists.txt<br />
plugins/platforms/fbdev/scene_qpainter_fb_backend.h<br />
plugins/platforms/virtual/CMakeLists.txt<br />
plugins/platforms/virtual/scene_qpainter_virtual_backend.h<br />
plugins/platforms/wayland/CMakeLists.txt<br />
plugins/platforms/wayland/scene_qpainter_wayland_backend.h<br />
plugins/platforms/x11/windowed/CMakeLists.txt<br />
plugins/platforms/x11/windowed/scene_qpainter_x11_backend.h<br />
plugins/scenes/CMakeLists.txt<br />
plugins/scenes/qpainter/CMakeLists.txt<br />
plugins/scenes/qpainter/qpainter.json<br />
plugins/scenes/qpainter/scene_qpainter.cpp<br />
plugins/scenes/qpainter/scene_qpainter.h<br />
scene.cpp<br />
scene.h<br />
scene_qpainter.cpp<br />
scene_qpainter.h</div></div></div><br /><div><strong>To: </strong>graesslin, KWin, Plasma<br /><strong>Cc: </strong>plasma-devel, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart, lukas<br /></div>