egl: Reshuffle headers to help less fortunate systems with X11
EGL headers including X headers has traditionally been problematic due to getting macros for Status, None, etc. In most cases this is not an issue anymore because on embedded one will almost always use a driver targeting the framebuffer or DRM/KMS and therefore the EGL headers do not pull in X dependencies. Furthermore, Mesa supports MESA_EGL_NO_X11_HEADERS which we set, avoiding the problem altogether with Mesa regardless of targeting X11 or KMS. However, other drivers do not have this option. On i.MX6 for instance, targeting X11 is problematic due to not having EGL_API_FB defined, which in turn means the EGL headers pulls in X headers in order to be able to define the native display and window types as Display and Window. Try to play nice with this use case by reshuffling the includes and undefining the problematic names. Task-number: QTBUG-52928 Change-Id: I059f26b340b6e442e7296055915d18f5a1ce7a7f Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
This commit is contained in:
parent
e6b1e918e1
commit
ecf127505e
@ -1,7 +1,8 @@
|
||||
contains(QT_CONFIG,egl) {
|
||||
HEADERS += \
|
||||
$$PWD/qeglconvenience_p.h \
|
||||
$$PWD/qeglstreamconvenience_p.h
|
||||
$$PWD/qeglstreamconvenience_p.h \
|
||||
$$PWD/qt_egl_p.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/qeglconvenience.cpp \
|
||||
|
@ -48,7 +48,7 @@
|
||||
#include <QtGui/QSurfaceFormat>
|
||||
#include <QtCore/QVector>
|
||||
#include <QtCore/QSizeF>
|
||||
#include <EGL/egl.h>
|
||||
#include <QtPlatformSupport/private/qt_egl_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -45,9 +45,9 @@
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <qpa/qplatformoffscreensurface.h>
|
||||
#include <QtPlatformSupport/private/qeglplatformcontext_p.h>
|
||||
#include <QtPlatformSupport/private/qt_egl_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
||||
#include <qpa/qplatformwindow.h>
|
||||
#include <qpa/qplatformopenglcontext.h>
|
||||
#include <QtCore/QVariant>
|
||||
#include <EGL/egl.h>
|
||||
#include <QtPlatformSupport/private/qt_egl_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -46,8 +46,7 @@
|
||||
//
|
||||
|
||||
#include <qglobal.h>
|
||||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
#include <QtPlatformSupport/private/qt_egl_p.h>
|
||||
|
||||
// This provides runtime EGLDevice/Output/Stream support even when eglext.h in
|
||||
// the sysroot is not up-to-date.
|
||||
|
67
src/platformsupport/eglconvenience/qt_egl_p.h
Normal file
67
src/platformsupport/eglconvenience/qt_egl_p.h
Normal file
@ -0,0 +1,67 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the plugins of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL21$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 or version 3 as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||
** following information to ensure the GNU Lesser General Public License
|
||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** As a special exception, The Qt Company gives you certain additional
|
||||
** rights. These rights are described in The Qt Company LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QT_EGL_P_H
|
||||
#define QT_EGL_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
|
||||
#undef Status
|
||||
#undef None
|
||||
#undef Bool
|
||||
#undef CursorShape
|
||||
#undef KeyPress
|
||||
#undef KeyRelease
|
||||
#undef FocusIn
|
||||
#undef FocusOut
|
||||
#undef FontChange
|
||||
#undef Expose
|
||||
#undef Unsorted
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_EGL_P_H
|
@ -31,6 +31,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qeglfsglobal.h"
|
||||
#include <QtGui/QSurface>
|
||||
#include <QtPlatformSupport/private/qeglconvenience_p.h>
|
||||
#include <QtPlatformSupport/private/qeglpbuffer_p.h>
|
||||
|
@ -34,9 +34,9 @@
|
||||
#ifndef QEGLFSCONTEXT_H
|
||||
#define QEGLFSCONTEXT_H
|
||||
|
||||
#include "qeglfsglobal.h"
|
||||
#include <QtPlatformSupport/private/qeglplatformcontext_p.h>
|
||||
#include <QtCore/QVariant>
|
||||
#include "qeglfsglobal.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -45,13 +45,12 @@
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include "qeglfsglobal.h"
|
||||
#include <qpa/qplatformintegration.h>
|
||||
#include <qpa/qplatformscreen.h>
|
||||
#include <QtCore/QString>
|
||||
#include <QtGui/QSurfaceFormat>
|
||||
#include <QtGui/QImage>
|
||||
#include <EGL/egl.h>
|
||||
#include "qeglfsglobal.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
#define QEGLFSGLOBAL_H
|
||||
|
||||
#include <qglobal.h>
|
||||
#include <QtPlatformSupport/private/qt_egl_p.h>
|
||||
|
||||
#ifdef QT_BUILD_EGL_DEVICE_LIB
|
||||
#define Q_EGLFS_EXPORT Q_DECL_EXPORT
|
||||
|
@ -34,8 +34,8 @@
|
||||
#ifndef QEGLFSHOOKS_H
|
||||
#define QEGLFSHOOKS_H
|
||||
|
||||
#include "qeglfsdeviceintegration.h"
|
||||
#include "qeglfsglobal.h"
|
||||
#include "qeglfsdeviceintegration.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -79,8 +79,6 @@
|
||||
|
||||
#include <QtPlatformHeaders/qeglfsfunctions.h>
|
||||
|
||||
#include <EGL/egl.h>
|
||||
|
||||
static void initResources()
|
||||
{
|
||||
#ifndef QT_NO_CURSOR
|
||||
|
@ -34,12 +34,11 @@
|
||||
#ifndef QEGLFSINTEGRATION_H
|
||||
#define QEGLFSINTEGRATION_H
|
||||
|
||||
#include "qeglfsglobal.h"
|
||||
#include <QtCore/QVariant>
|
||||
#include <qpa/qplatformintegration.h>
|
||||
#include <qpa/qplatformnativeinterface.h>
|
||||
#include <qpa/qplatformscreen.h>
|
||||
#include <EGL/egl.h>
|
||||
#include "qeglfsglobal.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -34,9 +34,8 @@
|
||||
#ifndef QEGLFSOFFSCREENWINDOW_H
|
||||
#define QEGLFSOFFSCREENWINDOW_H
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <qpa/qplatformoffscreensurface.h>
|
||||
#include "qeglfsglobal.h"
|
||||
#include <qpa/qplatformoffscreensurface.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -36,7 +36,6 @@
|
||||
|
||||
#include "qeglfsglobal.h"
|
||||
#include <QtCore/QPointer>
|
||||
#include <EGL/egl.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -34,13 +34,12 @@
|
||||
#ifndef QEGLFSWINDOW_H
|
||||
#define QEGLFSWINDOW_H
|
||||
|
||||
#include "qeglfsglobal.h"
|
||||
#include "qeglfsintegration.h"
|
||||
#include "qeglfsscreen.h"
|
||||
#include "qeglfsglobal.h"
|
||||
|
||||
#include <qpa/qplatformwindow.h>
|
||||
#include <QtPlatformSupport/private/qopenglcompositor_p.h>
|
||||
#include <EGL/egl.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -40,7 +40,7 @@
|
||||
#include <QtGui/private/qcssparser_p.h>
|
||||
#include <QtGui/private/qtextengine_p.h>
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <QtPlatformSupport/private/qt_egl_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
||||
#include <QtGui/private/qguiapplication_p.h>
|
||||
|
||||
#ifdef XCB_USE_EGL
|
||||
#include <EGL/egl.h>
|
||||
#include <QtPlatformSupport/private/qt_egl_p.h>
|
||||
#endif
|
||||
|
||||
#ifdef XCB_USE_XLIB
|
||||
|
Loading…
Reference in New Issue
Block a user