source: trunk/src/opengl/qglwindowsurface_qws.cpp@ 1023

Last change on this file since 1023 was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

  • Property svn:eol-style set to native
File size: 4.1 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtOpenGL module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
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.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include <QtGui/QPaintDevice>
43#include <QtGui/QWidget>
44#include <QtOpenGL/QGLWidget>
45#include "private/qglwindowsurface_qws_p.h"
46#include "private/qpaintengine_opengl_p.h"
47
48QT_BEGIN_NAMESPACE
49
50/*!
51 \class QWSGLWindowSurface
52 \since 4.3
53 \ingroup qws
54 \preliminary
55
56 \brief The QWSGLWindowSurface class provides the drawing area for top-level
57 windows with Qt for Embedded Linux on EGL/OpenGL ES. It also provides the
58 drawing area for \l{QGLWidget}s whether they are top-level windows or
59 children of another QWidget.
60
61 Note that this class is only available in Qt for Embedded Linux and only
62 available if Qt is configured with OpenGL support.
63*/
64
65class QWSGLWindowSurfacePrivate
66{
67public:
68 QWSGLWindowSurfacePrivate() :
69 qglContext(0), ownsContext(false) {}
70
71 QGLContext *qglContext;
72 bool ownsContext;
73};
74
75/*!
76 Constructs an empty QWSGLWindowSurface for the given top-level \a window.
77 The window surface is later initialized from chooseContext() and resources for it
78 is typically allocated in setGeometry().
79*/
80QWSGLWindowSurface::QWSGLWindowSurface(QWidget *window)
81 : QWSWindowSurface(window),
82 d_ptr(new QWSGLWindowSurfacePrivate)
83{
84}
85
86/*!
87 Constructs an empty QWSGLWindowSurface.
88*/
89QWSGLWindowSurface::QWSGLWindowSurface()
90 : d_ptr(new QWSGLWindowSurfacePrivate)
91{
92}
93
94/*!
95 Destroys the QWSGLWindowSurface object and frees any
96 allocated resources.
97 */
98QWSGLWindowSurface::~QWSGLWindowSurface()
99{
100 Q_D(QWSGLWindowSurface);
101 if (d->ownsContext)
102 delete d->qglContext;
103 delete d;
104}
105
106/*!
107 Returns the QGLContext of the window surface.
108*/
109QGLContext *QWSGLWindowSurface::context() const
110{
111 Q_D(const QWSGLWindowSurface);
112 if (!d->qglContext) {
113 QWSGLWindowSurface *that = const_cast<QWSGLWindowSurface*>(this);
114 that->setContext(new QGLContext(QGLFormat::defaultFormat()));
115 that->d_func()->ownsContext = true;
116 }
117 return d->qglContext;
118}
119
120/*!
121 Sets the QGLContext for this window surface to \a context.
122*/
123void QWSGLWindowSurface::setContext(QGLContext *context)
124{
125 Q_D(QWSGLWindowSurface);
126 if (d->ownsContext) {
127 delete d->qglContext;
128 d->ownsContext = false;
129 }
130 d->qglContext = context;
131}
132
133QT_END_NAMESPACE
Note: See TracBrowser for help on using the repository browser.