Remove specific maemo/meego codepaths

We no longer support the maemo/meego platform, so we can remove the
specific code for that platform.

Change-Id: Ia7f0730eba2d96794b97b7ca4753f63a2d7bc2a8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
This commit is contained in:
Allan Sandfeld Jensen 2014-07-29 12:15:17 +02:00 committed by Laszlo Agocs
parent 54ca39afec
commit 28fe4e3a86
19 changed files with 16 additions and 892 deletions

4
configure vendored
View File

@ -711,7 +711,6 @@ XPLATFORM_MAC=no
XPLATFORM_IOS=no
XPLATFORM_ANDROID=no
XPLATFORM_MINGW=no # Whether target platform is MinGW (win32-g++*)
XPLATFORM_MAEMO=no
XPLATFORM_QNX=no
PLATFORM=$QMAKESPEC
QT_CROSS_COMPILE=no
@ -2755,9 +2754,6 @@ case "$XPLATFORM" in
*win32-g++*)
XPLATFORM_MINGW=yes
;;
*-maemo*)
XPLATFORM_MAEMO=yes
;;
*qnx-*|*blackberry-*)
XPLATFORM_QNX=yes
;;

View File

@ -1,36 +0,0 @@
#
# qmake configuration for building Qt5 for the Nokia N9
# http://wiki.qt-project.org/Devices/N9
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QMAKE_PLATFORM = maemo
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
load(device_config)
# modifications to g++.conf
QMAKE_CC = $${CROSS_COMPILE}gcc
QMAKE_CXX = $${CROSS_COMPILE}g++
QMAKE_LINK = $${QMAKE_CXX}
QMAKE_LINK_SHLIB = $${QMAKE_CXX}
# modifications to linux.conf
QMAKE_AR = $${CROSS_COMPILE}ar cqs
QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy
QMAKE_NM = $${CROSS_COMPILE}nm -P
QMAKE_STRIP = $${CROSS_COMPILE}strip
QMAKE_CFLAGS += -mfloat-abi=hard -mfpu=neon -march=armv7-a -mcpu=cortex-a8
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
QT_QPA_DEFAULT_PLATFORM = xcb
deviceSanityCheckCompiler()
load(qt_config)

View File

@ -1,42 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the qmake spec of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** 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 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, 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.
**
** 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.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "../../linux-g++/qplatformdefs.h"

View File

@ -1,12 +0,0 @@
#
# qmake configuration for Harmattan
#
MAKEFILE_GENERATOR = UNIX
QMAKE_PLATFORM = maemo
CONFIG += incremental
CONFIG += nostrip
QMAKE_INCREMENTAL_STYLE = sublib
include(../linux-arm-gnueabi-g++/qmake.conf)

View File

@ -1,53 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the qmake spec of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** 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 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, 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.
**
** 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.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "../linux-arm-gnueabi-g++/qplatformdefs.h"
#define QT_GUI_DOUBLE_CLICK_RADIUS 20
#define QT_GUI_DRAG_DISTANCE 16
#define QML_FLICK_OVERSHOOT 160
#define QML_FLICK_SAMPLEBUFFER 6
#define QML_FLICK_DISCARDSAMPLES 2
#define QML_FLICK_DEFAULTMAXVELOCITY 2500
#define QML_FLICK_DEFAULTDECELERATION 2000
#define QML_FLICK_OVERSHOOTFRICTION 10

View File

@ -1,7 +1,5 @@
TEMPLATE = subdirs
*-maemo*: SUBDIRS += meego
contains(QT_CONFIG, evdev) {
SUBDIRS += evdevmouse evdevtouch evdevkeyboard evdevtablet
}

View File

