From 6d26a04c43c17447c9f23f2e463a1e8706d65a07 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Wed, 13 Apr 2011 23:11:04 +0200 Subject: [PATCH] Compile after scene graph changes --- .../compositor_api/waylandsurfaceitem.cpp | 98 ++++++---------------- .../compositor_api/waylandsurfaceitem.h | 16 ++-- 2 files changed, 36 insertions(+), 78 deletions(-) diff --git a/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp b/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp index d0c41d0..c74ad69 100644 --- a/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp +++ b/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp @@ -41,85 +41,40 @@ #include "waylandsurfaceitem.h" #include "waylandsurface.h" -#include -#include +#include #include -#include -#include -#include #include -class WaylandSurfaceTextureProvider : public QSGTextureProvider -{ - Q_OBJECT -public: - WaylandSurfaceTextureProvider(WaylandSurface *surface); - ~WaylandSurfaceTextureProvider(); - - WrapMode horizontalWrapMode() const { return ClampToEdge; } - WrapMode verticalWrapMode() const { return ClampToEdge; } - Filtering filtering() const { return m_filtering; } - Filtering mipmapFiltering() const { return None; } - - void setFiltering(Filtering filtering) { m_filtering = filtering; } - - QSGTextureRef texture() { - return m_textureRef; - } - -private slots: - void surfaceDamaged(const QRect &rect); - -private: - WaylandSurface *m_surface; - - QSGPlainTexture *m_texture; - QSGTextureRef m_textureRef; - - Filtering m_filtering; -}; +#include -WaylandSurfaceTextureProvider::WaylandSurfaceTextureProvider(WaylandSurface *surface) - : m_surface(surface) - , m_texture(new QSGPlainTexture) - , m_textureRef(m_texture) - , m_filtering(Linear) +void WaylandSurfaceItem::surfaceDamaged(const QRect &) { - connect(surface, SIGNAL(damaged(const QRect &)), this, SLOT(surfaceDamaged(const QRect &))); -} + if (m_texture) + delete m_texture; -WaylandSurfaceTextureProvider::~WaylandSurfaceTextureProvider() -{ -} - -void WaylandSurfaceTextureProvider::surfaceDamaged(const QRect &) -{ if (m_surface->type() == WaylandSurface::Texture) { - m_texture->setTextureId(m_surface->texture()); - m_texture->setHasAlphaChannel(false); - m_texture->setTextureSize(m_surface->geometry().size()); + m_texture = canvas()->sceneGraphEngine()->createTextureFromId(m_surface->texture(), + m_surface->geometry().size(), + QSGEngine::TextureOwnsGLTexture); } else { - m_texture->setImage(m_surface->image()); + m_texture = canvas()->sceneGraphEngine()->createTextureFromImage(m_surface->image()); } - m_texture->setOwnsTexture(true); - m_texture->setHasMipmaps(false); - emit textureChanged(); } WaylandSurfaceItem::WaylandSurfaceItem(QSGItem *parent) : QSGItem(parent) , m_surface(0) - , m_textureProvider(0) + , m_texture(0) { } WaylandSurfaceItem::WaylandSurfaceItem(WaylandSurface *surface, QSGItem *parent) : QSGItem(parent) , m_surface(0) - , m_textureProvider(0) + , m_texture(0) { init(surface); } @@ -128,8 +83,8 @@ void WaylandSurfaceItem::init(WaylandSurface *surface) { if (!surface) return; + m_surface = surface; - m_textureProvider = new WaylandSurfaceTextureProvider(surface); setWidth(surface->geometry().width()); setHeight(surface->geometry().height()); @@ -139,12 +94,13 @@ void WaylandSurfaceItem::init(WaylandSurface *surface) setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton); connect(surface, SIGNAL(mapped(const QRect &)), this, SLOT(surfaceMapped(const QRect &))); connect(surface, SIGNAL(destroyed(QObject *)), this, SLOT(surfaceDestroyed(QObject *))); - connect(m_textureProvider, SIGNAL(textureChanged()), this, SLOT(update())); + connect(this, SIGNAL(textureChanged()), this, SLOT(update())); + connect(this, SIGNAL(damaged(const QRect &)), this, SLOT(surfaceDamaged(const QRect &))); } WaylandSurfaceItem::~WaylandSurfaceItem() { - delete m_textureProvider; + delete m_texture; } void WaylandSurfaceItem::setSurface(WaylandSurface *surface) @@ -152,9 +108,9 @@ void WaylandSurfaceItem::setSurface(WaylandSurface *surface) init(surface); } -QSGTextureProvider *WaylandSurfaceItem::textureProvider() const +QSGTexture *WaylandSurfaceItem::texture() const { - return m_textureProvider; + return m_texture; } void WaylandSurfaceItem::mousePressEvent(QGraphicsSceneMouseEvent *event) @@ -213,21 +169,17 @@ void WaylandSurfaceItem::surfaceDestroyed(QObject *) QSGNode *WaylandSurfaceItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { - QSGImageNode *node = static_cast(oldNode); + QSGSimpleTextureNode *node = static_cast(oldNode); if (!node) { - node = QSGContext::current->createImageNode(); - node->setFlag(QSGNode::UsePreprocess, false); - node->setTexture(m_textureProvider); + node = new QSGSimpleTextureNode(); + node->setTexture(m_texture); + node->setSourceRect(QRectF(0, 0, 1, 1)); } - m_textureProvider->setFiltering(QSGItemPrivate::get(this)->smooth - ? QSGTextureProvider::Linear : QSGTextureProvider::Nearest); - - node->setTargetRect(QRectF(0, 0, width(), height())); - node->setSourceRect(QRectF(0, 0, 1, 1)); - node->update(); + node->setRect(QRectF(0, 0, width(), height())); + node->setFiltering(QSGItemPrivate::get(this)->smooth + ? QSGTexture::Linear + : QSGTexture::Nearest); return node; } - -#include "waylandsurfaceitem.moc" diff --git a/src/qt-compositor/compositor_api/waylandsurfaceitem.h b/src/qt-compositor/compositor_api/waylandsurfaceitem.h index 357538d..0bb4b29 100644 --- a/src/qt-compositor/compositor_api/waylandsurfaceitem.h +++ b/src/qt-compositor/compositor_api/waylandsurfaceitem.h @@ -42,16 +42,17 @@ #define WAYLANDSURFACEITEM_H #include +#include + #include class WaylandSurface; -class WaylandSurfaceTextureProvider; Q_DECLARE_METATYPE(WaylandSurface*) -class WaylandSurfaceItem : public QSGItem, public QSGTextureProviderInterface +class WaylandSurfaceItem : public QSGItem, public QSGTextureProvider { Q_OBJECT - Q_INTERFACES(QSGTextureProviderInterface) + Q_INTERFACES(QSGTextureProvider) Q_PROPERTY(WaylandSurface* surface READ surface WRITE setSurface) public: @@ -62,7 +63,8 @@ public: void setSurface(WaylandSurface *surface); WaylandSurface *surface() const {return m_surface; } - QSGTextureProvider *textureProvider() const; + QSGTexture *texture() const; + const char *textureChangedSignal() const { return SIGNAL(textureChanged()); } protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); @@ -78,6 +80,10 @@ public slots: private slots: void surfaceMapped(const QRect &rect); void surfaceDestroyed(QObject *object); + void surfaceDamaged(const QRect &); + +signals: + void textureChanged(); protected: QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); @@ -87,7 +93,7 @@ private: void init(WaylandSurface *); WaylandSurface *m_surface; - WaylandSurfaceTextureProvider *m_textureProvider; + QSGTexture *m_texture; }; #endif -- 2.7.4