From: Denys Dmytriyenko <[email protected]>

* Enable gles2/eglfs and icu features
* Add slightly modified eglfs patches from Prabu

Signed-off-by: Denys Dmytriyenko <[email protected]>
Acked-by: Franklin S. Cooper Jr <[email protected]>
Acked-by: Chase Maupin <[email protected]>
---
 .../qt5/qtbase/0001-qeglfswindow.cpp.patch         | 56 ++++++++++++++++++++++
 .../qt5/qtbase/0002-qeglfswindow.cpp.patch         | 34 +++++++++++++
 .../recipes-qt/qt5/qtbase_5.1.0.bbappend           | 10 ++++
 3 files changed, 100 insertions(+)
 create mode 100644 
meta-arago-distro/recipes-qt/qt5/qtbase/0001-qeglfswindow.cpp.patch
 create mode 100644 
meta-arago-distro/recipes-qt/qt5/qtbase/0002-qeglfswindow.cpp.patch
 create mode 100644 meta-arago-distro/recipes-qt/qt5/qtbase_5.1.0.bbappend

diff --git 
a/meta-arago-distro/recipes-qt/qt5/qtbase/0001-qeglfswindow.cpp.patch 
b/meta-arago-distro/recipes-qt/qt5/qtbase/0001-qeglfswindow.cpp.patch
new file mode 100644
index 0000000..b95b98e
--- /dev/null
+++ b/meta-arago-distro/recipes-qt/qt5/qtbase/0001-qeglfswindow.cpp.patch
@@ -0,0 +1,56 @@
+--- qtbase/src/plugins/platforms/eglfs/qeglfswindow.cpp.orig   2013-08-09 
23:29:18.253037952 +0530
++++ qtbase/src/plugins/platforms/eglfs/qeglfswindow.cpp        2013-08-09 
23:41:18.509018405 +0530
+@@ -61,23 +61,32 @@ QEglFSWindow::QEglFSWindow(QWindow *w)
+ #endif
+ }
+ 
+ QEglFSWindow::~QEglFSWindow()
+ {
+     destroy();
+ }
+ 
++static EGLSurface __singleWindowSurface;
+ void QEglFSWindow::create()
+ {
+     if (m_window)
+         return;
+ 
+     setWindowState(Qt::WindowFullScreen);
+ 
++    if(QEglFSHooks::hooks() && 
!QEglFSHooks::hooks()->hasCapability(QPlatformIntegration::Capability::MultipleWindows)
 && __singleWindowSurface)
++    {
++        m_surface = __singleWindowSurface;
++#ifdef QEGL_EXTRA_DEBUG
++    qWarning("Surface recreate request, re-using %x\n", m_surface);
++#endif
++       return;
++    }
+     if (window()->type() == Qt::Desktop) {
+         QRect rect(QPoint(), QEglFSHooks::hooks()->screenSize());
+         QPlatformWindow::setGeometry(rect);
+         QWindowSystemInterface::handleGeometryChange(window(), rect);
+         return;
+     }
+ 
+     EGLDisplay display = (static_cast<QEglFSScreen 
*>(window()->screen()->handle()))->display();
+@@ -104,16 +113,20 @@ void QEglFSWindow::resetSurface()
+ 
+     m_window = 
QEglFSHooks::hooks()->createNativeWindow(QEglFSHooks::hooks()->screenSize(), 
m_format);
+     m_surface = eglCreateWindowSurface(display, m_config, m_window, NULL);
+     if (m_surface == EGL_NO_SURFACE) {
+         EGLint error = eglGetError();
+         eglTerminate(display);
+         qFatal("EGL Error : Could not create the egl surface: error = 
0x%x\n", error);
+     }
++    if(QEglFSHooks::hooks() && 
!QEglFSHooks::hooks()->hasCapability(QPlatformIntegration::Capability::MultipleWindows))
++    {
++        __singleWindowSurface = m_surface;
++    }
+ }
+ 
+ void QEglFSWindow::destroy()
+ {
+     if (m_surface) {
+         EGLDisplay display = static_cast<QEglFSScreen *>(screen())->display();
+         eglDestroySurface(display, m_surface);
+         m_surface = 0;
diff --git 
a/meta-arago-distro/recipes-qt/qt5/qtbase/0002-qeglfswindow.cpp.patch 
b/meta-arago-distro/recipes-qt/qt5/qtbase/0002-qeglfswindow.cpp.patch
new file mode 100644
index 0000000..8d17348
--- /dev/null
+++ b/meta-arago-distro/recipes-qt/qt5/qtbase/0002-qeglfswindow.cpp.patch
@@ -0,0 +1,34 @@
+--- qtbase/src/plugins/platforms/eglfs/qeglfswindow.cpp.old    2013-09-09 
23:09:24.433774489 +0530
++++ qtbase/src/plugins/platforms/eglfs/qeglfswindow.cpp        2013-09-09 
23:12:22.105766689 +0530
+@@ -54,30 +54,30 @@ QEglFSWindow::QEglFSWindow(QWindow *w)
+     , m_surface(0)
+     , m_window(0)
+ {
+     static int serialNo = 0;
+     m_winid  = ++serialNo;
+ #ifdef QEGL_EXTRA_DEBUG
+     qWarning("QEglWindow %p: %p 0x%x\n", this, w, uint(m_winid));
+ #endif
++    setWindowState(Qt::WindowFullScreen);
+ }
+ 
+ QEglFSWindow::~QEglFSWindow()
+ {
+     destroy();
+ }
+ 
+ static EGLSurface __singleWindowSurface;
+ void QEglFSWindow::create()
+ {
+     if (m_window)
+         return;
+ 
+-    setWindowState(Qt::WindowFullScreen);
+ 
+     if(QEglFSHooks::hooks() && 
!QEglFSHooks::hooks()->hasCapability(QPlatformIntegration::Capability::MultipleWindows)
 && __singleWindowSurface)
+     {
+         m_surface = __singleWindowSurface;
+ #ifdef QEGL_EXTRA_DEBUG
+     qWarning("Surface recreate request, re-using %x\n", m_surface);
+ #endif
+        return;
diff --git a/meta-arago-distro/recipes-qt/qt5/qtbase_5.1.0.bbappend 
b/meta-arago-distro/recipes-qt/qt5/qtbase_5.1.0.bbappend
new file mode 100644
index 0000000..8ae7706
--- /dev/null
+++ b/meta-arago-distro/recipes-qt/qt5/qtbase_5.1.0.bbappend
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+PACKAGECONFIG_GL = "gles2 icu"
+
+SRC_URI += " \
+       file://0001-qeglfswindow.cpp.patch \
+       file://0002-qeglfswindow.cpp.patch \
+"
+
+PR_append = "-arago0"
-- 
1.8.3.2

_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago

Reply via email to