Adopt QuickAddons in plasma-framework
Removes the code that was moved to QuickAddons REVIEW: 120596
This commit is contained in:
parent
b65201b735
commit
7a4998046e
@ -44,7 +44,9 @@ target_link_libraries(corebindingsplugin
|
|||||||
KF5::Service #for kplugininfo.h
|
KF5::Service #for kplugininfo.h
|
||||||
KF5::WindowSystem
|
KF5::WindowSystem
|
||||||
KF5::Plasma
|
KF5::Plasma
|
||||||
KF5::PlasmaQuick)
|
KF5::PlasmaQuick
|
||||||
|
KF5::QuickAddons
|
||||||
|
)
|
||||||
|
|
||||||
if(HAVE_X11)
|
if(HAVE_X11)
|
||||||
target_link_libraries(corebindingsplugin ${X11_LIBRARIES} ${XCB_XCB_LIBRARY} )
|
target_link_libraries(corebindingsplugin ${X11_LIBRARIES} ${XCB_XCB_LIBRARY} )
|
||||||
|
@ -30,33 +30,15 @@
|
|||||||
#include <plasma/private/framesvg_p.h>
|
#include <plasma/private/framesvg_p.h>
|
||||||
#include <plasma/private/framesvg_helpers.h>
|
#include <plasma/private/framesvg_helpers.h>
|
||||||
|
|
||||||
#include "svgtexturenode.h"
|
#include <QuickAddons/ManagedTextureNode>
|
||||||
|
#include <QuickAddons/ImageTexturesCache>
|
||||||
|
|
||||||
#include <cmath> //floor()
|
#include <cmath> //floor()
|
||||||
|
|
||||||
namespace Plasma
|
namespace Plasma
|
||||||
{
|
{
|
||||||
|
|
||||||
typedef QHash<qint64, QHash<QWindow*, QWeakPointer<QSGTexture> > > TexturesCache;
|
Q_GLOBAL_STATIC(ImageTexturesCache, s_cache)
|
||||||
Q_GLOBAL_STATIC(TexturesCache, s_cache)
|
|
||||||
|
|
||||||
QSharedPointer<QSGTexture> loadTexture(QQuickWindow *window, const QImage &image)
|
|
||||||
{
|
|
||||||
qint64 id = image.cacheKey();
|
|
||||||
QSharedPointer<QSGTexture> texture = s_cache->value(id).value(window).toStrongRef();
|
|
||||||
if (!texture) {
|
|
||||||
auto cleanAndDelete = [window, id](QSGTexture* texture) {
|
|
||||||
QHash<QWindow*, QWeakPointer<QSGTexture> >& textures = (*s_cache)[id];
|
|
||||||
textures.remove(window);
|
|
||||||
if (textures.isEmpty())
|
|
||||||
s_cache->remove(id);
|
|
||||||
delete texture;
|
|
||||||
};
|
|
||||||
texture = QSharedPointer<QSGTexture>(window->createTextureFromImage(image), cleanAndDelete);
|
|
||||||
(*s_cache)[id][window] = texture.toWeakRef();
|
|
||||||
}
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
class FrameNode : public QSGNode
|
class FrameNode : public QSGNode
|
||||||
{
|
{
|
||||||
@ -92,7 +74,7 @@ private:
|
|||||||
int bottomHeight;
|
int bottomHeight;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FrameItemNode : public SVGTextureNode
|
class FrameItemNode : public ManagedTextureNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum FitMode {
|
enum FitMode {
|
||||||
@ -104,7 +86,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
FrameItemNode(FrameSvgItem* frameSvg, FrameSvg::EnabledBorders borders, FitMode fitMode, QSGNode* parent)
|
FrameItemNode(FrameSvgItem* frameSvg, FrameSvg::EnabledBorders borders, FitMode fitMode, QSGNode* parent)
|
||||||
: SVGTextureNode()
|
: ManagedTextureNode()
|
||||||
, m_frameSvg(frameSvg)
|
, m_frameSvg(frameSvg)
|
||||||
, m_border(borders)
|
, m_border(borders)
|
||||||
, m_lastParent(parent)
|
, m_lastParent(parent)
|
||||||
@ -139,7 +121,7 @@ public:
|
|||||||
|
|
||||||
void updateTexture(const QSize &size, const QString &elementId)
|
void updateTexture(const QSize &size, const QString &elementId)
|
||||||
{
|
{
|
||||||
setTexture(loadTexture(m_frameSvg->window(), m_frameSvg->frameSvg()->image(size, elementId)));
|
setTexture(s_cache->loadTexture(m_frameSvg->window(), m_frameSvg->frameSvg()->image(size, elementId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void reposition(const QRect& frameGeometry, QSize& fullSize)
|
void reposition(const QRect& frameGeometry, QSize& fullSize)
|
||||||
@ -460,10 +442,10 @@ QSGNode *FrameSvgItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaint
|
|||||||
m_sizeChanged = false;
|
m_sizeChanged = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
SVGTextureNode *textureNode = dynamic_cast<SVGTextureNode *>(oldNode);
|
ManagedTextureNode *textureNode = dynamic_cast<ManagedTextureNode *>(oldNode);
|
||||||
if (!textureNode) {
|
if (!textureNode) {
|
||||||
delete oldNode;
|
delete oldNode;
|
||||||
textureNode = new SVGTextureNode;
|
textureNode = new ManagedTextureNode;
|
||||||
textureNode->setFiltering(QSGTexture::Nearest);
|
textureNode->setFiltering(QSGTexture::Nearest);
|
||||||
m_textureChanged = true; //force updating the texture on our newly created node
|
m_textureChanged = true; //force updating the texture on our newly created node
|
||||||
oldNode = textureNode;
|
oldNode = textureNode;
|
||||||
@ -471,7 +453,7 @@ QSGNode *FrameSvgItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaint
|
|||||||
|
|
||||||
if ((m_textureChanged || m_sizeChanged) || textureNode->texture()->textureSize() != m_frameSvg->size()) {
|
if ((m_textureChanged || m_sizeChanged) || textureNode->texture()->textureSize() != m_frameSvg->size()) {
|
||||||
QImage image = m_frameSvg->framePixmap().toImage();
|
QImage image = m_frameSvg->framePixmap().toImage();
|
||||||
textureNode->setTexture(loadTexture(window(), image));
|
textureNode->setTexture(s_cache->loadTexture(window(), image));
|
||||||
textureNode->setRect(0, 0, width(), height());
|
textureNode->setRect(0, 0, width(), height());
|
||||||
|
|
||||||
m_textureChanged = false;
|
m_textureChanged = false;
|
||||||
|
@ -31,7 +31,6 @@ namespace Plasma
|
|||||||
{
|
{
|
||||||
|
|
||||||
class FrameSvg;
|
class FrameSvg;
|
||||||
class SVGTextureNode;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class FrameSvgItemMargins
|
* @class FrameSvgItemMargins
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
#include <kiconeffect.h>
|
#include <kiconeffect.h>
|
||||||
|
|
||||||
#include "fadingnode_p.h"
|
#include "fadingnode_p.h"
|
||||||
#include "svgtexturenode.h"
|
#include <QuickAddons/ManagedTextureNode>
|
||||||
#include "units.h"
|
#include "units.h"
|
||||||
|
|
||||||
IconItem::IconItem(QQuickItem *parent)
|
IconItem::IconItem(QQuickItem *parent)
|
||||||
@ -249,11 +249,11 @@ QSGNode* IconItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *update
|
|||||||
|
|
||||||
return animatingNode;
|
return animatingNode;
|
||||||
} else {
|
} else {
|
||||||
Plasma::SVGTextureNode *textureNode = dynamic_cast<Plasma::SVGTextureNode*>(oldNode);
|
ManagedTextureNode *textureNode = dynamic_cast<ManagedTextureNode*>(oldNode);
|
||||||
|
|
||||||
if (!textureNode || m_textureChanged) {
|
if (!textureNode || m_textureChanged) {
|
||||||
delete oldNode;
|
delete oldNode;
|
||||||
textureNode = new Plasma::SVGTextureNode;
|
textureNode = new ManagedTextureNode;
|
||||||
textureNode->setTexture(QSharedPointer<QSGTexture>(window()->createTextureFromImage(m_iconPixmap.toImage())));
|
textureNode->setTexture(QSharedPointer<QSGTexture>(window()->createTextureFromImage(m_iconPixmap.toImage())));
|
||||||
m_sizeChanged = true;
|
m_sizeChanged = true;
|
||||||
m_textureChanged = false;
|
m_textureChanged = false;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "plasma/svg.h"
|
#include "plasma/svg.h"
|
||||||
|
|
||||||
#include "svgtexturenode.h"
|
#include <QuickAddons/ManagedTextureNode>
|
||||||
|
|
||||||
#include <cmath> //floor()
|
#include <cmath> //floor()
|
||||||
|
|
||||||
@ -144,9 +144,9 @@ QSGNode *SvgItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updateP
|
|||||||
return Q_NULLPTR;
|
return Q_NULLPTR;
|
||||||
}
|
}
|
||||||
|
|
||||||
SVGTextureNode *textureNode = static_cast<SVGTextureNode *>(oldNode);
|
ManagedTextureNode *textureNode = static_cast<ManagedTextureNode *>(oldNode);
|
||||||
if (!textureNode) {
|
if (!textureNode) {
|
||||||
textureNode = new SVGTextureNode;
|
textureNode = new ManagedTextureNode;
|
||||||
textureNode->setFiltering(QSGTexture::Linear);
|
textureNode->setFiltering(QSGTexture::Linear);
|
||||||
m_textureChanged = true;
|
m_textureChanged = true;
|
||||||
}
|
}
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
/***************************************************************************
|
|
||||||
* Copyright 2014 David Edmundson <davidedmundson@kde.org> *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, write to the *
|
|
||||||
* Free Software Foundation, Inc., *
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef SVGTEXTURENODE_H
|
|
||||||
#define SVGTEXTURENODE_H
|
|
||||||
|
|
||||||
#include <QSGSimpleTextureNode>
|
|
||||||
|
|
||||||
namespace Plasma
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class wraps QSGSimpleTextureNode
|
|
||||||
* and manages the lifespan on the texture
|
|
||||||
*/
|
|
||||||
|
|
||||||
class SVGTextureNode : public QSGSimpleTextureNode
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SVGTextureNode() {}
|
|
||||||
/**
|
|
||||||
* Set the current texture
|
|
||||||
* the object takes ownership of the texture
|
|
||||||
*/
|
|
||||||
void setTexture(QSharedPointer<QSGTexture> texture)
|
|
||||||
{
|
|
||||||
m_texture = texture;
|
|
||||||
QSGSimpleTextureNode::setTexture(texture.data());
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
QSharedPointer<QSGTexture> m_texture;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif // SVGTextureNode
|
|
@ -49,6 +49,7 @@ target_link_libraries(KF5PlasmaQuick
|
|||||||
KF5::CoreAddons
|
KF5::CoreAddons
|
||||||
KF5::XmlGui
|
KF5::XmlGui
|
||||||
KF5::Declarative
|
KF5::Declarative
|
||||||
|
KF5::QuickAddons
|
||||||
)
|
)
|
||||||
|
|
||||||
if(HAVE_X11)
|
if(HAVE_X11)
|
||||||
|
Loading…
Reference in New Issue
Block a user