summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorZsolt Simon <zsolt.simon@nokia.com>2012-01-18 11:19:15 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-18 04:59:26 +0100
commit9e039ccca259e7d86ca6f6d9603b7c6d89d7a4d6 (patch)
tree49fdf92454b0d60c689b8d043910de18a3b74f18 /src/plugins
parent001461bb5d5efef8431bf673553a353c756d3b58 (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')
-rw-r--r--src/plugins/sensors/simulator/simulatorcommon.cpp89
-rw-r--r--src/plugins/sensors/simulator/simulatorcommon.h9
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;
};