diff options
author | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-03-02 16:09:22 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-03-05 09:51:16 +0000 |
commit | d04c3d2079e0df79592128a67e115ecb90b08454 (patch) | |
tree | c624d38e5d8da5603d6f7a7485cc9af9d51a4fd2 /mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++ | |
parent | c6045db4a6a1faec0365d88ab0a34d481540e543 (diff) |
eglfs: Pluginize RPi, iMX6 and Mali backends
eglfs does not depend on the device makespecs anymore when it comes to these device
integration backends (hooks). Instead, backends are autodetected by configure.
The name of the preferred plugin is still set in the device makespecs. This
is optional. When not set and there is more than one plugin present in the system,
the environment variable QT_QPA_EGLFS_INTEGRATION will have to be set at runtime.
In the absence of that, the order is undefined.
Change-Id: Ie1ced2c9aa1beff2adb13b4fdea7c499cb5a6aab
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Diffstat (limited to 'mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++')
-rw-r--r-- | mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qeglfshooks_hix5hd2.cpp | 110 | ||||
-rw-r--r-- | mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf | 4 |
2 files changed, 3 insertions, 111 deletions
diff --git a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qeglfshooks_hix5hd2.cpp b/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qeglfshooks_hix5hd2.cpp deleted file mode 100644 index 9100a97646..0000000000 --- a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qeglfshooks_hix5hd2.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the qmake spec 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$ -** -****************************************************************************/ - -#include "qeglfshooks.h" -#include <EGL/fbdev_window.h> - -#include <unistd.h> -#include <fcntl.h> -#include <sys/ioctl.h> -#include <linux/fb.h> - -#include <private/qcore_unix_p.h> - -QT_BEGIN_NAMESPACE - -class QEglFSHiX5Hd2Hooks : public QEglFSHooks -{ -private: - void fbInit(); -public: - void platformInit() Q_DECL_OVERRIDE; - EGLNativeWindowType createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format) Q_DECL_OVERRIDE; - void destroyNativeWindow(EGLNativeWindowType window) Q_DECL_OVERRIDE; -}; - -void QEglFSHiX5Hd2Hooks::fbInit() -{ - int fd = qt_safe_open("/dev/fb0", O_RDWR, 0); - if (fd == -1) - qWarning("Failed to open fb to detect screen resolution!"); - - struct fb_var_screeninfo vinfo; - memset(&vinfo, 0, sizeof(vinfo)); - if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) - qWarning("Could not get variable screen info"); - - vinfo.bits_per_pixel = 32; - vinfo.red.length = 8; - vinfo.green.length = 8; - vinfo.blue.length = 8; - vinfo.transp.length = 8; - vinfo.blue.offset = 0; - vinfo.green.offset = 8; - vinfo.red.offset = 16; - vinfo.transp.offset = 24; - vinfo.yres_virtual = 2 * vinfo.yres; - - if (ioctl(fd, FBIOPUT_VSCREENINFO, &vinfo) == -1) - qErrnoWarning(errno, "Unable to set double buffer mode!"); - - qt_safe_close(fd); - return; -} - -void QEglFSHiX5Hd2Hooks::platformInit() -{ - QEglFSHooks::platformInit(); - fbInit(); -} - -EGLNativeWindowType QEglFSHiX5Hd2Hooks::createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format) -{ - fbdev_window *fbwin = reinterpret_cast<fbdev_window *>(malloc(sizeof(fbdev_window))); - if (NULL == fbwin) - return 0; - - fbwin->width = size.width(); - fbwin->height = size.height(); - return (EGLNativeWindowType)fbwin; -} - -void QEglFSHiX5Hd2Hooks::destroyNativeWindow(EGLNativeWindowType window) -{ - free(window); -} - -QEglFSHiX5Hd2Hooks eglFSHiX5Hd2Hooks; -QEglFSHooks *platformHooks = &eglFSHiX5Hd2Hooks; - -QT_END_NAMESPACE diff --git a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf b/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf index 851d08600f..71ff90c9f8 100644 --- a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf +++ b/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf @@ -18,7 +18,6 @@ # -prefix /home/abc/project/sysbase/qt_install include(../common/linux_device_pre.conf) -EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_hix5hd2.cpp QMAKE_INCDIR += /usr/arm-linux-gnueabihf/include QMAKE_LIBDIR += /usr/arm-linux-gnueabihf/lib @@ -39,6 +38,9 @@ DISTRO_OPTS += hard-float QMAKE_CFLAGS +=-march=armv7-a -mcpu=cortex-a9 -mfpu=vfpv3-d16 QMAKE_CXXFLAGS += $$QMAKE_CFLAGS +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_mali + include(../common/linux_arm_device_post.conf) load(qt_config) |