summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
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