summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/linuxfb
diff options
context:
space:
mode:
authorGirish Ramakrishnan <girish.1.ramakrishnan@nokia.com>2012-07-02 15:31:17 +0530
committerQt by Nokia <qt-info@nokia.com>2012-07-11 06:06:04 +0200
commit58f644dbcffdb9afc77c5635b732c88c2660a79d (patch)
treefecbb892ff009451631958d3c7e2b0d1e0ab62cd /src/plugins/platforms/linuxfb
parent2407f4f706725052e40668b25dcaaf8fa8bb19b1 (diff)
linuxfb: make linuxfb compile
The plugin now compiles, it is not known to work. Change-Id: I8dd086eb7fc41c6e197debc2601eebba3404187c Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
Diffstat (limited to 'src/plugins/platforms/linuxfb')
-rw-r--r--src/plugins/platforms/linuxfb/linuxfb.pro7
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp77
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbintegration.h36
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp107
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbscreen.h73
5 files changed, 205 insertions, 95 deletions
diff --git a/src/plugins/platforms/linuxfb/linuxfb.pro b/src/plugins/platforms/linuxfb/linuxfb.pro
index ff0105aad4..11b4a9c82a 100644
--- a/src/plugins/platforms/linuxfb/linuxfb.pro
+++ b/src/plugins/platforms/linuxfb/linuxfb.pro
@@ -1,14 +1,13 @@
-TARGET = qlinuxfbgraphicssystem
+TARGET = qlinuxfb
load(qt_plugin)
DESTDIR = $$QT.gui.plugins/platforms
QT += core-private gui-private platformsupport-private
-SOURCES = main.cpp qlinuxfbintegration.cpp
-HEADERS = qlinuxfbintegration.h
+SOURCES = main.cpp qlinuxfbintegration.cpp qlinuxfbscreen.cpp
+HEADERS = qlinuxfbintegration.h qlinuxfbscreen.h
-include(../../../platformsupport/fb_base/fb_base.pri)
CONFIG += qpa/genericunixfontdatabase
target.path += $$[QT_INSTALL_PLUGINS]/platforms
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp b/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
index ed19c1c43e..08cc02c524 100644
--- a/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
+++ b/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
@@ -40,9 +40,14 @@
****************************************************************************/
#include "qlinuxfbintegration.h"
-#include "../fb_base/fb_base.h"
-#include "qgenericunixfontdatabase.h"
+#include "qlinuxfbscreen.h"
+
+#include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h>
#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
+#include <QtPlatformSupport/private/qfbbackingstore_p.h>
+#include <QtPlatformSupport/private/qfbwindow_p.h>
+#include <QtPlatformSupport/private/qfbcursor_p.h>
+
#include <QtGui/private/qpixmap_raster_p.h>
#include <private/qcore_unix_p.h> // overrides QT_OPEN
#include <qimage.h>
@@ -797,21 +802,20 @@ QPlatformPixmap *QLinuxFbIntegration::createPlatformPixmap(QPlatformPixmap::Pixe
return new QRasterPlatformPixmap(type);
}
-QWindowSurface *QLinuxFbIntegration::createWindowSurface(QWidget *widget, WId) const
+QPlatformBackingStore *QLinuxFbIntegration::createPlatformBackingStore(QWindow *window) const
{
- QFbWindowSurface * surface =
- new QFbWindowSurface(mPrimaryScreen, widget);
+ QFbBackingStore *surface = new QFbBackingStore(mPrimaryScreen, window);
return surface;
}
-QPlatformWindow *QLinuxFbIntegration::createPlatformWindow(QWidget *widget, WId /*winId*/) const
+QPlatformWindow *QLinuxFbIntegration::createPlatformWindow(QWindow *window) const
{
- QFbWindow *w = new QFbWindow(widget);
+ QFbWindow *w = new QFbWindow(window);
mPrimaryScreen->addWindow(w);
return w;
}
-QAbstractEventDispatcher *QMinimalIntegration::createEventDispatcher() const
+QAbstractEventDispatcher *QLinuxFbIntegration::guiThreadEventDispatcher() const
{
return createUnixEventDispatcher();
}
@@ -821,61 +825,4 @@ QPlatformFontDatabase *QLinuxFbIntegration::fontDatabase() const
return fontDb;
}
-QLinuxFbScreen::QLinuxFbScreen(uchar * d, int w,
- int h, int lstep, QImage::Format screenFormat) : compositePainter(0)
-{
- data = d;
- mGeometry = QRect(0,0,w,h);
- bytesPerLine = lstep;
- mFormat = screenFormat;
- mDepth = 16;
- mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
- mFormat);
- mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
- bytesPerLine, mFormat);
- cursor = new QPlatformSoftwareCursor(this);
-}
-
-void QLinuxFbScreen::setGeometry(QRect rect)
-{
- mGeometry = rect;
- delete mFbScreenImage;
- mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
- bytesPerLine, mFormat);
- delete compositePainter;
- compositePainter = 0;
-
- delete mScreenImage;
- mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
- mFormat);
-}
-
-void QLinuxFbScreen::setFormat(QImage::Format format)
-{
- mFormat = format;
- delete mFbScreenImage;
- mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
- bytesPerLine, mFormat);
- delete compositePainter;
- compositePainter = 0;
-
- delete mScreenImage;
- mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
- mFormat);
-}
-
-QRegion QLinuxFbScreen::doRedraw()
-{
- QRegion touched;
- touched = QFbScreen::doRedraw();
-
- if (!compositePainter) {
- compositePainter = new QPainter(mFbScreenImage);
- }
-
- QVector<QRect> rects = touched.rects();
- for (int i = 0; i < rects.size(); i++)
- compositePainter->drawImage(rects[i], *mScreenImage, rects[i]);
- return touched;
-}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbintegration.h b/src/plugins/platforms/linuxfb/qlinuxfbintegration.h
index 200cd81bd4..430375dbb6 100644
--- a/src/plugins/platforms/linuxfb/qlinuxfbintegration.h
+++ b/src/plugins/platforms/linuxfb/qlinuxfbintegration.h
@@ -39,38 +39,21 @@
**
****************************************************************************/
-#ifndef QGRAPHICSSYSTEM_LINUXFB_H
-#define QGRAPHICSSYSTEM_LINUXFB_H
+#ifndef QLINUXFBINTEGRATION_H
+#define QLINUXFBINTEGRATION_H
#include <qpa/qplatformintegration.h>
-#include "../fb_base/fb_base.h"
-QT_BEGIN_NAMESPACE
-
-class QLinuxFbScreen : public QFbScreen
-{
- Q_OBJECT
-public:
- QLinuxFbScreen(uchar * d, int w, int h, int lstep, QImage::Format screenFormat);
- void setGeometry(QRect rect);
- void setFormat(QImage::Format format);
-
-public slots:
- QRegion doRedraw();
+#include <QtPlatformSupport/private/qfbscreen_p.h>
-private:
- QImage * mFbScreenImage;
- uchar * data;
- int bytesPerLine;
-
- QPainter *compositePainter;
-};
+QT_BEGIN_NAMESPACE
class QLinuxFbIntegrationPrivate;
struct fb_cmap;
struct fb_var_screeninfo;
struct fb_fix_screeninfo;
class QAbstractEventDispatcher;
+class QLinuxFbScreen;
class QLinuxFbIntegration : public QPlatformIntegration
{
@@ -81,9 +64,9 @@ public:
bool hasCapability(QPlatformIntegration::Capability cap) const;
QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const;
- QPlatformWindow *createPlatformWindow(QWidget *widget, WId WinId) const;
- QWindowSurface *createWindowSurface(QWidget *widget, WId WinId) const;
- QAbstractEventDispatcher *createEventDispatcher() const;
+ QPlatformWindow *createPlatformWindow(QWindow *window) const;
+ QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const;
+ QAbstractEventDispatcher *guiThreadEventDispatcher() const;
QList<QPlatformScreen *> screens() const { return mScreens; }
@@ -134,4 +117,5 @@ private:
QT_END_NAMESPACE
-#endif
+#endif // QLINUXFBINTEGRATION_H
+
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp b/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp
new file mode 100644
index 0000000000..729fd87a31
--- /dev/null
+++ b/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** 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 "qlinuxfbscreen.h"
+#include <QtPlatformSupport/private/qfbcursor_p.h>
+#include <QtGui/QPainter>
+
+QT_BEGIN_NAMESPACE
+
+QLinuxFbScreen::QLinuxFbScreen(uchar * d, int w,
+ int h, int lstep, QImage::Format screenFormat) : compositePainter(0)
+{
+ data = d;
+ mGeometry = QRect(0,0,w,h);
+ bytesPerLine = lstep;
+ mFormat = screenFormat;
+ mDepth = 16;
+ mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
+ mFormat);
+ mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
+ bytesPerLine, mFormat);
+ cursor = new QFbCursor(this);
+}
+
+void QLinuxFbScreen::setGeometry(QRect rect)
+{
+ mGeometry = rect;
+ delete mFbScreenImage;
+ mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
+ bytesPerLine, mFormat);
+ delete compositePainter;
+ compositePainter = 0;
+
+ delete mScreenImage;
+ mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
+ mFormat);
+}
+
+void QLinuxFbScreen::setFormat(QImage::Format format)
+{
+ mFormat = format;
+ delete mFbScreenImage;
+ mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
+ bytesPerLine, mFormat);
+ delete compositePainter;
+ compositePainter = 0;
+
+ delete mScreenImage;
+ mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
+ mFormat);
+}
+
+QRegion QLinuxFbScreen::doRedraw()
+{
+ QRegion touched;
+ touched = QFbScreen::doRedraw();
+
+ if (!compositePainter) {
+ compositePainter = new QPainter(mFbScreenImage);
+ }
+
+ QVector<QRect> rects = touched.rects();
+ for (int i = 0; i < rects.size(); i++)
+ compositePainter->drawImage(rects[i], *mScreenImage, rects[i]);
+ return touched;
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbscreen.h b/src/plugins/platforms/linuxfb/qlinuxfbscreen.h
new file mode 100644
index 0000000000..6181ee964b
--- /dev/null
+++ b/src/plugins/platforms/linuxfb/qlinuxfbscreen.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** 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 QLINUXFBSCREEN_H
+#define QLINUXFBSCREEN_H
+
+#include <QtPlatformSupport/private/qfbscreen_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QPainter;
+
+class QLinuxFbScreen : public QFbScreen
+{
+ Q_OBJECT
+public:
+ QLinuxFbScreen(uchar * d, int w, int h, int lstep, QImage::Format screenFormat);
+ void setGeometry(QRect rect);
+ void setFormat(QImage::Format format);
+
+public slots:
+ QRegion doRedraw();
+
+private:
+ QImage *mFbScreenImage;
+ uchar *data;
+ int bytesPerLine;
+
+ QPainter *compositePainter;
+};
+
+QT_END_NAMESPACE
+
+#endif // QLINUXFBSCREEN_H
+