aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--softwarecontext/renderingvisitor.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/softwarecontext/renderingvisitor.cpp b/softwarecontext/renderingvisitor.cpp
index f90b23850e..247c4b7c3b 100644
--- a/softwarecontext/renderingvisitor.cpp
+++ b/softwarecontext/renderingvisitor.cpp
@@ -25,6 +25,8 @@
#include "ninepatchnode.h"
#include "painternode.h"
+#include <QtQuick/QSGSimpleRectNode>
+
RenderingVisitor::RenderingVisitor(QPainter *painter)
: painter(painter)
{
@@ -57,13 +59,22 @@ void RenderingVisitor::endVisit(QSGClipNode *)
bool RenderingVisitor::visit(QSGGeometryNode *node)
{
- Q_UNREACHABLE();
+ //Check for QSGSimpleRect
+ QSGSimpleRectNode *rectNode = 0;
+ rectNode = dynamic_cast<QSGSimpleRectNode *>(node);
+ if (rectNode) {
+ if (!rectNode->material()->flags() & QSGMaterial::Blending)
+ painter->setCompositionMode(QPainter::CompositionMode_Source);
+ painter->fillRect(rectNode->rect(), rectNode->color());
+ painter->setCompositionMode(QPainter::CompositionMode_SourceOver);
+ }
+
return true;
}
void RenderingVisitor::endVisit(QSGGeometryNode *node)
{
- Q_UNREACHABLE();
+
}
bool RenderingVisitor::visit(QSGOpacityNode *node)