summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick3d/imports/render/qt3dquick3drenderplugin.cpp2
-rw-r--r--src/render/lights/qabstractlight.cpp8
-rw-r--r--src/render/lights/qabstractlight.h3
-rw-r--r--src/render/lights/qabstractlight_p.h2
-rw-r--r--tests/auto/render/qabstractlight/tst_qabstractlight.cpp19
5 files changed, 19 insertions, 15 deletions
diff --git a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
index 20cad743f..3d0324afd 100644
--- a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
+++ b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
@@ -209,7 +209,7 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri)
qmlRegisterType<Qt3DRender::QLayerFilter>(uri, 2, 0, "LayerFilter");
// Lights
- qmlRegisterType<Qt3DRender::QAbstractLight>(uri, 2, 0, "Light");
+ qmlRegisterUncreatableType<Qt3DRender::QAbstractLight>(uri, 2, 0, "Light", QStringLiteral("Light is an abstract base class"));
qmlRegisterType<Qt3DRender::QPointLight>(uri, 2, 0, "PointLight");
qmlRegisterType<Qt3DRender::QDirectionalLight>(uri, 2, 0, "DirectionalLight");
qmlRegisterType<Qt3DRender::QSpotLight>(uri, 2, 0, "SpotLight");
diff --git a/src/render/lights/qabstractlight.cpp b/src/render/lights/qabstractlight.cpp
index 203b99888..87aa6a633 100644
--- a/src/render/lights/qabstractlight.cpp
+++ b/src/render/lights/qabstractlight.cpp
@@ -75,14 +75,6 @@ void QAbstractLight::copy(const QNode *ref)
\inmodule Qt3DRender
*/
-/*!
- * Constructs a new QAbstractLight with the given \a parent.
- */
-QAbstractLight::QAbstractLight(Qt3DCore::QNode *parent) :
- QShaderData(*new QAbstractLightPrivate(PointLight), parent)
-{
-}
-
/*! \internal */
QAbstractLight::QAbstractLight(QAbstractLightPrivate &dd, QNode *parent)
: QShaderData(dd, parent)
diff --git a/src/render/lights/qabstractlight.h b/src/render/lights/qabstractlight.h
index cf456f057..c94ce0af7 100644
--- a/src/render/lights/qabstractlight.h
+++ b/src/render/lights/qabstractlight.h
@@ -67,8 +67,6 @@ public :
};
Q_ENUM(Type)
- explicit QAbstractLight(Qt3DCore::QNode *parent = Q_NULLPTR);
-
Type type() const;
QColor color() const;
float intensity() const;
@@ -87,7 +85,6 @@ Q_SIGNALS:
private:
Q_DECLARE_PRIVATE(QAbstractLight)
- QT3D_CLONEABLE(QAbstractLight)
};
} // namespace Qt3DRender
diff --git a/src/render/lights/qabstractlight_p.h b/src/render/lights/qabstractlight_p.h
index 3f3b4cc0d..d605951ac 100644
--- a/src/render/lights/qabstractlight_p.h
+++ b/src/render/lights/qabstractlight_p.h
@@ -59,7 +59,7 @@ namespace Qt3DRender {
class QAbstractLight;
-class QAbstractLightPrivate : public QShaderDataPrivate
+class Q_AUTOTEST_EXPORT QAbstractLightPrivate : public QShaderDataPrivate
{
public:
QAbstractLightPrivate(QAbstractLight::Type type);
diff --git a/tests/auto/render/qabstractlight/tst_qabstractlight.cpp b/tests/auto/render/qabstractlight/tst_qabstractlight.cpp
index 552a15a48..d8452a461 100644
--- a/tests/auto/render/qabstractlight/tst_qabstractlight.cpp
+++ b/tests/auto/render/qabstractlight/tst_qabstractlight.cpp
@@ -31,12 +31,27 @@
#include <Qt3DCore/private/qscene_p.h>
#include <Qt3DRender/qabstractlight.h>
+#include <Qt3DRender/private/qabstractlight_p.h>
#include <Qt3DRender/qpointlight.h>
#include <Qt3DRender/qdirectionallight.h>
#include <Qt3DRender/qspotlight.h>
#include "testpostmanarbiter.h"
+class DummyLight : public Qt3DRender::QAbstractLight
+{
+ Q_OBJECT
+
+public:
+ explicit DummyLight(Qt3DCore::QNode *parent = Q_NULLPTR)
+ : QAbstractLight(*new Qt3DRender::QAbstractLightPrivate(QAbstractLight::PointLight), parent)
+ {}
+
+private:
+ QT3D_CLONEABLE(DummyLight)
+};
+
+
// We need to call QNode::clone which is protected
// So we sublcass QNode instead of QObject
class tst_QAbstractLight: public Qt3DCore::QNode
@@ -52,7 +67,7 @@ private Q_SLOTS:
void checkLightCloning()
{
- Qt3DRender::QAbstractLight light;
+ DummyLight light;
light.setColor(Qt::red);
light.setIntensity(0.5f);
@@ -118,7 +133,7 @@ private Q_SLOTS:
void checkLightPropertyUpdates()
{
- QScopedPointer<Qt3DRender::QAbstractLight> light(new Qt3DRender::QAbstractLight);
+ QScopedPointer<Qt3DRender::QAbstractLight> light(new DummyLight);
TestArbiter lightArbiter(light.data());
light->setColor(Qt::red);