~albaguirre/qtubuntu/mir-0.26.1-compat

« back to all changes in this revision

Viewing changes to src/ubuntumirclient/qmirclientglcontext.cpp

Class renaming and syntax changes to shrink delta with upstream mirclient QPA plugin (which is equivalent to rev 360)

Changes:
- Rename classes to prefix "QMirClient" instead of "Ubuntu"
- Update licence headers to match Qt's
- change logging categories spec to match Qt: qt.qpa.mirclient
- Enforce American English
- some minor syntax tweaks

Some differences still exist:
- QPA plugin remains "ubuntumirclient" and not "mirclient" as used upstream.
- some header paths differ between in-Qt code and externally built code
- I've not included build-type switches for things like accessibility support
- relaxed switch cases to allow older versions of Mir not break a build
- panel height hack removed from upstream
- platform-api env var setting removed from upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2014-2016 Canonical, Ltd.
3
 
 *
4
 
 * This program is free software: you can redistribute it and/or modify it under
5
 
 * the terms of the GNU Lesser General Public License version 3, as published by
6
 
 * the Free Software Foundation.
7
 
 *
8
 
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 
 * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10
 
 * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11
 
 * Lesser General Public License for more details.
12
 
 *
13
 
 * You should have received a copy of the GNU Lesser General Public License
14
 
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
 
 */
16
 
 
17
 
#include "glcontext.h"
18
 
#include "logging.h"
19
 
#include "window.h"
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 2016 Canonical, Ltd.
 
4
** Contact: https://www.qt.io/licensing/
 
5
**
 
6
** This file is part of the plugins of the Qt Toolkit.
 
7
**
 
8
** $QT_BEGIN_LICENSE:LGPL$
 
9
** Commercial License Usage
 
10
** Licensees holding valid commercial Qt licenses may use this file in
 
11
** accordance with the commercial license agreement provided with the
 
12
** Software or, alternatively, in accordance with the terms contained in
 
13
** a written agreement between you and The Qt Company. For licensing terms
 
14
** and conditions see https://www.qt.io/terms-conditions. For further
 
15
** information use the contact form at https://www.qt.io/contact-us.
 
16
**
 
17
** GNU Lesser General Public License Usage
 
18
** Alternatively, this file may be used under the terms of the GNU Lesser
 
19
** General Public License version 3 as published by the Free Software
 
20
** Foundation and appearing in the file LICENSE.LGPL3 included in the
 
21
** packaging of this file. Please review the following information to
 
22
** ensure the GNU Lesser General Public License version 3 requirements
 
23
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
 
24
**
 
25
** GNU General Public License Usage
 
26
** Alternatively, this file may be used under the terms of the GNU
 
27
** General Public License version 2.0 or (at your option) the GNU General
 
28
** Public license version 3 or any later version approved by the KDE Free
 
29
** Qt Foundation. The licenses are as published by the Free Software
 
30
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
 
31
** included in the packaging of this file. Please review the following
 
32
** information to ensure the GNU General Public License requirements will
 
33
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
 
34
** https://www.gnu.org/licenses/gpl-3.0.html.
 
35
**
 
36
** $QT_END_LICENSE$
 
37
**
 
38
****************************************************************************/
 
39
 
 
40
 
 
41
#include "qmirclientglcontext.h"
 
42
#include "qmirclientlogging.h"
 
43
#include "qmirclientwindow.h"
20
44
 
21
45
#include <QOpenGLFramebufferObject>
22
46
#include <QtPlatformSupport/private/qeglconvenience_p.h>
23
47
#include <QtPlatformSupport/private/qeglpbuffer_p.h>
24
48
#include <QtGui/private/qopenglcontext_p.h>
25
49
 
26
 
Q_LOGGING_CATEGORY(ubuntumirclientGraphics, "ubuntumirclient.graphics", QtWarningMsg)
 
