diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/render/framegraph/qrendersurfaceselector.cpp | 22 | ||||
-rw-r--r-- | src/render/framegraph/qrendersurfaceselector.h | 8 | ||||
-rw-r--r-- | src/render/framegraph/qrendersurfaceselector_p.h | 1 |
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 |