Quantcast
Channel: Qt DevNet forums: Qt Quick 1283365070**
Viewing all articles
Browse latest Browse all 4972

Qt 5.3.2 Application on Framebuffer

$
0
0
Thank you, it works :D here my qmake.conf and qeglfshooks.cpp qmake.conf # # qmake configuration for the odroid u2/u3 boards # http://hardkernel.com/ # http://forum.odroid.com/viewtopic.php?f=9&t=1645 # http://qt-project.org/forums/viewthread/48704/     include(../common/linux_device_pre.conf) EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_odroidu2.cpp   # Extra stuff (OpenGL, DirectFB, ...) QMAKE_INCDIR_EGL        += $$[QT_SYSROOT]/usr/include QMAKE_LIBDIR_EGL        += $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf/mali-egl QMAKE_INCDIR_OPENGL_ES2 += $$QMAKE_INCDIR_EGL QMAKE_LIBDIR_OPENGL_ES2 += $$QMAKE_LIBDIR_EGL QMAKE_INCDIR_OPENVG     += $$QMAKE_INCDIR_EGL QMAKE_LIBDIR_OPENVG     += $$QMAKE_LIBDIR_EGL   QMAKE_LIBS_EGL  += -lMali QMAKE_LIBS_OPENGL_ES2   += $$QMAKE_LIBS_EGL QMAKE_LIBS_OPENVG       += $$QMAKE_LIBS_EGL   #modifications to gcc-base.conf COMPILER_FLAGS  += -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mvectorize-with-neon-quad DISTRO_OPTS   += hard-float QMAKE_CXXFLAGS_RELEASE += -O3   include(../common/linux_arm_device_post.conf)   load(qt_config) qeglfshooks_odroidu2.cpp (just the one from linux-arm-hisilicon-hix5hd2-g++) #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 QEglFSOdroidHooks : 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 QEglFSOdroidHooks::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 QEglFSOdroidHooks::platformInit() {     QEglFSHooks::platformInit();     fbInit(); }   EGLNativeWindowType QEglFSOdroidHooks::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 QEglFSOdroidHooks::destroyNativeWindow(EGLNativeWindowType window) {     free(window); }   QEglFSOdroidHooks eglFSOdroidHooks; QEglFSHooks *platformHooks = &eglFSOdroidHooks;   QT_END_NAMESPACE

Viewing all articles
Browse latest Browse all 4972

Trending Articles