50
Q_LOGGING_CATEGORY(mirclientGraphics, "qt.qpa.mirclient.graphics", QtWarningMsg)
27
51
 
28
52
namespace {
29
53
 
33
57
    Q_ASSERT(config != nullptr);
34
58
 
35
59
    const char *string = eglQueryString(display, EGL_VENDOR);
36
 
    qCDebug(ubuntumirclientGraphics, "EGL vendor: %s", string);
 
60
    qCDebug(mirclientGraphics, "EGL vendor: %s", string);
37
61
 
38
62
    string = eglQueryString(display, EGL_VERSION);
39
 
    qCDebug(ubuntumirclientGraphics, "EGL version: %s", string);
 
63
    qCDebug(mirclientGraphics, "EGL version: %s", string);
40
64
 
41
65
    string = eglQueryString(display, EGL_EXTENSIONS);
42
 
    qCDebug(ubuntumirclientGraphics, "EGL extensions: %s", string);
 
66
    qCDebug(mirclientGraphics, "EGL extensions: %s", string);
43
67
 
44
 
    qCDebug(ubuntumirclientGraphics, "EGL configuration attributes:");
 
68
    qCDebug(mirclientGraphics, "EGL configuration attributes:");
45
69
    q_printEglConfig(display, config);
46
70
}
47
71
 
48
72
} // anonymous namespace
49
73
 
50
 
UbuntuOpenGLContext::UbuntuOpenGLContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share,
 
74
QMirClientOpenGLContext::QMirClientOpenGLContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share,
51
75
                                         EGLDisplay display)
52
76
    : QEGLPlatformContext(format, share, display, 0)
53
77
{
54
 
    if (ubuntumirclientGraphics().isDebugEnabled()) {
 
78
    if (mirclientGraphics().isDebugEnabled()) {
55
79
        printEglConfig(display, eglConfig());
56
80
    }
57
81
}
72
96
    return needsWorkaround;
73
97
}
74
98
 
75
 
bool UbuntuOpenGLContext::makeCurrent(QPlatformSurface* surface)
 
99
bool QMirClientOpenGLContext::makeCurrent(QPlatformSurface* surface)
76
100
{
77
101
    const bool ret = QEGLPlatformContext::makeCurrent(surface);
78
102
 
86
110
}
87
111
 
88
112
// Following method used internally in the base class QEGLPlatformContext to access
89
 
// the egl surface of a QPlatformSurface/UbuntuWindow
90
 
EGLSurface UbuntuOpenGLContext::eglSurfaceForPlatformSurface(QPlatformSurface *surface)
 
113
// the egl surface of a QPlatformSurface/QMirClientWindow
 
114
EGLSurface QMirClientOpenGLContext::eglSurfaceForPlatformSurface(QPlatformSurface *surface)
91
115
{
92
116
    if (surface->surface()->surfaceClass() == QSurface::Window) {
93
 
        return static_cast<UbuntuWindow *>(surface)->eglSurface();
 
117
        return static_cast<QMirClientWindow *>(surface)->eglSurface();
94
118
    } else {
95
119
        return static_cast<QEGLPbuffer *>(surface)->pbuffer();
96
120
    }
97
121
}
98
122
 
99
 
void UbuntuOpenGLContext::swapBuffers(QPlatformSurface *surface)
 
123
void QMirClientOpenGLContext::swapBuffers(QPlatformSurface *surface)
100
124
{
101
125
    QEGLPlatformContext::swapBuffers(surface);
102
126
 
103
127
    if (surface->surface()->surfaceClass() == QSurface::Window) {
104
128
        // notify window on swap completion
105
 
        auto ubuntuWindow = static_cast<UbuntuWindow *>(surface);
106
 
        ubuntuWindow->onSwapBuffersDone();
 
129
        auto platformWindow = static_cast<QMirClientWindow *>(surface);
 
130
        platformWindow->onSwapBuffersDone();
107
131
    }
108
132
}