1 /****************************************************************************
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 ** This file is part of the QtOpenGL module of the Qt Toolkit.
8 ** $QT_BEGIN_LICENSE:LGPL$
10 ** This file contains pre-release code and may not be distributed.
11 ** You may use this file in accordance with the terms and conditions
12 ** contained in the either Technology Preview License Agreement or the
13 ** Beta Release License Agreement.
15 ** GNU Lesser General Public License Usage
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
17 ** General Public License version 2.1 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
19 ** packaging of this file. Please review the following information to
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 ** In addition, as a special exception, Nokia gives you certain
24 ** additional rights. These rights are described in the Nokia Qt LGPL
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
28 ** GNU General Public License Usage
29 ** Alternatively, this file may be used under the terms of the GNU
30 ** General Public License version 3.0 as published by the Free Software
31 ** Foundation and appearing in the file LICENSE.GPL included in the
32 ** packaging of this file. Please review the following information to
33 ** ensure the GNU General Public License version 3.0 requirements will be
34 ** met: http://www.gnu.org/copyleft/gpl.html.
36 ** If you are unsure which license is appropriate for your use, please
37 ** contact the sales department at http://www.qtsoftware.com/contact.
40 ****************************************************************************/
42 #include <QtGui/QPaintDevice>
43 #include <QtGui/QWidget>
44 #include <QtOpenGL/QGLWidget>
45 #include "private/qglwindowsurface_qws_p.h"
46 #include "private/qglpaintdevice_qws_p.h"
47 #include "private/qpaintengine_opengl_p.h"
52 \class QWSGLWindowSurface
57 \brief The QWSGLWindowSurface class provides the drawing area for top-level
58 windows with Qt for Embedded Linux on EGL/OpenGL ES. It also provides the
59 drawing area for \l{QGLWidget}s whether they are top-level windows or
60 children of another QWidget.
62 Note that this class is only available in Qt for Embedded Linux and only
63 available if Qt is configured with OpenGL support.
66 class QWSGLWindowSurfacePrivate
69 QWSGLWindowSurfacePrivate() :
70 qglContext(0), ownsContext(false) {}
72 QGLContext
*qglContext
;
77 Constructs an empty QWSGLWindowSurface for the given top-level \a window.
78 The window surface is later initialized from chooseContext() and resources for it
79 is typically allocated in setGeometry().
81 QWSGLWindowSurface::QWSGLWindowSurface(QWidget
*window
)
82 : QWSWindowSurface(window
),
83 d_ptr(new QWSGLWindowSurfacePrivate
)
88 Constructs an empty QWSGLWindowSurface.
90 QWSGLWindowSurface::QWSGLWindowSurface()
91 : d_ptr(new QWSGLWindowSurfacePrivate
)
96 Destroys the QWSGLWindowSurface object and frees any
99 QWSGLWindowSurface::~QWSGLWindowSurface()
101 Q_D(QWSGLWindowSurface
);
103 delete d
->qglContext
;
108 Returns the QGLContext of the window surface.
110 QGLContext
*QWSGLWindowSurface::context() const
112 Q_D(const QWSGLWindowSurface
);
113 if (!d
->qglContext
) {
114 QWSGLWindowSurface
*that
= const_cast<QWSGLWindowSurface
*>(this);
115 that
->setContext(new QGLContext(QGLFormat::defaultFormat()));
116 that
->d_func()->ownsContext
= true;
118 return d
->qglContext
;
122 Sets the QGLContext for this window surface to \a context.
124 void QWSGLWindowSurface::setContext(QGLContext
*context
)
126 Q_D(QWSGLWindowSurface
);
127 if (d
->ownsContext
) {
128 delete d
->qglContext
;
129 d
->ownsContext
= false;
131 d
->qglContext
= context
;