diff --git a/src/core/renderbackend.cpp b/src/core/renderbackend.cpp index 7c71f41cdf..9dc9b6d2f9 100644 --- a/src/core/renderbackend.cpp +++ b/src/core/renderbackend.cpp @@ -5,6 +5,7 @@ */ #include "renderbackend.h" +#include "scene/surfaceitem.h" #include @@ -31,4 +32,19 @@ QHash> RenderBackend::supportedFormats() const return QHash>{{DRM_FORMAT_XRGB8888, QVector{DRM_FORMAT_MOD_LINEAR}}}; } +std::unique_ptr RenderBackend::createSurfaceTextureInternal(SurfacePixmapInternal *pixmap) +{ + return nullptr; +} + +std::unique_ptr RenderBackend::createSurfaceTextureX11(SurfacePixmapX11 *pixmap) +{ + return nullptr; +} + +std::unique_ptr RenderBackend::createSurfaceTextureWayland(SurfacePixmapWayland *pixmap) +{ + return nullptr; +} + } // namespace KWin diff --git a/src/core/renderbackend.h b/src/core/renderbackend.h index 3681b89d51..f018387cb3 100644 --- a/src/core/renderbackend.h +++ b/src/core/renderbackend.h @@ -11,12 +11,18 @@ #include +#include + namespace KWin { class Output; class OverlayWindow; class OutputLayer; +class SurfacePixmapInternal; +class SurfacePixmapWayland; +class SurfacePixmapX11; +class SurfaceTexture; /** * The RenderBackend class is the base class for all rendering backends. @@ -37,6 +43,10 @@ public: virtual void present(Output *output) = 0; virtual QHash> supportedFormats() const; + + virtual std::unique_ptr createSurfaceTextureInternal(SurfacePixmapInternal *pixmap); + virtual std::unique_ptr createSurfaceTextureX11(SurfacePixmapX11 *pixmap); + virtual std::unique_ptr createSurfaceTextureWayland(SurfacePixmapWayland *pixmap); }; } // namespace KWin diff --git a/src/platformsupport/scenes/opengl/openglbackend.cpp b/src/platformsupport/scenes/opengl/openglbackend.cpp index 9eb7c1c747..fc33d71298 100644 --- a/src/platformsupport/scenes/opengl/openglbackend.cpp +++ b/src/platformsupport/scenes/opengl/openglbackend.cpp @@ -11,7 +11,6 @@ #include #include -#include "scene/surfaceitem.h" #include "utils/common.h" #include "workspace.h" @@ -62,21 +61,6 @@ std::shared_ptr OpenGLBackend::textureForOutput(Output *output) return {}; } -std::unique_ptr OpenGLBackend::createSurfaceTextureInternal(SurfacePixmapInternal *pixmap) -{ - return nullptr; -} - -std::unique_ptr OpenGLBackend::createSurfaceTextureX11(SurfacePixmapX11 *pixmap) -{ - return nullptr; -} - -std::unique_ptr OpenGLBackend::createSurfaceTextureWayland(SurfacePixmapWayland *pixmap) -{ - return nullptr; -} - bool OpenGLBackend::checkGraphicsReset() { const GLenum status = KWin::glGetGraphicsResetStatus(); diff --git a/src/platformsupport/scenes/opengl/openglbackend.h b/src/platformsupport/scenes/opengl/openglbackend.h index c74f6f49a6..f6b289eb62 100644 --- a/src/platformsupport/scenes/opengl/openglbackend.h +++ b/src/platformsupport/scenes/opengl/openglbackend.h @@ -18,11 +18,6 @@ namespace KWin { class Output; class OpenGLBackend; -class SurfaceItem; -class SurfacePixmapInternal; -class SurfacePixmapX11; -class SurfacePixmapWayland; -class SurfaceTexture; class GLTexture; /** @@ -51,10 +46,6 @@ public: CompositingType compositingType() const override final; bool checkGraphicsReset() override final; - virtual std::unique_ptr createSurfaceTextureInternal(SurfacePixmapInternal *pixmap); - virtual std::unique_ptr createSurfaceTextureX11(SurfacePixmapX11 *pixmap); - virtual std::unique_ptr createSurfaceTextureWayland(SurfacePixmapWayland *pixmap); - virtual bool makeCurrent() = 0; virtual void doneCurrent() = 0; diff --git a/src/platformsupport/scenes/qpainter/qpainterbackend.h b/src/platformsupport/scenes/qpainter/qpainterbackend.h index 99f0d5e6da..96c5d44b23 100644 --- a/src/platformsupport/scenes/qpainter/qpainterbackend.h +++ b/src/platformsupport/scenes/qpainter/qpainterbackend.h @@ -20,9 +20,6 @@ class QString; namespace KWin { -class SurfacePixmapInternal; -class SurfacePixmapWayland; -class SurfaceTexture; class Output; class KWIN_EXPORT QPainterBackend : public RenderBackend @@ -34,8 +31,8 @@ public: CompositingType compositingType() const override final; - std::unique_ptr createSurfaceTextureInternal(SurfacePixmapInternal *pixmap); - std::unique_ptr createSurfaceTextureWayland(SurfacePixmapWayland *pixmap); + std::unique_ptr createSurfaceTextureInternal(SurfacePixmapInternal *pixmap) override; + std::unique_ptr createSurfaceTextureWayland(SurfacePixmapWayland *pixmap) override; /** * @brief Whether the creation of the Backend failed. diff --git a/src/scene/scene.cpp b/src/scene/scene.cpp index eb11ad4bbd..984824befa 100644 --- a/src/scene/scene.cpp +++ b/src/scene/scene.cpp @@ -608,19 +608,4 @@ QVector Scene::openGLPlatformInterfaceExtensions() const return QVector{}; } -std::unique_ptr Scene::createSurfaceTextureInternal(SurfacePixmapInternal *pixmap) -{ - return nullptr; -} - -std::unique_ptr Scene::createSurfaceTextureX11(SurfacePixmapX11 *pixmap) -{ - return nullptr; -} - -std::unique_ptr Scene::createSurfaceTextureWayland(SurfacePixmapWayland *pixmap) -{ - return nullptr; -} - } // namespace diff --git a/src/scene/scene.h b/src/scene/scene.h index 618a5cb43c..edf939d9f2 100644 --- a/src/scene/scene.h +++ b/src/scene/scene.h @@ -40,10 +40,6 @@ class Scene; class Shadow; class ShadowItem; class SurfaceItem; -class SurfacePixmapInternal; -class SurfacePixmapWayland; -class SurfacePixmapX11; -class SurfaceTexture; class WindowItem; class SceneDelegate : public RenderLayerDelegate @@ -154,10 +150,6 @@ public: return {}; } - virtual std::unique_ptr createSurfaceTextureInternal(SurfacePixmapInternal *pixmap); - virtual std::unique_ptr createSurfaceTextureX11(SurfacePixmapX11 *pixmap); - virtual std::unique_ptr createSurfaceTextureWayland(SurfacePixmapWayland *pixmap); - ItemRenderer *renderer() const; Q_SIGNALS: diff --git a/src/scene/scene_opengl.cpp b/src/scene/scene_opengl.cpp index 9daa0db64a..0cc63678bb 100644 --- a/src/scene/scene_opengl.cpp +++ b/src/scene/scene_opengl.cpp @@ -19,7 +19,6 @@ #include "core/output.h" #include "decorations/decoratedclient.h" #include "scene/itemrenderer_opengl.h" -#include "scene/surfaceitem.h" #include "window.h" #include @@ -95,21 +94,6 @@ std::shared_ptr SceneOpenGL::textureForOutput(Output *output) const return m_backend->textureForOutput(output); } -std::unique_ptr SceneOpenGL::createSurfaceTextureInternal(SurfacePixmapInternal *pixmap) -{ - return m_backend->createSurfaceTextureInternal(pixmap); -} - -std::unique_ptr SceneOpenGL::createSurfaceTextureWayland(SurfacePixmapWayland *pixmap) -{ - return m_backend->createSurfaceTextureWayland(pixmap); -} - -std::unique_ptr SceneOpenGL::createSurfaceTextureX11(SurfacePixmapX11 *pixmap) -{ - return m_backend->createSurfaceTextureX11(pixmap); -} - //**************************************** // SceneOpenGL::Shadow //**************************************** diff --git a/src/scene/scene_opengl.h b/src/scene/scene_opengl.h index c6111c61f6..d0f7547303 100644 --- a/src/scene/scene_opengl.h +++ b/src/scene/scene_opengl.h @@ -36,9 +36,6 @@ public: bool supportsNativeFence() const override; DecorationRenderer *createDecorationRenderer(Decoration::DecoratedClientImpl *impl) override; bool animationsSupported() const override; - std::unique_ptr createSurfaceTextureInternal(SurfacePixmapInternal *pixmap) override; - std::unique_ptr createSurfaceTextureX11(SurfacePixmapX11 *pixmap) override; - std::unique_ptr createSurfaceTextureWayland(SurfacePixmapWayland *pixmap) override; OpenGLBackend *backend() const { diff --git a/src/scene/scene_qpainter.cpp b/src/scene/scene_qpainter.cpp index c7b5473c62..51cce283bb 100644 --- a/src/scene/scene_qpainter.cpp +++ b/src/scene/scene_qpainter.cpp @@ -10,7 +10,6 @@ // KWin #include "decorations/decoratedclient.h" #include "scene/itemrenderer_qpainter.h" -#include "scene/surfaceitem.h" #include "window.h" // Qt @@ -47,16 +46,6 @@ DecorationRenderer *SceneQPainter::createDecorationRenderer(Decoration::Decorate return new SceneQPainterDecorationRenderer(impl); } -std::unique_ptr SceneQPainter::createSurfaceTextureInternal(SurfacePixmapInternal *pixmap) -{ - return m_backend->createSurfaceTextureInternal(pixmap); -} - -std::unique_ptr SceneQPainter::createSurfaceTextureWayland(SurfacePixmapWayland *pixmap) -{ - return m_backend->createSurfaceTextureWayland(pixmap); -} - //**************************************** // QPainterShadow //**************************************** diff --git a/src/scene/scene_qpainter.h b/src/scene/scene_qpainter.h index f7ab1fc0f0..714c564a0a 100644 --- a/src/scene/scene_qpainter.h +++ b/src/scene/scene_qpainter.h @@ -27,8 +27,6 @@ public: Shadow *createShadow(Window *window) override; DecorationRenderer *createDecorationRenderer(Decoration::DecoratedClientImpl *impl) override; - std::unique_ptr createSurfaceTextureInternal(SurfacePixmapInternal *pixmap) override; - std::unique_ptr createSurfaceTextureWayland(SurfacePixmapWayland *pixmap) override; bool animationsSupported() const override { diff --git a/src/scene/surfaceitem_internal.cpp b/src/scene/surfaceitem_internal.cpp index f5207d0486..821d4a0e64 100644 --- a/src/scene/surfaceitem_internal.cpp +++ b/src/scene/surfaceitem_internal.cpp @@ -6,9 +6,9 @@ #include "scene/surfaceitem_internal.h" #include "composite.h" +#include "core/renderbackend.h" #include "deleted.h" #include "internalwindow.h" -#include "scene/scene.h" #include @@ -61,7 +61,7 @@ void SurfaceItemInternal::handleWindowClosed(Window *original, Deleted *deleted) } SurfacePixmapInternal::SurfacePixmapInternal(SurfaceItemInternal *item, QObject *parent) - : SurfacePixmap(Compositor::self()->scene()->createSurfaceTextureInternal(this), parent) + : SurfacePixmap(Compositor::self()->backend()->createSurfaceTextureInternal(this), parent) , m_item(item) { } diff --git a/src/scene/surfaceitem_wayland.cpp b/src/scene/surfaceitem_wayland.cpp index 6aa57da0a4..06a2ce8e62 100644 --- a/src/scene/surfaceitem_wayland.cpp +++ b/src/scene/surfaceitem_wayland.cpp @@ -6,8 +6,8 @@ #include "scene/surfaceitem_wayland.h" #include "composite.h" +#include "core/renderbackend.h" #include "deleted.h" -#include "scene/scene.h" #include "wayland/clientbuffer.h" #include "wayland/subcompositor_interface.h" #include "wayland/surface_interface.h" @@ -143,7 +143,7 @@ ContentType SurfaceItemWayland::contentType() const } SurfacePixmapWayland::SurfacePixmapWayland(SurfaceItemWayland *item, QObject *parent) - : SurfacePixmap(Compositor::self()->scene()->createSurfaceTextureWayland(this), parent) + : SurfacePixmap(Compositor::self()->backend()->createSurfaceTextureWayland(this), parent) , m_item(item) { } diff --git a/src/scene/surfaceitem_x11.cpp b/src/scene/surfaceitem_x11.cpp index b0e5048d0f..07483b95a6 100644 --- a/src/scene/surfaceitem_x11.cpp +++ b/src/scene/surfaceitem_x11.cpp @@ -6,8 +6,8 @@ #include "scene/surfaceitem_x11.h" #include "composite.h" +#include "core/renderbackend.h" #include "deleted.h" -#include "scene/scene.h" #include "x11syncmanager.h" namespace KWin @@ -183,7 +183,7 @@ std::unique_ptr SurfaceItemX11::createPixmap() } SurfacePixmapX11::SurfacePixmapX11(SurfaceItemX11 *item, QObject *parent) - : SurfacePixmap(Compositor::self()->scene()->createSurfaceTextureX11(this), parent) + : SurfacePixmap(Compositor::self()->backend()->createSurfaceTextureX11(this), parent) , m_item(item) { }