--- /dev/null
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qdirectfbeglhooks.h"
+#include "qdirectfbconvenience.h"
+
+#include "default_directfb.h"
+
+// Exported to the directfb plugin
+QDirectFBEGLHooks platform_hook;
+static void *dbpl_handle;
+
+void QDirectFBEGLHooks::platformInit()
+{
+ DBPL_RegisterDirectFBDisplayPlatform(&dbpl_handle, QDirectFbConvenience::dfbInterface());
+}
+
+void QDirectFBEGLHooks::platformDestroy()
+{
+ DBPL_UnregisterDirectFBDisplayPlatform(&dbpl_handle);
+ dbpl_handle = 0;
+}
+
+bool QDirectFBEGLHooks::hasCapability(QPlatformIntegration::Capability cap) const
+{
+ switch (cap) {
+ case QPlatformIntegration::ThreadedOpenGL:
+ return true;
+ default:
+ return false;
+ }
+}
+
QMAKE_LFLAGS += -Wl,-rpath-link,$$QMAKE_LIBDIR_OPENGL_ES2 -Wl,-rpath-link,$${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3
+# DirectFB platform hooks for this hardware
+QT_CONFIG += directfb_egl
+DIRECTFB_PLATFORM_HOOKS_SOURCES = $$PWD/qdirectfbeglhooks_bcm97425.cpp
+
load(qt_config)
qdirectfbinput.h \
qdirectfbcursor.h \
qdirectfbwindow.h \
- qdirectfbscreen.h
+ qdirectfbscreen.h \
+ qdirectfbeglhooks.h
# ### port the GL context
-directfbegl: {
+directfb_egl {
HEADERS += qdirectfb_egl.h
SOURCES += qdirectfb_egl.cpp
DEFINES += DIRECTFB_GL_EGL
}
+!isEmpty(DIRECTFB_PLATFORM_HOOKS_SOURCES) {
+ HEADERS += $$DIRECTFB_PLATFORM_HOOKS_HEADERS
+ SOURCES += $$DIRECTFB_PLATFORM_HOOKS_SOURCES
+ DEFINES += DIRECTFB_PLATFORM_HOOKS
+} else {
+ SOURCES += qdirectfbeglhooks_stub.cpp
+}
+
CONFIG += qpa/genericunixfontdatabase
target.path += $$[QT_INSTALL_PLUGINS]/platforms
#include "qdirectfb_egl.h"
#include "qdirectfbwindow.h"
#include "qdirectfbscreen.h"
+#include "qdirectfbeglhooks.h"
#include <QtGui/QOpenGLContext>
#include <QtGui/QPlatformOpenGLContext>
QT_BEGIN_NAMESPACE
+#ifdef DIRECTFB_PLATFORM_HOOKS
+extern QDirectFBEGLHooks platform_hook;
+static QDirectFBEGLHooks *hooks = &platform_hook;
+#else
+static QDirectFBEGLHooks *hooks = 0;
+#endif
+
/**
* This provides OpenGL ES 2.0 integration with DirectFB. It assumes that
* one can adapt a DirectFBSurface as a EGLSurface. It might need some vendor
void QDirectFbScreenEGL::platformInit()
{
- // Place vendor init code here.
+ if (hooks)
+ hooks->platformInit();
}
void QDirectFbScreenEGL::platformDestroy()
{
- // Place vendor finalize code here.
+ if (hooks)
+ hooks->platformDestroy();
}
QDirectFbWindowEGL::QDirectFbWindowEGL(QWindow *tlw, QDirectFbInput *input)
screenAdded(m_primaryScreen.data());
}
+bool QDirectFbIntegrationEGL::hasCapability(QPlatformIntegration::Capability cap) const
+{
+ // We assume that devices will have more and not less capabilities
+ if (hooks && hooks->hasCapability(cap))
+ return true;
+ return QDirectFbIntegration::hasCapability(cap);
+}
+
QT_END_NAMESPACE
QPlatformWindow *createPlatformWindow(QWindow *window) const;
QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const;
+ bool hasCapability(QPlatformIntegration::Capability cap) const;
+
protected:
void initializeScreen();
};
--- /dev/null
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QDIRECTFBEGL_HOOKS_H
+#define QDIRECTFBEGL_HOOKS_H
+
+#include "qplatformintegration_qpa.h"
+
+QT_BEGIN_NAMESPACE
+
+struct QDirectFBEGLHooks {
+ void platformInit();
+ void platformDestroy();
+ bool hasCapability(QPlatformIntegration::Capability) const;
+};
+
+QT_END_NAMESPACE
+
+#endif
--- /dev/null
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qdirectfbeglhooks.h"
+
+/**
+ * This file is compiled in case there is no platform specific hook. On an
+ * optimizing compiler these functions should never be called.
+ */
+
+void QDirectFBEGLHooks::platformInit()
+{
+}
+
+void QDirectFBEGLHooks::platformDestroy()
+{
+}
+
+bool QDirectFBEGLHooks::hasCapability(QPlatformIntegration::Capability) const
+{
+ return false;
+}
+