summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-01-18 07:37:47 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-01-18 10:54:54 +0000
commita08a9b922dd626fc554542535b5b86c3d97d2d7c (patch)
tree7e6e4947101cf12c4037c4e65788df777620cff5 /src
parent465bbed1085c57d1209aff33ce1fbd693b4e490f (diff)
Add window convenience property to QRenderSurfaceSelector
Behind the scenes this just updates the QSurfaceProperty which is all we care about on the backend. This is for QML since QSurface is not a QObject subclass (even though all sub classes of QSurface are via MI, grrrrr). Change-Id: I248eb59a92ed3bc99361ff23a0cd20d3c191769b Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/render/framegraph/qrendersurfaceselector.cpp22
-rw-r--r--src/render/framegraph/qrendersurfaceselector.h8
-rw-r--r--src/render/framegraph/qrendersurfaceselector_p.h1
3 files changed, 30 insertions, 1 deletions
diff --git a/src/render/framegraph/qrendersurfaceselector.cpp b/src/render/framegraph/qrendersurfaceselector.cpp
index 8ff55d152..e218672e8 100644
--- a/src/render/framegraph/qrendersurfaceselector.cpp
+++ b/src/render/framegraph/qrendersurfaceselector.cpp
@@ -70,6 +70,14 @@ QSurface *QRenderSurfaceSelector::surface() const
return d->m_surface;
}
+QWindow *QRenderSurfaceSelector::window() const
+{
+ Q_D(const QRenderSurfaceSelector);
+ if (d->m_surface->surfaceClass() == QSurface::Window)
+ return static_cast<QWindow *>(d->m_surface);
+ return Q_NULLPTR;
+}
+
void QRenderSurfaceSelector::setSurface(QSurface *surface)
{
Q_D(QRenderSurfaceSelector);
@@ -80,6 +88,20 @@ void QRenderSurfaceSelector::setSurface(QSurface *surface)
emit surfaceChanged(surface);
}
+void QRenderSurfaceSelector::setWindow(QWindow *window)
+{
+ Q_D(QRenderSurfaceSelector);
+ QWindow *currentWindow = Q_NULLPTR;
+ if (d->m_surface && d->m_surface->surfaceClass() == QSurface::Window)
+ currentWindow = static_cast<QWindow *>(d->m_surface);
+ if (currentWindow == window)
+ return;
+
+ d->m_surface = window;
+ emit windowChanged(window);
+ emit surfaceChanged(d->m_surface);
+}
+
void QRenderSurfaceSelector::copy(const QNode *ref)
{
QFrameGraphNode::copy(ref);
diff --git a/src/render/framegraph/qrendersurfaceselector.h b/src/render/framegraph/qrendersurfaceselector.h
index 1492356b3..f722f8044 100644
--- a/src/render/framegraph/qrendersurfaceselector.h
+++ b/src/render/framegraph/qrendersurfaceselector.h
@@ -43,6 +43,7 @@
QT_BEGIN_NAMESPACE
class QSurface;
+class QWindow;
namespace Qt3DRender {
@@ -52,17 +53,22 @@ class QT3DRENDERSHARED_EXPORT QRenderSurfaceSelector : public Qt3DRender::QFrame
{
Q_OBJECT
Q_PROPERTY(QSurface *surface READ surface WRITE setSurface NOTIFY surfaceChanged)
+ Q_PROPERTY(QWindow *window READ window WRITE setWindow NOTIFY windowChanged)
+
public:
explicit QRenderSurfaceSelector(Qt3DCore::QNode *parent = 0);
~QRenderSurfaceSelector();
QSurface *surface() const;
+ QWindow *window() const;
public Q_SLOTS:
void setSurface(QSurface *surface);
+ void setWindow(QWindow *window);
Q_SIGNALS:
- void surfaceChanged(QSurface* surface);
+ void surfaceChanged(QSurface *surface);
+ void windowChanged(QWindow *window);
protected:
Q_DECLARE_PRIVATE(QRenderSurfaceSelector)
diff --git a/src/render/framegraph/qrendersurfaceselector_p.h b/src/render/framegraph/qrendersurfaceselector_p.h
index a3ee04037..aae265359 100644
--- a/src/render/framegraph/qrendersurfaceselector_p.h
+++ b/src/render/framegraph/qrendersurfaceselector_p.h
@@ -50,6 +50,7 @@
#include <Qt3DRender/private/qframegraphnode_p.h>
#include <QtGui/qsurface.h>
+#include <QtGui/qwindow.h>
QT_BEGIN_NAMESPACE