@ -1,85 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** 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 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, 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.
**
** 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.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "contextkitproperty.h"
#include <QDBusReply>
#include <QDebug>
static QString objectPathForProperty(const QString& property)
{
QString path = property;
if (!path.startsWith(QLatin1Char('/'))) {
path.replace(QLatin1Char('.'), QLatin1Char('/'));
path.prepend(QLatin1String("/org/maemo/contextkit/"));
}
return path;
}
QContextKitProperty::QContextKitProperty(const QString& serviceName, const QString& propertyName)
: propertyInterface(serviceName, objectPathForProperty(propertyName),
QLatin1String("org.maemo.contextkit.Property"), QDBusConnection::systemBus())
{
propertyInterface.call("Subscribe");
connect(&propertyInterface, SIGNAL(ValueChanged(QVariantList,qulonglong)),
this, SLOT(cacheValue(QVariantList,qulonglong)));
QDBusMessage reply = propertyInterface.call("Get");
if (reply.type() == QDBusMessage::ReplyMessage)
cachedValue = qdbus_cast<QList<QVariant> >(reply.arguments().value(0)).value(0);
}
QContextKitProperty::~QContextKitProperty()
{
propertyInterface.call("Unsubscribe");
}
QVariant QContextKitProperty::value() const
{
return cachedValue;
}
void QContextKitProperty::cacheValue(const QVariantList& values, qulonglong)
{
cachedValue = values.value(0);
emit valueChanged(cachedValue);
}

View File

@ -1,66 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** 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 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, 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.
**
** 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.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef CONTEXTKITPROPERTY_H
#define CONTEXTKITPROPERTY_H
#include <QDBusInterface>
class QContextKitProperty : public QObject
{
Q_OBJECT
public:
QContextKitProperty(const QString& serviceName, const QString& propertyName);
~QContextKitProperty();
QVariant value() const;
signals:
void valueChanged(const QVariant& value);
private slots:
void cacheValue(const QVariantList& values, qulonglong);
private:
QDBusInterface propertyInterface;
QVariant cachedValue;
};
#endif // CONTEXTKITPROPERTY_H

View File

@ -1,68 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** 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 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, 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.
**
** 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.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtGui/qgenericplugin.h>
#include "qmeegointegration.h"
QT_BEGIN_NAMESPACE
class QMeeGoIntegrationPlugin : public QGenericPlugin
{
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QGenericPluginFactoryInterface" FILE "meego.json")
public:
QMeeGoIntegrationPlugin();
QObject* create(const QString &key, const QString &specification);
};
QMeeGoIntegrationPlugin::QMeeGoIntegrationPlugin()
: QGenericPlugin()
{
}
QObject* QMeeGoIntegrationPlugin::create(const QString &key, const QString &specification)
{
if (!key.compare(QLatin1String("MeeGoIntegration"), Qt::CaseInsensitive))
return new QMeeGoIntegration();
return 0;
}
QT_END_NAMESPACE

View File

@ -1,3 +0,0 @@
{
"Keys": [ "MeeGoIntegration" ]
}

View File

@ -1,14 +0,0 @@
TARGET = qmeegointegration
PLUGIN_TYPE = generic
PLUGIN_EXTENDS = -
PLUGIN_CLASS_NAME = QMeeGoIntegrationPlugin
load(qt_plugin)
SOURCES = qmeegointegration.cpp \
main.cpp \
contextkitproperty.cpp
HEADERS = qmeegointegration.h \
contextkitproperty.h
QT = core-private gui-private dbus gui-private

View File

@ -1,81 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** 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 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, 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.
**
** 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.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qmeegointegration.h"
#include <QDebug>
#include <QDBusConnection>
#include <QDBusArgument>
#include <qguiapplication.h>
#include <qpa/qwindowsysteminterface.h>
QMeeGoIntegration::QMeeGoIntegration()
: screenTopEdge(QStringLiteral("com.nokia.SensorService"), QStringLiteral("Screen.TopEdge"))
{
connect(&screenTopEdge, SIGNAL(valueChanged(QVariant)),
this, SLOT(updateScreenOrientation(QVariant)));
updateScreenOrientation(screenTopEdge.value());
}
QMeeGoIntegration::~QMeeGoIntegration()
{
}
void QMeeGoIntegration::updateScreenOrientation(const QVariant& topEdgeValue)
{
QString edge = topEdgeValue.toString();
Qt::ScreenOrientation orientation = Qt::PrimaryOrientation;
// ### FIXME: This isn't perfect. We should obey the video_route (tv connected) and
// the keyboard slider.
if (edge == QLatin1String("top"))
orientation = Qt::LandscapeOrientation;
else if (edge == QLatin1String("left"))
orientation = Qt::PortraitOrientation;
else if (edge == QLatin1String("right"))
orientation = Qt::InvertedPortraitOrientation;
else if (edge == QLatin1String("bottom"))
orientation = Qt::InvertedLandscapeOrientation;
QWindowSystemInterface::handleScreenOrientationChange(QGuiApplication::primaryScreen(), orientation);
}

