From def5901955e8b4cfcb9e2cd83c7dcf9ed0508a0a Mon Sep 17 00:00:00 2001 From: Morten Sorvig Date: Wed, 22 Jun 2011 13:33:27 +0200 Subject: [PATCH] Reintroduce QWindow::SurfaceType On Cocoa it makes sense to distinguish between the two window types. Reviewed-by: Samuel --- examples/opengl/hellowindow/hellowindow.cpp | 1 + src/gui/kernel/qwindow.cpp | 12 ++++++++++++ src/gui/kernel/qwindow.h | 5 +++++ src/gui/kernel/qwindow_p.h | 2 ++ src/opengl/qgl_qpa.cpp | 2 ++ 5 files changed, 22 insertions(+) diff --git a/examples/opengl/hellowindow/hellowindow.cpp b/examples/opengl/hellowindow/hellowindow.cpp index afdf08026af..9575d3e3c7c 100644 --- a/examples/opengl/hellowindow/hellowindow.cpp +++ b/examples/opengl/hellowindow/hellowindow.cpp @@ -24,6 +24,7 @@ HelloWindow::HelloWindow(Renderer *renderer) : m_colorIndex(0) , m_renderer(renderer) { + setSurfaceType(QWindow::OpenGLSurface); setWindowTitle(QLatin1String("Hello Window")); setFormat(renderer->format()); diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index d060adf89eb..7fa93168789 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -72,6 +72,18 @@ QWindow::~QWindow() destroy(); } +void QWindow::setSurfaceType(SurfaceType surfaceType) +{ + Q_D(QWindow); + d->surfaceType = surfaceType; +} + +QWindow::SurfaceType QWindow::surfaceType() const +{ + Q_D(const QWindow); + return d->surfaceType; +} + void QWindow::setVisible(bool visible) { Q_D(QWindow); diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index 20b6074274c..67330e5291f 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -100,9 +100,14 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle) public: + enum SurfaceType { RasterSurface, OpenGLSurface }; + QWindow(QWindow *parent = 0); virtual ~QWindow(); + void setSurfaceType(SurfaceType surfaceType); + SurfaceType surfaceType() const; + void setVisible(bool visible); bool visible() const; diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index a8b118319d3..cca20bc30a7 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -59,6 +59,7 @@ class Q_GUI_EXPORT QWindowPrivate : public QObjectPrivate public: QWindowPrivate() : QObjectPrivate() + , surfaceType(QWindow::RasterSurface) , windowFlags(Qt::Window) , parentWindow(0) , platformWindow(0) @@ -75,6 +76,7 @@ public: { } + QWindow::SurfaceType surfaceType; Qt::WindowFlags windowFlags; QWindow *parentWindow; QPlatformWindow *platformWindow; diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp index 661f120601e..7a4fb2c1a7f 100644 --- a/src/opengl/qgl_qpa.cpp +++ b/src/opengl/qgl_qpa.cpp @@ -143,6 +143,7 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) winFormat.setAlphaBufferSize(qMax(winFormat.alphaBufferSize(), 8)); if (!widget->windowHandle()->handle()) { + widget->windowHandle()->setSurfaceType(QWindow::OpenGLSurface); widget->windowHandle()->setFormat(winFormat); widget->winId();//make window } @@ -294,6 +295,7 @@ QGLTemporaryContext::QGLTemporaryContext(bool, QWidget *) d->oldContext = const_cast(QGLContext::currentContext()); d->window = new QWindow; + d->window->setSurfaceType(QWindow::OpenGLSurface); d->window->setGeometry(QRect(0, 0, 3, 3)); d->window->create();