summaryrefslogtreecommitdiffstats
path: root/src/plugins/generic
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@digia.com>2014-10-13 13:50:49 +0200
committerLaszlo Agocs <laszlo.agocs@digia.com>2014-10-16 13:08:06 +0200
commitcf046ccec0e9a2f174e6dc47f23cc8c4d5c1a935 (patch)
tree2b463f94769fff21a829e5fc6cf46e0dd1989a1d /src/plugins/generic
parent5cd6cd198c87bc31cb1189d6c605b4a3bd005257 (diff)
Clean up tslib plugin
The code is now cleaned up, properly divided between platformsupport and the actual plugin (like evdev) and categorized logging is in use. This will allow us to use tslib as a built-in input handler in eglfs in the future. Change-Id: Ic87cdcfe8049bb98530e7f26ffa7a77611a8ede3 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/plugins/generic')
-rw-r--r--src/plugins/generic/tslib/main.cpp15
-rw-r--r--src/plugins/generic/tslib/qtslib.cpp136
-rw-r--r--src/plugins/generic/tslib/qtslib.h65
-rw-r--r--src/plugins/generic/tslib/tslib.pro7
4 files changed, 7 insertions, 216 deletions
diff --git a/src/plugins/generic/tslib/main.cpp b/src/plugins/generic/tslib/main.cpp
index 737b175941..1fbe440bb5 100644
--- a/src/plugins/generic/tslib/main.cpp
+++ b/src/plugins/generic/tslib/main.cpp
@@ -32,7 +32,7 @@
****************************************************************************/
#include <QtGui/qgenericplugin.h>
-#include "qtslib.h"
+#include <QtPlatformSupport/private/qtslib_p.h>
QT_BEGIN_NAMESPACE
@@ -42,21 +42,16 @@ class QTsLibPlugin : public QGenericPlugin
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QGenericPluginFactoryInterface" FILE "tslib.json")
public:
- QTsLibPlugin();
-
QObject* create(const QString &key, const QString &specification);
};
-QTsLibPlugin::QTsLibPlugin()
- : QGenericPlugin()
-{
-}
-
QObject* QTsLibPlugin::create(const QString &key,
- const QString &specification)
+ const QString &specification)
{
- if (!key.compare(QLatin1String("Tslib"), Qt::CaseInsensitive) || !key.compare(QLatin1String("TslibRaw"), Qt::CaseInsensitive))
+ if (!key.compare(QLatin1String("Tslib"), Qt::CaseInsensitive)
+ || !key.compare(QLatin1String("TslibRaw"), Qt::CaseInsensitive))
return new QTsLibMouseHandler(key, specification);
+
return 0;
}
diff --git a/src/plugins/generic/tslib/qtslib.cpp b/src/plugins/generic/tslib/qtslib.cpp
deleted file mode 100644
index a8f60b69ff..0000000000
--- a/src/plugins/generic/tslib/qtslib.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtGui module 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 Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include "qtslib.h"
-
-
-#include <QSocketNotifier>
-#include <QStringList>
-#include <QPoint>
-#include <qpa/qwindowsysteminterface.h>
-
-#include <errno.h>
-#include <tslib.h>
-
-#include <qdebug.h>
-
-QT_BEGIN_NAMESPACE
-
-QTsLibMouseHandler::QTsLibMouseHandler(const QString &key,
- const QString &specification)
- : m_notify(0), m_x(0), m_y(0), m_pressed(0), m_rawMode(false)
-{
- qDebug() << "QTsLibMouseHandler" << key << specification;
- setObjectName(QLatin1String("TSLib Mouse Handler"));
-
- QByteArray device = qgetenv("TSLIB_TSDEVICE");
-
- if (specification.startsWith("/dev/"))
- device = specification.toLocal8Bit();
-
- if (device.isEmpty())
- device = QByteArrayLiteral("/dev/input/event1");
-
- m_dev = ts_open(device.constData(), 1);
- if (!m_dev) {
- qErrnoWarning(errno, "ts_open() failed");
- return;
- }
-
- if (ts_config(m_dev))
- perror("Error configuring\n");
-
- m_rawMode = !key.compare(QLatin1String("TslibRaw"), Qt::CaseInsensitive);
-
- int fd = ts_fd(m_dev);
- if (fd >= 0) {
- m_notify = new QSocketNotifier(fd, QSocketNotifier::Read, this);
- connect(m_notify, SIGNAL(activated(int)), this, SLOT(readMouseData()));
- } else {
- qWarning("Cannot open mouse input device '%s': %s", device.constData(), strerror(errno));
- }
-}
-
-
-QTsLibMouseHandler::~QTsLibMouseHandler()
-{
- if (m_dev)
- ts_close(m_dev);
-}
-
-
-static bool get_sample(struct tsdev *dev, struct ts_sample *sample, bool rawMode)
-{
- if (rawMode)
- return (ts_read_raw(dev, sample, 1) == 1);
- else
- return (ts_read(dev, sample, 1) == 1);
-}
-
-
-void QTsLibMouseHandler::readMouseData()
-{
- ts_sample sample;
-
- while (get_sample(m_dev, &sample, m_rawMode)) {
- bool pressed = sample.pressure;
- int x = sample.x;
- int y = sample.y;
-
- // work around missing coordinates on mouse release
- if (sample.pressure == 0 && sample.x == 0 && sample.y == 0) {
- x = m_x;
- y = m_y;
- }
-
- if (!m_rawMode) {
- //filtering: ignore movements of 2 pixels or less
- int dx = x - m_x;
- int dy = y - m_y;
- if (dx*dx <= 4 && dy*dy <= 4 && pressed == m_pressed)
- continue;
- }
- QPoint pos(x, y);
-
- //printf("handleMouseEvent %d %d %d %ld\n", m_x, m_y, pressed, sample.tv.tv_usec);
-
- QWindowSystemInterface::handleMouseEvent(0, pos, pos, pressed ? Qt::LeftButton : Qt::NoButton);
-
- m_x = x;
- m_y = y;
- m_pressed = pressed;
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/generic/tslib/qtslib.h b/src/plugins/generic/tslib/qtslib.h
deleted file mode 100644
index cd11ca5e2f..0000000000
--- a/src/plugins/generic/tslib/qtslib.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtGui module 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 Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTSLIB_H
-#define QTSLIB_H
-
-#include <qobject.h>
-//#include <Qt>
-
-QT_BEGIN_NAMESPACE
-
-class QSocketNotifier;
-struct tsdev;
-
-class QTsLibMouseHandler : public QObject
-{
- Q_OBJECT
-public:
- QTsLibMouseHandler(const QString &key, const QString &specification);
- ~QTsLibMouseHandler();
-
-private slots:
- void readMouseData();
-
-private:
- QSocketNotifier * m_notify;
- tsdev *m_dev;
- int m_x, m_y;
- bool m_pressed;
- bool m_rawMode;
-};
-
-QT_END_NAMESPACE
-
-#endif // QTSLIB_H
diff --git a/src/plugins/generic/tslib/tslib.pro b/src/plugins/generic/tslib/tslib.pro
index bc05efcc32..be6fc4fbea 100644
--- a/src/plugins/generic/tslib/tslib.pro
+++ b/src/plugins/generic/tslib/tslib.pro
@@ -5,12 +5,9 @@ PLUGIN_EXTENDS = -
PLUGIN_CLASS_NAME = QTsLibPlugin
load(qt_plugin)
-HEADERS = qtslib.h
+SOURCES = main.cpp
-SOURCES = main.cpp \
- qtslib.cpp
-
-QT += gui-private
+QT += gui-private platformsupport-private
LIBS += -lts