View File

@ -1,68 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** 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 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, 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.
**
** 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.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QMEEGOINTEGRATION_H
#define QMEEGOINTEGRATION_H
#include <QObject>
#include <QDBusInterface>
#include "contextkitproperty.h"
QT_BEGIN_NAMESPACE
class QMeeGoIntegration : public QObject
{
Q_OBJECT
public:
QMeeGoIntegration();
~QMeeGoIntegration();
private Q_SLOTS:
void updateScreenOrientation(const QVariant& topEdgeValue);
private:
QContextKitProperty screenTopEdge;
};
QT_END_NAMESPACE
#endif // QMEEGOINTEGRATION_H

View File

@ -73,7 +73,7 @@
#include <X11/Xlibint.h>
#endif
#if defined(XCB_USE_XINPUT2) || defined(XCB_USE_XINPUT2_MAEMO)
#if defined(XCB_USE_XINPUT2)
#include <X11/extensions/XInput2.h>
#include <X11/extensions/XI2proto.h>
#endif
@ -314,9 +314,6 @@ QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, bool canGra
, m_primaryScreen(0)
, m_displayName(displayName ? QByteArray(displayName) : qgetenv("DISPLAY"))
, m_nativeInterface(nativeInterface)
#ifdef XCB_USE_XINPUT2_MAEMO
, m_xinputData(0)
#endif
, xfixes_first_event(0)
, xrandr_first_event(0)
, xkb_first_event(0)
@ -396,9 +393,7 @@ QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, bool canGra
initializeXFixes();
initializeXRender();
m_xi2Enabled = false;
#ifdef XCB_USE_XINPUT2_MAEMO
initializeXInput2Maemo();
#elif defined(XCB_USE_XINPUT2)
#if defined(XCB_USE_XINPUT2)
initializeXInput2();
#endif
initializeXShape();
@ -429,9 +424,7 @@ QXcbConnection::~QXcbConnection()
delete m_drag;
#endif
#ifdef XCB_USE_XINPUT2_MAEMO
finalizeXInput2Maemo();
#elif defined(XCB_USE_XINPUT2)
#if defined(XCB_USE_XINPUT2)
finalizeXInput2();
#endif
@ -935,11 +928,7 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
case XCB_PROPERTY_NOTIFY:
HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent);
break;
#ifdef XCB_USE_XINPUT2_MAEMO
case GenericEvent:
handleGenericEventMaemo((xcb_ge_event_t*)event);
break;
#elif defined(XCB_USE_XINPUT2)
#if defined(XCB_USE_XINPUT2)
case GenericEvent:
if (m_xi2Enabled)
xi2HandleEvent(reinterpret_cast<xcb_ge_event_t *>(event));
@ -1543,9 +1532,6 @@ static const char * xcb_atomnames = {
"Rel Vert Wheel\0"
"Rel Horiz Scroll\0"
"Rel Vert Scroll\0"
#if XCB_USE_MAEMO_WINDOW_PROPERTIES
"_MEEGOTOUCH_ORIENTATION_ANGLE\0"
#endif
"_XSETTINGS_SETTINGS\0"
"_COMPIZ_DECOR_PENDING\0"
"_COMPIZ_DECOR_REQUEST\0"
@ -1828,7 +1814,7 @@ bool QXcbConnection::hasEgl() const
}
#endif // defined(XCB_USE_EGL)
#if defined(XCB_USE_XINPUT2) || defined(XCB_USE_XINPUT2_MAEMO)
#if defined(XCB_USE_XINPUT2)
static int xi2ValuatorOffset(unsigned char *maskPtr, int maskLen, int number)
{
int offset = 0;
@ -1893,7 +1879,7 @@ bool QXcbConnection::xi2PrepareXIGenericDeviceEvent(xcb_ge_event_t *ev, int opCo
}
return false;
}
#endif // defined(XCB_USE_XINPUT2) || defined(XCB_USE_XINPUT2_MAEMO)
#endif // defined(XCB_USE_XINPUT2)
QXcbSystemTrayTracker *QXcbConnection::systemTrayTracker()
{

View File

@ -65,9 +65,7 @@
#include <QTabletEvent>
#endif
#ifdef XCB_USE_XINPUT2_MAEMO
struct XInput2MaemoData;
#elif XCB_USE_XINPUT2
#if XCB_USE_XINPUT2
#include <X11/extensions/XI2.h>
#ifdef XIScrollClass
#define XCB_USE_XINPUT21 // XI 2.1 adds smooth scrolling support
@ -279,9 +277,6 @@ namespace QXcbAtom {
RelHorizScroll,
RelVertScroll,
#if XCB_USE_MAEMO_WINDOW_PROPERTIES
MeegoTouchOrientationAngle,
#endif
_XSETTINGS_SETTINGS,
_COMPIZ_DECOR_PENDING,
@ -411,9 +406,7 @@ public:
#if defined(XCB_USE_EGL)
void *egl_display() const { return m_egl_display; }
#endif
#ifdef XCB_USE_XINPUT2_MAEMO
bool isUsingXInput2Maemo();
#elif defined(XCB_USE_XINPUT2)
#if defined(XCB_USE_XINPUT2)
void xi2Select(xcb_window_t window);
#endif
#ifdef XCB_USE_XINPUT21
@ -498,11 +491,6 @@ private:
void initializeXRandr();
void initializeXShape();
void initializeXKB();
#ifdef XCB_USE_XINPUT2_MAEMO
void initializeXInput2Maemo();
void finalizeXInput2Maemo();
void handleGenericEventMaemo(xcb_ge_event_t *event);
#endif
void handleClientMessageEvent(const xcb_client_message_event_t *event);
QXcbScreen* findOrCreateScreen(QList<QXcbScreen *>& newScreens, int screenNumber,
xcb_screen_t* xcbScreen, xcb_randr_get_output_info_reply_t *output = NULL);
@ -556,7 +544,7 @@ private:
QHash<int, ScrollingDevice> m_scrollingDevices;
#endif // XCB_USE_XINPUT2
#if defined(XCB_USE_XINPUT2) || defined(XCB_USE_XINPUT2_MAEMO)
#if defined(XCB_USE_XINPUT2)
static bool xi2GetValuatorValueIfSet(void *event, int valuatorNum, double *value);
static bool xi2PrepareXIGenericDeviceEvent(xcb_ge_event_t *event, int opCode);
#endif
@ -589,9 +577,7 @@ private:
void *m_xlib_display;
#endif
QXcbEventReader *m_reader;
#ifdef XCB_USE_XINPUT2_MAEMO
XInput2MaemoData *m_xinputData;
#elif defined(XCB_USE_XINPUT2)
#if defined(XCB_USE_XINPUT2)
QHash<int, QWindowSystemInterface::TouchPoint> m_touchPoints;
QHash<int, XInput2DeviceData*> m_touchDevices;
#endif

View File

@ -1,268 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** 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 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, 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.
**
** 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.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qxcbconnection.h"
#ifdef XCB_USE_XINPUT2_MAEMO
#include "qxcbwindow.h"
#include <qpa/qwindowsysteminterface.h>
#include <X11/extensions/XInput2.h>
#include <X11/extensions/XI2proto.h>
#include <X11/Xatom.h>
QT_BEGIN_NAMESPACE
// Define it here to work around XLib defining Bool and stuff.
// We can't declare those variables in the header without facing include order headaches.
struct XInput2MaemoData {
XInput2MaemoData()
: use_xinput(false)
, xinput_opcode(0)
, xinput_eventbase(0)
, xinput_errorbase(0)
, xideviceinfo(0)
, xibuttonclassinfo(0)
, xiMaxContacts(0)
, qtTouchDevice(0)
{
}
// true if Qt is compiled w/ XInput2 or Tablet support and we have a tablet.
bool use_xinput;
int xinput_opcode;
int xinput_eventbase;
int xinput_errorbase;
// device info for the master pointer Qt is using
XIDeviceInfo *xideviceinfo;
XIButtonClassInfo *xibuttonclassinfo;
int xiMaxContacts;
QList<QWindowSystemInterface::TouchPoint> allTouchPoints;
QTouchDevice *qtTouchDevice;
};
bool QXcbConnection::isUsingXInput2Maemo()
{
return m_xinputData && m_xinputData->use_xinput && m_xinputData->xiMaxContacts != 0;
}
void QXcbConnection::initializeXInput2Maemo()
{
Q_ASSERT(!m_xinputData);
m_xinputData = new XInput2MaemoData;
m_xinputData->use_xinput = XQueryExtension((Display *)m_xlib_display, "XInputExtension", &m_xinputData->xinput_opcode,
&m_xinputData->xinput_eventbase, &m_xinputData->xinput_errorbase);
if (m_xinputData->use_xinput) {
// we want XInput2
int ximajor = 2, ximinor = 0;
if (XIQueryVersion((Display *)m_xlib_display, &ximajor, &ximinor) == BadRequest) {
// XInput2 not available
m_xinputData->use_xinput = false;
} else {
// find the first master pointer and use this throughout Qt
// when making XI2 calls that need a device id (rationale is that
// for the time being, most setups will only have one master
// pointer (despite having multiple slaves)
int deviceCount = 0;
XIDeviceInfo *devices = XIQueryDevice((Display *)m_xlib_display, XIAllMasterDevices, &deviceCount);
if (devices) {
for (int i = 0; i < deviceCount; ++i) {
if (devices[i].use == XIMasterPointer) {
int unused = 0;
m_xinputData->xideviceinfo = XIQueryDevice((Display *)m_xlib_display, devices[i].deviceid, &unused);
break;
}
}
XIFreeDeviceInfo(devices);
}
if (!m_xinputData->xideviceinfo)
qFatal("Qt: Internal error, no XI2 master pointer found.");
// find the button info
m_xinputData->xibuttonclassinfo = 0;
for (int i = 0; i < m_xinputData->xideviceinfo->num_classes; ++i) {
if (m_xinputData->xideviceinfo->classes[i]->type == XIButtonClass) {
m_xinputData->xibuttonclassinfo = (XIButtonClassInfo *) m_xinputData->xideviceinfo->classes[i];
break;
}
}
// find the "Max Contacts" property on the device
Atom typeReturn;
int formatReturn;
ulong countReturn, bytesReturn;
uchar *data = 0;
if (XIGetProperty((Display *)m_xlib_display,
m_xinputData->xibuttonclassinfo->sourceid,
atom(QXcbAtom::MaxContacts),
0, 1,
False,
XA_INTEGER,
&typeReturn,
&formatReturn,
&countReturn,
&bytesReturn,
&data) == Success
&& data != 0
&& typeReturn == XA_INTEGER
&& formatReturn == 8
&& countReturn == 1) {
// touch driver reported the max number of touch-points
m_xinputData->xiMaxContacts = data[0];
} else {
m_xinputData->xiMaxContacts = 0;
}
if (data)
XFree(data);
XFlush((Display *)m_xlib_display);
}
}
}
void QXcbConnection::finalizeXInput2Maemo()
{
if (m_xinputData && m_xinputData->xideviceinfo) {
XIFreeDeviceInfo(m_xinputData->xideviceinfo);
}
delete m_xinputData;
}
void QXcbConnection::handleGenericEventMaemo(xcb_ge_event_t *event)
{
if (m_xinputData->use_xinput && xi2PrepareXIGenericDeviceEvent(event, m_xinputData->xinput_opcode)) {
xXIGenericDeviceEvent* xievent = (xXIGenericDeviceEvent*)event;
// On Harmattan XInput2 is hacked to give touch points updates into standard mouse button press/motion events.
if (m_xinputData->xiMaxContacts != 0
&& (xievent->evtype == XI_ButtonPress
|| xievent->evtype == XI_ButtonRelease
|| xievent->evtype == XI_Motion)) {
xXIDeviceEvent *xideviceevent = (xXIDeviceEvent *)xievent;
QList<QWindowSystemInterface::TouchPoint> touchPoints = m_xinputData->allTouchPoints;
if (touchPoints.count() != m_xinputData->xiMaxContacts) {
// initial event, allocate space for all (potential) touch points
touchPoints.reserve(m_xinputData->xiMaxContacts);
for (int i = 0; i < m_xinputData->xiMaxContacts; ++i) {
QWindowSystemInterface::TouchPoint tp;
tp.id = i;
tp.state = Qt::TouchPointReleased;
touchPoints << tp;
}
}
qreal x, y, nx, ny, w = 0.0, h = 0.0, p = -1.0;
int id;
uint active = 0;
for (int i = 0; i < m_xinputData->xideviceinfo->num_classes; ++i) {
XIAnyClassInfo *classinfo = m_xinputData->xideviceinfo->classes[i];
if (classinfo->type == XIValuatorClass) {
XIValuatorClassInfo *valuatorclassinfo = reinterpret_cast<XIValuatorClassInfo *>(classinfo);
int n = valuatorclassinfo->number;
double value;
if (!xi2GetValuatorValueIfSet(xideviceevent, n, &value))
continue;
if (valuatorclassinfo->label == atom(QXcbAtom::AbsMTPositionX)) {
x = value;
nx = (x - valuatorclassinfo->min) / (valuatorclassinfo->max - valuatorclassinfo->min);
} else if (valuatorclassinfo->label == atom(QXcbAtom::AbsMTPositionY)) {
y = value;
ny = (y - valuatorclassinfo->min) / (valuatorclassinfo->max - valuatorclassinfo->min);
} else if (valuatorclassinfo->label == atom(QXcbAtom::AbsMTTouchMajor)) {
w = value;
} else if (valuatorclassinfo->label == atom(QXcbAtom::AbsMTTouchMinor)) {
h = value;
} else if (valuatorclassinfo->label == atom(QXcbAtom::AbsMTPressure)) {
p = (value - valuatorclassinfo->min) / (valuatorclassinfo->max - valuatorclassinfo->min);
} else if (valuatorclassinfo->label == atom(QXcbAtom::AbsMTTrackingID)) {
id = value;
active |= 1 << id;
QWindowSystemInterface::TouchPoint &touchPoint = touchPoints[id];
Qt::TouchPointState newstate;
if (touchPoint.state == Qt::TouchPointReleased) {
newstate = Qt::TouchPointPressed;
} else {
if (touchPoint.area.center() != QPoint(x, y))
newstate = Qt::TouchPointMoved;
else
newstate = Qt::TouchPointStationary;
}
touchPoint.state = newstate;
touchPoint.area = QRectF(x - w/2, y - h/2, w, h);
touchPoint.normalPosition = QPointF(nx, ny);
touchPoint.pressure = p;
}
}
}
// mark previously-active-but-now-inactive touch points as released
for (int i = 0; i < touchPoints.count(); ++i)
if (!(active & (1 << i)) && touchPoints.at(i).state != Qt::TouchPointReleased)
touchPoints[i].state = Qt::TouchPointReleased;
if (QXcbWindow *platformWindow = platformWindowFromId(xideviceevent->event)) {
QTouchDevice *dev = m_xinputData->qtTouchDevice;
if (!dev) {
dev = new QTouchDevice;
dev->setType(QTouchDevice::TouchScreen);
dev->setCapabilities(QTouchDevice::Position | QTouchDevice::Area | QTouchDevice::Pressure | QTouchDevice::NormalizedPosition);
QWindowSystemInterface::registerTouchDevice(dev);
m_xinputData->qtTouchDevice = dev;
}
QWindowSystemInterface::handleTouchEvent(platformWindow->window(), xideviceevent->time, dev, touchPoints);
}
if (xideviceevent->evtype == XI_ButtonRelease) {
// final event, forget touch state
m_xinputData->allTouchPoints.clear();
} else {
// save current state so that we have something to reuse later
m_xinputData->allTouchPoints = touchPoints;
}
}
}
}
QT_END_NAMESPACE
#endif // XCB_USE_XINPUT2_MAEMO

View File

@ -101,7 +101,7 @@
#include <X11/Xutil.h>
#endif
#if defined(XCB_USE_XINPUT2_MAEMO) || defined(XCB_USE_XINPUT2)
#if defined(XCB_USE_XINPUT2)
#include <X11/extensions/XInput2.h>
#endif
@ -492,22 +492,7 @@ void QXcbWindow::create()
32, 2, (void *)data));
#ifdef XCB_USE_XINPUT2_MAEMO
if (connection()->isUsingXInput2Maemo()) {
XIEventMask xieventmask;
uchar bitmask[2] = { 0, 0 };
xieventmask.deviceid = XIAllMasterDevices;
xieventmask.mask = bitmask;
xieventmask.mask_len = sizeof(bitmask);
XISetMask(bitmask, XI_ButtonPress);
XISetMask(bitmask, XI_ButtonRelease);
XISetMask(bitmask, XI_Motion);
XISelectEvents(DISPLAY_FROM_XCB(this), m_window, &xieventmask, 1);
}
#elif defined(XCB_USE_XINPUT2)
#if defined(XCB_USE_XINPUT2)
connection()->xi2Select(m_window);
#endif
@ -1531,23 +1516,6 @@ void QXcbWindow::requestActivateWindow()
connection()->sync();
}
#if XCB_USE_MAEMO_WINDOW_PROPERTIES
void QXcbWindow::handleContentOrientationChange(Qt::ScreenOrientation orientation)
{
int angle = 0;
switch (orientation) {
case Qt::PortraitOrientation: angle = 270; break;
case Qt::LandscapeOrientation: angle = 0; break;
case Qt::InvertedPortraitOrientation: angle = 90; break;
case Qt::InvertedLandscapeOrientation: angle = 180; break;
case Qt::PrimaryOrientation: break;
}
Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window,
atom(QXcbAtom::MeegoTouchOrientationAngle), XCB_ATOM_CARDINAL, 32,
1, &angle));
}
#endif
QSurfaceFormat QXcbWindow::format() const
{
// ### return actual format

View File

@ -102,10 +102,6 @@ public:
void requestActivateWindow();
#if XCB_USE_MAEMO_WINDOW_PROPERTIES
void handleContentOrientationChange(Qt::ScreenOrientation orientation);
#endif
bool setKeyboardGrabEnabled(bool grab);
bool setMouseGrabEnabled(bool grab);

View File

@ -50,20 +50,10 @@ contains(QT_CONFIG, xcb-xlib) {
DEFINES += XCB_USE_XLIB
LIBS += -lX11 -lX11-xcb
*-maemo* {
contains(QT_CONFIG, xinput2) {
# XInput2 support for Harmattan.
DEFINES += XCB_USE_XINPUT2_MAEMO
SOURCES += qxcbconnection_maemo.cpp
LIBS += -lXi
}
DEFINES += XCB_USE_MAEMO_WINDOW_PROPERTIES
} else {
contains(QT_CONFIG, xinput2) {
DEFINES += XCB_USE_XINPUT2
SOURCES += qxcbconnection_xi2.cpp
LIBS += -lXi
}
contains(QT_CONFIG, xinput2) {
DEFINES += XCB_USE_XINPUT2
SOURCES += qxcbconnection_xi2.cpp
LIBS += -lXi
}
}