diff options
author | Zsolt Simon <zsolt.simon@nokia.com> | 2012-01-18 11:19:15 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-18 04:59:26 +0100 |
commit | 9e039ccca259e7d86ca6f6d9603b7c6d89d7a4d6 (patch) | |
tree | 49fdf92454b0d60c689b8d043910de18a3b74f18 /src/plugins/sensors | |
parent | 001461bb5d5efef8431bf673553a353c756d3b58 (diff) |
move simulator connection to a thread
Change-Id: Ice70c7f35315f50e82270961a38d6b130651f76d
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com>
Diffstat (limited to 'src/plugins/sensors')
-rw-r--r-- | src/plugins/sensors/simulator/simulatorcommon.cpp | 89 | ||||
-rw-r--r-- | src/plugins/sensors/simulator/simulatorcommon.h | 9 |
2 files changed, 81 insertions, 17 deletions
diff --git a/src/plugins/sensors/simulator/simulatorcommon.cpp b/src/plugins/sensors/simulator/simulatorcommon.cpp index bd0a7dcd..ad7c50ed 100644 --- a/src/plugins/sensors/simulator/simulatorcommon.cpp +++ b/src/plugins/sensors/simulator/simulatorcommon.cpp @@ -43,6 +43,7 @@ #include "qsensordata_simulator_p.h" #include <QtSimulator/QtSimulator> #include <QDebug> +#include <QThread> using namespace Simulator; @@ -54,24 +55,91 @@ Q_GLOBAL_STATIC(QtMobility::QCompassReadingData, qtCompassData) Q_GLOBAL_STATIC(QtMobility::QProximityReadingData, qtProximityData) Q_GLOBAL_STATIC(SensorsConnection, sensorsConnection) +class SimulatorAsyncConnection: public QThread +{ + Q_OBJECT +public: + SimulatorAsyncConnection() + : QThread() + { + QtMobility::qt_registerSensorTypes(); + + moveToThread(this); + connect(this, SIGNAL(queueConnectToServer()), + this, SLOT(doConnectToServer()), + Qt::QueuedConnection); + + start(); + } + + ~SimulatorAsyncConnection() + { + quit(); + wait(); + } + + void connectToServer() + { + emit queueConnectToServer(); + } + +signals: + void queueConnectToServer(); + + void initialSensorsDataSent(); + void setAmbientLightData(const QtMobility::QAmbientLightReadingData &); + void setLightData(const QtMobility::QLightReadingData &); + void setAccelerometerData(const QtMobility::QAccelerometerReadingData &); + void setMagnetometerData(const QtMobility::QMagnetometerReadingData &); + void setCompassData(const QtMobility::QCompassReadingData &); + void setProximityData(const QtMobility::QProximityReadingData &); + +private slots: + void doConnectToServer() + { + mConnection.reset(new Connection(Connection::Client, "QtSimulator_Mobility_ServerName1.3.0.0", + 0xbeef+1, Version(1,0,0,0), this)); + mWorker.reset(mConnection->connectToServer(Connection::simulatorHostName(true), 0xbeef+1)); + if (!mWorker) { + qWarning("QtSensors simulator backend could not connect to the simulator!"); + return; + } + mWorker->addReceiver(this); + mWorker->call("setRequestsSensors"); + } + +private: + QScopedPointer<Simulator::Connection> mConnection; + QScopedPointer<Simulator::ConnectionWorker> mWorker; +}; + SensorsConnection::SensorsConnection(QObject *parent) : QObject(parent) , mInitialDataSent(false) { - QtMobility::qt_registerSensorTypes(); - mConnection = new Connection(Connection::Client, "QtSimulator_Mobility_ServerName1.3.0.0", 0xbeef+1, Version(1,0,0,0), this); - mWorker = mConnection->connectToServer(Connection::simulatorHostName(true), 0xbeef+1); - if (!mWorker) { - qWarning("QtSensors simulator backend could not connect to the simulator!"); - return; - } - mWorker->addReceiver(this); - mWorker->call("setRequestsSensors"); + mConnection = new SimulatorAsyncConnection(); + + connect(mConnection, SIGNAL(initialSensorsDataSent()), + this, SLOT(initialSensorsDataSent())); + connect(mConnection, SIGNAL(setAmbientLightData(QtMobility::QAmbientLightReadingData)), + this, SLOT(setAmbientLightData(QtMobility::QAmbientLightReadingData))); + connect(mConnection, SIGNAL(setLightData(QtMobility::QLightReadingData)), + this, SLOT(setLightData(QtMobility::QLightReadingData))); + connect(mConnection, SIGNAL(setAccelerometerData(QtMobility::QAccelerometerReadingData)), + this, SLOT(setAccelerometerData(QtMobility::QAccelerometerReadingData))); + connect(mConnection, SIGNAL(setMagnetometerData(QtMobility::QMagnetometerReadingData)), + this, SLOT(setMagnetometerData(QtMobility::QMagnetometerReadingData))); + connect(mConnection, SIGNAL(setCompassData(QtMobility::QCompassReadingData)), + this, SLOT(setCompassData(QtMobility::QCompassReadingData))); + connect(mConnection, SIGNAL(setProximityData(QtMobility::QProximityReadingData)), + this, SLOT(setProximityData(QtMobility::QProximityReadingData))); + + mConnection->connectToServer(); } SensorsConnection::~SensorsConnection() { - delete mWorker; + delete mConnection; } void SensorsConnection::setAmbientLightData(const QtMobility::QAmbientLightReadingData &data) @@ -178,3 +246,4 @@ QtMobility::QProximityReadingData get_qtProximityData() return *qtProximityData(); } +#include "simulatorcommon.moc" diff --git a/src/plugins/sensors/simulator/simulatorcommon.h b/src/plugins/sensors/simulator/simulatorcommon.h index 0a0e8b09..6eb2517e 100644 --- a/src/plugins/sensors/simulator/simulatorcommon.h +++ b/src/plugins/sensors/simulator/simulatorcommon.h @@ -47,11 +47,7 @@ class QTimer; -namespace Simulator -{ - class Connection; - class ConnectionWorker; -} +class SimulatorAsyncConnection; class SensorsConnection : public QObject { @@ -72,8 +68,7 @@ public slots: void initialSensorsDataSent(); private: - Simulator::Connection *mConnection; - Simulator::ConnectionWorker *mWorker; + SimulatorAsyncConnection *mConnection; bool mInitialDataSent; }; |