diff options
Diffstat (limited to 'src/quick/items/context2d')
-rw-r--r-- | src/quick/items/context2d/qquickcanvascontext_p.h | 3 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcanvasitem.cpp | 10 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcanvasitem_p.h | 6 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2d.cpp | 11 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2d_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2dtexture.cpp | 13 |
6 files changed, 21 insertions, 24 deletions
diff --git a/src/quick/items/context2d/qquickcanvascontext_p.h b/src/quick/items/context2d/qquickcanvascontext_p.h index 95100d2912..3872a2ac74 100644 --- a/src/quick/items/context2d/qquickcanvascontext_p.h +++ b/src/quick/items/context2d/qquickcanvascontext_p.h @@ -56,7 +56,7 @@ QT_REQUIRE_CONFIG(quick_canvas); #include <QtQuick/qquickitem.h> -#include <private/qv8engine_p.h> +#include <QtQml/private/qv4value_p.h> QT_BEGIN_NAMESPACE @@ -80,6 +80,7 @@ public: virtual void prepare(const QSize& canvasSize, const QSize& tileSize, const QRect& canvasWindow, const QRect& dirtyRect, bool smooth, bool antialiasing); virtual void flush(); + virtual QV4::ExecutionEngine *v4Engine() const = 0; virtual void setV4Engine(QV4::ExecutionEngine *engine) = 0; virtual QV4::ReturnedValue v4value() const = 0; diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp index 3462b0dbac..b8e6d58af4 100644 --- a/src/quick/items/context2d/qquickcanvasitem.cpp +++ b/src/quick/items/context2d/qquickcanvasitem.cpp @@ -378,13 +378,10 @@ void QQuickCanvasItem::setContextType(const QString &contextType) this property will contain the current drawing context, otherwise null. */ -QQmlV4Handle QQuickCanvasItem::context() const +QJSValue QQuickCanvasItem::context() const { Q_D(const QQuickCanvasItem); - if (d->context) - return QQmlV4Handle(d->context->v4value()); - - return QQmlV4Handle(QV4::Encode::null()); + return d->context ? QJSValue(d->context->v4Engine(), d->context->v4value()) : QJSValue(); } /*! @@ -772,7 +769,8 @@ QSGNode *QQuickCanvasItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData QSGInternalImageNode *node = static_cast<QSGInternalImageNode *>(oldNode); if (!node) { - node = QQuickWindowPrivate::get(window())->context->sceneGraphContext()->createInternalImageNode(); + QSGRenderContext *rc = QQuickWindowPrivate::get(window())->context; + node = rc->sceneGraphContext()->createInternalImageNode(rc); d->node = node; } diff --git a/src/quick/items/context2d/qquickcanvasitem_p.h b/src/quick/items/context2d/qquickcanvasitem_p.h index 7dc981a6eb..cd2977429b 100644 --- a/src/quick/items/context2d/qquickcanvasitem_p.h +++ b/src/quick/items/context2d/qquickcanvasitem_p.h @@ -56,9 +56,9 @@ QT_REQUIRE_CONFIG(quick_canvas); #include <QtQuick/qquickitem.h> -#include <private/qv8engine_p.h> #include <private/qqmlrefcount_p.h> #include <QtCore/QThread> +#include <QtCore/qmutex.h> #include <QtGui/QImage> QT_BEGIN_NAMESPACE @@ -93,7 +93,7 @@ class QQuickCanvasItem : public QQuickItem Q_PROPERTY(bool available READ isAvailable NOTIFY availableChanged) Q_PROPERTY(QString contextType READ contextType WRITE setContextType NOTIFY contextTypeChanged) - Q_PROPERTY(QQmlV4Handle context READ context NOTIFY contextChanged) + Q_PROPERTY(QJSValue context READ context NOTIFY contextChanged) Q_PROPERTY(QSizeF canvasSize READ canvasSize WRITE setCanvasSize NOTIFY canvasSizeChanged) Q_PROPERTY(QSize tileSize READ tileSize WRITE setTileSize NOTIFY tileSizeChanged) Q_PROPERTY(QRectF canvasWindow READ canvasWindow WRITE setCanvasWindow NOTIFY canvasWindowChanged) @@ -122,7 +122,7 @@ public: QString contextType() const; void setContextType(const QString &contextType); - QQmlV4Handle context() const; + QJSValue context() const; QSizeF canvasSize() const; void setCanvasSize(const QSizeF &); diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index 7cd222d3c1..54cda72a36 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -56,7 +56,6 @@ #include <private/qquickimage_p_p.h> #include <qqmlinfo.h> -#include <private/qv8engine_p.h> #include <qqmlengine.h> #include <private/qv4domerrors_p.h> @@ -474,7 +473,7 @@ static QFont qt_font_from_string(const QString& fontString, const QFont ¤t return newFont; } -class QQuickContext2DEngineData : public QV8Engine::Deletable +class QQuickContext2DEngineData : public QV4::ExecutionEngine::Deletable { public: QQuickContext2DEngineData(QV4::ExecutionEngine *engine); @@ -4324,7 +4323,8 @@ void QQuickContext2D::init(QQuickCanvasItem *canvasItem, const QVariantMap &args m_renderTarget = QQuickCanvasItem::Image; } - // Disable Framebuffer Object based rendering when not running with OpenGL + // Disable Framebuffer Object based rendering when not running with OpenGL. + // Same goes for the RHI based code path (regardless of the backend in use). if (m_renderTarget == QQuickCanvasItem::FramebufferObject) { QSGRendererInterface *rif = canvasItem->window()->rendererInterface(); if (rif && rif->graphicsApi() != QSGRendererInterface::OpenGL) @@ -4587,6 +4587,11 @@ void QQuickContext2D::reset() m_buffer->clearRect(QRectF(0, 0, m_canvas->width(), m_canvas->height())); } +QV4::ExecutionEngine *QQuickContext2D::v4Engine() const +{ + return m_v4engine; +} + void QQuickContext2D::setV4Engine(QV4::ExecutionEngine *engine) { if (m_v4engine != engine) { diff --git a/src/quick/items/context2d/qquickcontext2d_p.h b/src/quick/items/context2d/qquickcontext2d_p.h index 1ece6796f3..b5626dec0c 100644 --- a/src/quick/items/context2d/qquickcontext2d_p.h +++ b/src/quick/items/context2d/qquickcontext2d_p.h @@ -65,7 +65,6 @@ QT_REQUIRE_CONFIG(quick_canvas); #include <QtCore/qstring.h> #include <QtCore/qstack.h> #include <QtCore/qqueue.h> -#include <private/qv8engine_p.h> #include <QtCore/QWaitCondition> #include <private/qv4value_p.h> @@ -199,6 +198,7 @@ public: QImage toImage(const QRectF& bounds) override; QV4::ReturnedValue v4value() const override; + QV4::ExecutionEngine *v4Engine() const override; void setV4Engine(QV4::ExecutionEngine *eng) override; QQuickCanvasItem* canvas() const { return m_canvas; } diff --git a/src/quick/items/context2d/qquickcontext2dtexture.cpp b/src/quick/items/context2d/qquickcontext2dtexture.cpp index 69ff3b3852..0ebd1a66c9 100644 --- a/src/quick/items/context2d/qquickcontext2dtexture.cpp +++ b/src/quick/items/context2d/qquickcontext2dtexture.cpp @@ -41,7 +41,7 @@ #include "qquickcontext2dtile_p.h" #include "qquickcanvasitem_p.h" #include <private/qquickitem_p.h> -#include <QtQuick/private/qsgtexture_p.h> +#include <QtQuick/private/qsgplaintexture_p.h> #include "qquickcontext2dcommandbuffer_p.h" #include <QOpenGLPaintDevice> #if QT_CONFIG(opengl) @@ -238,15 +238,8 @@ void QQuickContext2DTexture::paintWithoutTiles(QQuickContext2DCommandBuffer *ccb QPainter p; p.begin(device); - if (m_antialiasing) - p.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing | QPainter::TextAntialiasing, true); - else - p.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing | QPainter::TextAntialiasing, false); - - if (m_smooth) - p.setRenderHint(QPainter::SmoothPixmapTransform, true); - else - p.setRenderHint(QPainter::SmoothPixmapTransform, false); + p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing, m_antialiasing); + p.setRenderHint(QPainter::SmoothPixmapTransform, m_smooth); p.setCompositionMode(QPainter::CompositionMode_SourceOver); |